Почему фоновые процессы иногда останавливаются спонтанно?

Возможно, команда lockfile сделает то, в чем Вы нуждаетесь.

lockfile ~/.config/mylockfile.lock
.....
rm -f important.lock
10
20.11.2011, 20:34
1 ответ

Это обычно происходит, если процесс пытается читать из stdin поток. Когда процесс в фоновом режиме, он получает сигнал TTIN и таким образом замораживается (то же поведение как Стоповый сигнал). Существует также двойной сигнал TTOU, когда фоновый процесс пытается записать в свой терминал.

Обеспечение его к переднему плану возобновляет процесс и позволяет ему читать из Вашего терминала.

Демонстрация:

$ cat t.sh
#! /bin/sh
sleep 1
read dummy
$ ./t.sh &
[1] 3364
$ 
[1]+  Stopped                 ./t.sh
$ ps aux|grep t.sh
me  3364  0.0  0.0  11268  1200 pts/0    T    17:04   0:00 /bin/sh ./t.sh

Один из способов избежать этого состоит в том, чтобы использовать nohup, но это может иметь странные эффекты, если программа не имеет дело с перенаправлением ее входного потока к /dev/null.

12
27.01.2020, 20:02

Теги

Похожие вопросы