Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

Остановка процесса не зная PID в Ubuntu

#ubuntu


Подскажите пожалуйста, запускаю с помощью cron несколько процессов в ubuntu server,
делаю так (пример):


30 15 28 * * команда 1
30 16 28 * * команда 2


теперь задача, нужно задать в том же cron завершение процесса 1 к примеру в:


30 17 27 * *


При этом процесс 2 должен работать дальше без остановки, PID процесса неизвестен,
COMMAND у них одинаковый (например ffmpeg), то есть команда:


30 17 28 * * killall ffmpeg


не подходит, так как она завершит оба процесса.
Подскажите как решить эту проблемку, заранее спасибо!
    


Ответы

Ответ 1



Всем спасибо, решил вопрос запуском этих команд от разных юзеров, тогда команда killall ffmpeg убивает процесс только этого юзера, а остальные работают дальше.

Ответ 2



можно отправлять процесс в background оператором &, а его идентификатор, сохранившийся в переменной $!, записывать в файл (с произвольным именем). откуда в нужный момент его можно прочитать и передать аргументом программе kill. пример: минуты1 * * * * команда & echo $! > /tmp/команда.pid минуты2 * * * * kill $(cat /tmp/команда.pid) &>/dev/null в случае, если команда — это последовательный запуск нескольких программ, связанных ;, && или ||, то, для правильной работы оператора &, такую составную команду надо «завернуть» в подоболочку (subshell) с помощью скобок: минуты1 * * * * (составная команда) & echo $! > /tmp/команда.pid

Комментариев нет:

Отправить комментарий