Intereting Posts
Общие библиотеки и различные системы Linux Какая лучшая среда рабочего стола для использования 2 разных мониторов с сильно отличающимся DPI? Как я могу установить переменную среды постоянно через сценарий оболочки? Экран GNU не отображает символы юникода правильно Не удается отправить местное почтовое сообщение между пользователями в Linux Несколько вопросов о системных вызовах и модулях ядра (параллельные службы ядра) Bash – передача массива удаленным хостам через ssh Как я могу запускать команду периодически и неограниченно, пока она не отключится? Как работает `: w! Sudo tee%` E: Пакет 'gstreamer0.10-plugins-bad' не имеет кандидата на установку Как печатать определенные столбцы по имени? Клиент OpenVPN получает новый ip для каждой загрузки, как получить тот же адрес в x время ожидания? Возможно ли записывать звук непосредственно на оптический дисковод компьютера? Сортировка файлов изображений на основе того, является ли контент изображением или графикой: обновление старого решения? Может ли MySQL быть вредоносным без PHP (или другого языка)?

Как контролировать или убивать процесс, который был запущен cron?

У меня есть некоторые боты, которые запускаются системным планировщиком с заданным интервалом времени. Но иногда из-за некоторой логической ошибки я должен остановить эти боты вручную. Как я могу найти эти процессы, запускаемые планировщиком, и убить их?

Вы можете убивать процессы по имени. Например, в Linux, * BSD и Solaris, pkill myprogram убивает все процессы, чье имя содержит myprogram (используйте для этого точное использование pkill '^myprogram$' ). Если вы запустите его как пользователь без полномочий root, будут уничтожены только процессы этого пользователя, а также есть дополнительные опции для контроля соответствия (подробности см. В руководстве по вашей системе).

Если вы хотите специально настроить процессы, запущенные планировщиком, и вы вручную pstree процессы, вы можете запустить ps f (только для Linux) или pstree (только для Linux) или ptree для отображения процессов в дереве и посмотреть, какие процессы были начаты cron.

Если вы хотите автоматически убивать эти процессы в домашнем методе, заставьте их хранить идентификатор процесса в файле. Этот вид файла называется pidfile, когда он используется только для того, чтобы иметь только один экземпляр процесса (который может или не может быть тем, что вы хотите). Если вы хотите несколько экземпляров, храните PID в отдельных файлах в общем каталоге; вот фрагмент оболочки, который делает это:

 pid_dir=/var/run/myprogram # must have been created eg at boot time myprogram & pid_file=$pid_dir/$!.pid touch "$pid_file" wait rm "$pid_file" 

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

  • « Monit может запустить процесс, если он не запускается, перезапустите процесс, если он не отвечает и останавливает процесс, если он использует слишком много ресурсов».
  • Мне нужна помощь с помощью cronjob, чтобы следить за безудержными процессами и убивать их
  • Как ограничить использование ресурсов для экономии CPU + RAM для определенного процесса?
  • Есть ли способ ограничить объем памяти, который может использовать конкретный процесс в Unix?

Я предлагаю вставить их PID ($$) в файл после их появления. Затем вы можете использовать это, чтобы убить процесс.

Базовая ветка try / catch в большинстве языков программирования для поиска бесконечных циклов или других случаев ошибок должна работать. Возможно, неактивный / невосприимчивый таймер в процессах для просмотра зависаний.