1.2, Av (??), 11:35, 04/09/2005 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Как правило у любого демона есть опция запуска foreground:
#!/bin/sh
echo $$ > /var/run/'basename $0'.pid
while true; do
{путь к демону} -D
done
это гораздо надежнее - мгновенно восстанавливается при любом завершении, запускать скрипт с &. Убить kill 'cat /var/run/...' | |
|
2.3, HFSC (??), 17:23, 04/09/2005 [^] [^^] [^^^] [ответить]
| +/– |
Зачем плодить процессы (особенно через while true :) ), если есть супервизоры (xinetd,daemontools,monit и тд), специально для этого предназначенные. | |
|
3.6, Av (??), 09:22, 05/09/2005 [^] [^^] [^^^] [ответить]
| +/– |
Эти процессы висят - пить есть не просят, время процессорное не тратять - зато живучесть нужных демонов максимальная | |
|
|
1.5, Павел (??), 07:08, 05/09/2005 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
бывают случаи, когда демон отвалится, а pid остаётся.
Предлагаю по крону запускать следующее:
#!/bin/sh
num='ps ax|grep /usr/bin/daemon|wc -l'
if [ $num -lt 2 ]; then
/usr/local/bin/start.daemon
fi
Проверку количества процессов поставить по вкусу.
| |
1.7, Yurik (??), 10:45, 05/09/2005 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> бывают случаи, когда демон отвалится,
> а pid остаётся.
именно это и проверяет kill -0 $PID 2>/dev/null | |
1.8, s2 (ok), 13:10, 05/09/2005 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
так проще!
#!bin/sh
ps ax |grep squid |grep -v grep
if expr $? = 1
then
echo "Squid Starting"
squid
else
echo "Squid Alredy started"
fi | |
|
2.9, Zulu (?), 16:45, 05/09/2005 [^] [^^] [^^^] [ответить]
| +/– |
Ой посмешил...
1) а следить?
2) А нарваться на шелл-скрипт с именем "blah-squid-blah"? | |
|
1.11, Аноним (11), 10:09, 08/09/2005 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
#!/bin/bash
sleep 2
(/sbin/pidof squid || /usr/sbin/squid)>/dev/null 2>&1
$0 &
exit
| |
1.13, Denis (??), 13:33, 07/10/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Как то у Вас тут все просто - раз два и сквид работает, а не учли двух деталей: 1)squid.pid имеет защиту - файл с подписью #!bin/sh запускается без прав root'а и поэтому прочитать pid-файл не может, но есть решение использовать sudo, но тогда pid просто выводится на экран и никак в переменную не хочет записываться, в статье переменная указана, как PIDFILE - я вот не могу сообразить, как бы все таки присвоить переменной значение pid; 2) второе, что Вы не учли, что как раз таки демон может еще работать - сидеть в памяти, но через ps не выводится и pid-файл у него пуст или его вовсе нет и при попытке перезапуска (restart, reload или rotate) ругается, мол squid: error: copy no running - и здесь есть решение - последовательно выполнить: /etc/init.d/squid stop (останов демона, который спрятался где то в памяти), /etc/init.d/squid zap (что то вроде отладки), squid -z (пересоздание кеша), и только потом /etc/init.d/squid start. в некоторых случаях можно еще добавочно делать перед перекешированием killall -9 squid и chown -R squid:squid /var/log/squid на случай все ж наличия pid-файла и отсутствия прав у сквида на запись собственных логов
| |
|
2.14, Denis (??), 13:58, 07/10/2009 [^] [^^] [^^^] [ответить]
| +/– |
забыл сказать, что для получения номера pid процесса в скрипте с #!bin/sh используется строка: sudo sh -c 'cat /var/run/squid/squid.pid' или sh -c 'cat /var/run/squid/squid.pid'
| |
|
1.15, cat (??), 08:07, 28/10/2009 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
А у меня вылезла такая ошибка cannot open /var/run/shutdown.pid. И не могу найти как поправить
| |
|