2016-12-21 3 views
2

Я пытаюсь использовать daemon на Ubuntu, но я не уверен, как его использовать даже после прочтения страницы руководства.как daemonize сценарий

У меня есть следующие тестирования сценария foo.sh

#!/bin/bash 
while true; do 
    echo 'hi' >> ~/hihihi 
    sleep 10 
done 

Тогда я попробовал эту команду, но ничего не произошло:

daemon --name="foo" -b ~/daemon.out -l ~/daemon.err -v -- foo.sh 

Файл hihihi не был обновлен, и я нашел это в errlog:

20161221 12:12:36 foo: client (pid 176193) exited with 1 status 

Как я мог использовать daemon команда правильно?

+0

Взгляните на поЬир. nohup script .sh & Очень эффективный и простой – NinjaGaiden

+0

У меня нет доступа к системе Ubuntu для его проверки, но вы можете попробовать запустить оболочку для интерпретации 'foo.sh':' daemon .../bin/sh ~/foo .sh' –

ответ

1

AFAIK, большинство daemon или deamonize программы изменить текущую директорию поболеть как часть процесса daemonization. Это означает, что вы должны дать полный путь к команде:

daemon --name="foo" -b ~/daemon.out -l ~/daemon.err -v -- /path/to/foo.sh 

Если он все еще не работает, вы можете попробовать указать оболочку:

daemon --name="foo" -b ~/daemon.out -l ~/daemon.err -v -- /bin/bash -c /path/to/foo.sh 
0

Нет необходимости использовать команду daemon в bash. Вы можете выполнить демонтаж своего сценария вручную. Например:

#!/bin/bash 

# At first you have to redirect stdout and stderr to /dev/null 
exec >/dev/null 
exec 2>/dev/null 

# Fork and go to background 
(
while true; do 
    echo 'hi' >> ~/hihihi 
    sleep 10 
done 
)& 
# Parent process finished but child still working 
Смежные вопросы