в ответ на user980473 Я бы, вероятно, также использовал awk, но вместо того, чтобы просто вернуть PID, я бы вызвал свою команду и передал ее bash.Хотя я бы удалил grep и просто использовал awk и переместил условный оператор в фигурные скобки.
ps axo pid,comm,pcpu| awk '/ffmpeg/ {if ($3 <= 15.0 && $3 >= 10.0) print "kill -9 "$1}' | bash
заметил, что мое условное выражение немного более изящно.поскольку user980473 также будет печатать PID больше 10.0.Кажется, рабочие процессы ffmpeg составляют около 20%?Вы не хотели бы убивать их.мое выглядит на уровне 10-15%, но это может быть легко уточнено больше.Вы заметили, что awk
будет печатать kill -9 $ 1 на стандартный вывод, но с помощью канала для bash эти вызовы будут «горячими».
Я незнаком с upstart, но вы можете больше команд.Возможно, вам нужно вызвать локальный скрипт на python, после чего команда будет выглядеть практически так же, но после $ 1 у вас будет "; ./rebootScript.py"
или
ps axo pid,comm,pcpu| awk '/ffmpeg/ {if ($3 <= 15.0 && $3 >= 10.0) print "kill -9 "$"; ./rebootScript.py"}'
так что, чем спрашивает, как бы вы это сделали?Сидеть за CLI и печатать это каждые 5 минут - это нереально.это где я бы создал работу cron.
сохранить этот файл как скрипт bash
#!/bin/bash
ps axo pid,comm,pcpu| awk '/ffmpeg/ {if ($3 <= 15.0 && $3 >= 10.0) print "kill -9 "$1}' | bash
ДАЛЕЕ, установить правильные разрешения.sudo chmod +x ./ffmpegCheck.sh
и переместите скрипт туда, где вы хотели бы его сохранить.Я поместил бы мой в mv ffmpegCheck.sh /usr/local/bin/ffmpegcheck
, это позволило бы мне вызвать его, просто вызвав ffmpegcheck
crontab -l
или sudo crontab -l
для root, чтобы отобразить текущий файл cron ..
это должно выглядеть примерно так:
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
, вы захотите добавить запись в список.Я бы набрал sudo crontab -e
, но есть и другие способы.и добавьте */3 * * * * /usr/local/bin/ffmpegcheck # ffmpeg check
, при этом скрипт будет запускаться каждые 3 минуты.Это можно настроить несколько.Удачи.