Этот сценарий инициализации должен запустить службу, используя nohup с параметром «start». Все остальные параметры должны передаваться как есть. (Перезапуск предусмотрен для удобства.)
#!/bin/sh
# Foo Startup Script
LOGFILE="/var/log/foo/foo.log"
WORKDIR="/usr/local/foo"
nohup() {
nohup $WORKDIR/bin/foo $@ >> $LOGFILE 2>&1 &
}
other() {
$WORKDIR/bin/foo $@
}
case "$1" in
start)
nohup $@
;;
restart)
other stop
nohup start
;;
*)
other $@
exit
esac
При «старте» сценарий запускается в бесконечный цикл с nohup, разветвляющим все больше и больше процессов (он же форк-бомба), но почему? (Выходные данные не записываются в файл журнала.)
no_hup
или как-то иначе, чемnohup
- person Oerd   schedule 12.02.2013/bin/nohup
. Кроме того, все параметры$@
должны быть заключены в кавычки"$@"
, иначе они обрабатываются так же, как$*
. - person Barmar   schedule 12.02.2013