убить процесс по имени, если он работает дольше 24 часов

В настоящее время я пытаюсь убить любую программу, которая проработала более 48 часов с именем «cool-program»

. Я понимаю, что если я запустил

ps -eo pid,cmd,comm,etime | grep -i cool-program | grep -v grep

, дает мне список программ, теперь я не уверен, как дальше фильтровать это только на программы, которые были запущены в течение дня

, учитывая комментарии, чтобы распечатать список из pid классной программы, которую я использую, но когда я пытаюсь передать это на kill, он не убивает программы

ps -eo bsdstart,pid,comm | grep -i ffmpeg | grep -v '^[ 0-9]' | awk '{ print $3 }'
2
задан 24 October 2017 в 01:31

3 ответа

На странице man для ps указано, используете ли вы bsdstart, показывая время запуска команды:

   bsdstart    START     time the command started.  If the process was
                         started less than 24 hours ago, the output format
                         is " HH:MM", else it is " Mmm:SS" (where Mmm is
                         the three letters of the month).  See also
                         lstart, start, start_time, and stime.

Затем вы можете использовать комбинированную команду для вытягивания даты, pid, а команда запускает и использует grep, чтобы исключить -v строки, начинающиеся с чисел или пробелов, тогда такие цифры:

ps -eo bsdstart,pid,cmd | grep -i cool-porgram | grep -v '^[ 0-9]'

Чтобы убить их, команда будет:

[ f3]

Надеюсь, это поможет!

2
ответ дан 22 May 2018 в 17:13
  • 1
    отредактировал вопрос, это печатает pid, но когда он отправляется в kill, не убивает список программ – nadermx 24 October 2017 в 01:32
  • 2
    @nadermx Вам может потребоваться выполнить команду sudo. – Terrance 24 October 2017 в 01:35

На странице man для ps указано, используете ли вы bsdstart, показывая время запуска команды:

bsdstart START time the command started. If the process was started less than 24 hours ago, the output format is " HH:MM", else it is " Mmm:SS" (where Mmm is the three letters of the month). See also lstart, start, start_time, and stime.

Затем вы можете использовать комбинированную команду для вытягивания даты, pid, а команда запускает и использует grep, чтобы исключить -v строки, начинающиеся с чисел или пробелов, тогда такие цифры:

ps -eo bsdstart,pid,cmd | grep -i cool-porgram | grep -v '^[ 0-9]'

Чтобы убить их, команда будет:

sudo kill $(ps -eo bsdstart,pid,cmd | grep -i cool-porgram | grep -v '^[ 0-9]' | awk '{print $3}')

Надеюсь, это поможет!

2
ответ дан 18 July 2018 в 04:42

На странице man для ps указано, используете ли вы bsdstart, показывая время запуска команды:

bsdstart START time the command started. If the process was started less than 24 hours ago, the output format is " HH:MM", else it is " Mmm:SS" (where Mmm is the three letters of the month). See also lstart, start, start_time, and stime.

Затем вы можете использовать комбинированную команду для вытягивания даты, pid, а команда запускает и использует grep, чтобы исключить -v строки, начинающиеся с чисел или пробелов, тогда такие цифры:

ps -eo bsdstart,pid,cmd | grep -i cool-porgram | grep -v '^[ 0-9]'

Чтобы убить их, команда будет:

sudo kill $(ps -eo bsdstart,pid,cmd | grep -i cool-porgram | grep -v '^[ 0-9]' | awk '{print $3}')

Надеюсь, это поможет!

2
ответ дан 24 July 2018 в 18:09

Другие вопросы по тегам:

Похожие вопросы: