как использовать сценарий оболочки для наблюдения программы?

Я искал вокруг, но не вполне нашел то, что я ищу. Вкратце я создал сценарий удара для выполнения в бесконечном цикле с условием продолжения, спя и проверяя, работает ли процесс. Единственная проблема состоит в том, даже если процесс работает, это говорит, что это не и открывает другой экземпляр.

Я знаю, что должен проверить имя процесса и не идентификатор процесса, так как другой процесс мог вскочить и взять идентификатор. Однако все программы жемчуга называют Perl5.10.0 в моей системе, и я предназначаю при наличии нескольких экземпляров той же открытой программы жемчуга.

Следующее, "если" всегда возвращает false, что я делаю неправильно здесь???

while true; do

 if [ ps -p $pid ]; then
  echo "Program running fine"
  sleep 10

 else
  echo "Program being restarted\n"
  perl program_name.pl &
  sleep 5
  read -r pid < "${filename}_pid.txt"
 fi

done
5
задан user387049 24 July 2010 в 22:24
поделиться