Запуск процесса в фоновом режиме
Амперсанд & после команды запустит ее в фоновом режиме.
cp -pR /home/ /mnt/bacup/ &
С работающей командой тоже самое можно сделать так: нажать CTRL+Z
:~$ cp -pR /home/ /mnt/backup/ ^Z [1]+ Stopped cp -pR /home/ /mnt/backup/ :~$ ps ax | grep cp | grep -v grep 4833 2.9 0.0 14184 872 pts/0 T 11:40 0:01 cp -pR /home/ /mnt/backup/
Как видим процесс находится в STAT T
Набираем bg для того, чтобы запустить команду в фоне
:~$ bg [1]+ cp -pR /home/ /mnt/backup/ & :~$ ps ax | grep cp | grep -v grep 4833 pts/0 R 0:01 cp -pR /home/ /mnt/backup/ :~$
Процесс перешел в STAT R и выполняется в фоне, фоновый процесс называется job (задание)
Посмотреть список заданий можно командой jobs
:~$ jobs [1] Stopped cp -pR /home/ /mnt/sdb/ [2] Stopped vim 1.txt [3]- Stopped vim 2.txt [4]+ Stopped vim 3.txt
- + — текущая задача.
- — — последняя задача
- К остальным задачам можно обратиться по их идентификационному номеру.
Запустить задачу в foreground
- Команда
fg без параметров или fg + запустит текущую задачу (со знаком +) в foreground
fg +
fg -
fg 2 fg %2
%+ %- %2
Команда disown используется для отделения задачи от таблицы задач текущего shell. При отделении задачи от текущего shell, ее родителем становится INIT. После это можно завершить текущий shell, команда продолжит выполняться. На самом деле, если отправить команду в background, а потом завершить сессию, произойдет тоже самое, т.е. родителем станет INIT
:~$ disown %2 :~$ ps -fe | grep cp | grep -v grep s0x90 5346 1 6 12:56 ? 00:15:24 cp -pR /home/ /mnt/backup/
:~$ yes > /dev/null & [1] 6576 :~$ ps -f | grep yes | grep -v grep s0x90 6576 6144 96 17:26 pts/0 00:00:10 yes :~$ logout :~$ ps -fe | grep yes | grep -v grep s0x90 6576 1 91 17:26 ? 00:01:15 yes
Не забывайте про чудесную утилиту-мультиплексор screen