У меня есть cronjob, который настроен на постоянное выполнение. Это файл php, который передает данные из твиттера. Однако твиттер время от времени отключается, или мы теряем соединение, поэтому я каждую минуту проверяю cron, чтобы попытаться запустить файл. Сценарий php проверяет файл блокировки, чтобы убедиться, что несколько копий не запускаются. Дело в том, что этот скрипт будет работать часами подряд, и я хочу иметь возможность его убить. Однако я не могу найти его с помощью таких команд, как
ps ux
Cronjob был запущен моим пользователем, и я посмотрел, чтобы увидеть его под root. Кажется, я вообще не могу найти этот процесс.
Я использую
/usr/bin/php /var/www/twitter/stream.php
для выполнения в моем файле cron, и я знаю, что он работает, потому что каждую минуту он записывает файл в каталог. Я могу остановить cron, но процесс продолжается, мне просто нужно его убить. Не уверен, принадлежит ли это сюда или в Stack Overflow.
Ты делаешь это неправильно. (По крайней мере, по моему скромному мнению :-)
Вы можете делать то, что хотите, как предлагали Гикозавр или Джеймс Йель, но я думаю, вам действительно нужны PHP pcntl_alarm () функция (и ее относительная pcntl_signal
), что позволит вашему PHP-скрипту использовать преимущества SIGALRM
объекта и убить себя, когда дела пойдут не так.
То, что вы делаете с будильником, - это ваш звонок (он может быть таким простым, как «Выйти, если я бегаю уже час», либо сложным, как «Проверить, получили ли мы данные из твиттера. Если не повторить- инициализировать соединение, и если мы по-прежнему не получим выхода данных и позволим скрипту снова запуститься позже »- все зависит от того, насколько сложен ваш скрипт).
Больше вопросов по SIGALRM
и обработка сигналов, вероятно, должна перейти в StackOverflow - они (надеюсь) знакомы с ним и могут дать вам больше рекомендаций с точки зрения программирования :-)
Чтобы показать демонов в ps
вам нужно включить -e
вариант (System V / POSIX) или a
(BSDish). Пытаться ps aux
или ps -ef
.
Обычно процессы записывают PID в файл блокировки, таким образом вы можете узнать, запущен ли процесс и его идентификатор в одном месте.
Я бы посоветовал вам изменить свой скрипт для этого, тогда вы можете просто posix_kill или аналогичный по мере необходимости.