Linux — выполнение команды в фоне

Порой возникает необходимость выполнять команду в фоне и не зависеть от происходящего в сессии. Чтобы выполнить любую задачу в фоне необходимо создать bash скрипт. В примере я запускаю tcpdump и пишу результаты в файл.

Создадим скрипт:

[root@server /]# nano script.sh

Содержимое скрипта:

#!bin/bash
tcpdump -i ens33 dst port 5332 -w dump.cap >& /dev/null &
echo $! > script.pid

В скрипте мы выполняем стандартную команду tcpdump, которая имеет вывод информации в сессию и дополнительно пишет результаты в файл. Нужно заменить на то, что необходимо лично вам. Вывод в сессию мы перенаправляем в dev/null. PID запущенного нами скрипта пишем в файл.

Делаем скрипт исполняемым:

[root@server /]# chmod +x script.sh

Запускаем скрипт:

[root@server /]# ./script.sh

PID читаем из файла:

[root@server /]# cat script.pid
115966

Когда выполнение команды нужно остановить просто убиваем процесс:

[root@server /]# kill 115966

 

1+

Linux — выполнение команды в фоне: 1 комментарий

  1. ZeF

    /dev/null — отправляет в пустое пространство («черная дыра»: все данные, посланные туда, пропадают), а вот & отправит процесс в фон к которому потом можно вернуться. Так же можно будет посмотреть что выполняется в фоне командой jobs (jobs -l — что бы увидеть PID процессов). Иными словами можно в конце команы написать просто &

    0

Добавить комментарий

Ваш e-mail не будет опубликован.