Я унаследовал сценарий, который пытается определить, работают ли демоны LSF, выполнив ps
а затем поиски всякой ерунды. Я думаю, что это подвержено ошибкам, и я ищу лучший способ. Лучшее, что я нашел до сих пор, - это команда LSF lsid
, но это указывает только на то, что LSF установлен, и не говорит о том, что все работает. Есть ли у кого-нибудь идея получше, если не считать работы? Это должно работать с Linux и Solaris.
Единственный безопасный способ в Linux / Unix узнать, запущен ли определенный процесс или нет, - это использовать подход pidfile.
Это означает:
Когда вы запускаете процесс, вы сохраняете PID только что запущенного процесса в pidfile. Обычно этот файл сохраняется там, где у процесса есть файлы журнала, и хорошее имя в вашем случае будет lsf.pid
(похоже, это соглашение для таких файлов).
Теперь вам нужен сценарий для запуска / остановки / отображения статуса вашего процесса, который учитывает pidfile. Их много в Интернете.
Основное преимущество этого подхода заключается в том, что вы можете ps -p <pidno>
. Это ЕДИНСТВЕННЫЙ безопасный способ определить, запущен процесс или нет. Так же ps -p
команда переносима между версиями Linux / Unix, в отличие от многих других вещей, которые вы можете найти.
В общем: Да, вы можете использовать метод grep'ing для различных форм вывода из ps
command, но это никогда не будет безопасным методом, и его сложно сделать по-настоящему переносимым. Укусите пулю и используйте подход pidfile.
Ваш демон действительно должен работать под SMF.
Это решает все ваши проблемы (вам не нужен общий подход, описанный выше), и в то же время дает вам:
sudo
на стероидах).