Так,
- я запустить программу на языке Perl, как Deamon, perl check.pl &
Это, некак демона, но простой фоновый процесс. У каждого процесса есть родительский процесс. Фоновый процесс (как и выше) имеет в качестве родителя «bash» то, что отправляет его в bakcground, поэтому bash может wait
для его завершения. Демон имеет родительский процесс, который называется init
, с PID == 1
, и поэтому он просматривается init
.
- теперь я могу проверить перл программа работает состояние,
Да, как вы можете проверить состояние любой другой программы. Один комментарий, делая такой grep
на названия программ coukd имеют некоторые странные побочные эффекты, такие как:
$ perl log.pl &
Теперь оглавлению выход ps
приведет к двум, «войти» процессы, которые один из них будет syslogd
процесс. Конечно, youre в вашем примере ограничил это еще одним grep
до perl
, но ценой двух процессов.
Вы можете ограничить два процесса в один, используя некоторые умнее Grep аргумент, как
ps -ef | grep 'perl check'
выше будет искать с одним процессом, строку «Проверка PERL». К сожалению, это будет найти сам grep
процесс, как
$ perl check.pl &
$ ps -ef | grep 'perl check
501 45063 42171 0 11:26 ttys001 0:00.00 grep perl check
501 45002 44504 0 11:21 ttys002 0:00.02 perl check.pl
Один хороший обходного использует жала как
grep '[p]erl check'
как
$ perl check.pl &
$ ps -ef | grep '[p]erl check'
501 45002 44504 0 11:21 ttys002 0:00.02 perl check.pl
- , но как изменить оболочку сценарий для запуска программы perl, когда программа perl не запущена?
Если в Outout оглавлению из ps
возвращает ничего, вы должны начать сценарий. Вы должны проверить содержимое своего a
(вам действительно следует назвать его как a
, например perlPID
или тому подобное). Если длина аргумента -z
равна нулю, то она возвращает «истина», так:
[[ -z "$a" ]] && perl check.pl &
вы могли бы использовать cronjob проверять каждые п минут, если ваша программа работает, и если не перезапустить его. , но для этого вы должны сделать его настоящим системным демоном. Daemon :: Control - это модуль perl, который помогает в создании такого демона. вероятно, есть альтернативы, но это тот, который я использую в течение некоторого времени. Чего вы хотите достичь? – davewood
У вас есть привилегии root/admin? – AnFi