Можно ли передать переменную PID в качестве параметра в crontab?

308
Alex Lorsung

Можно ли передать переменную PID в качестве параметра в crontab:

0 * * * * JETTYPID=$(ps aux | grep "jetty92.state" | grep -v grep | awk '')

ИЛИ ЖЕ

Могу ли я просто определить переменную в верхней части crontab следующим образом:

JETTYPID=$(ps aux | grep "jetty92.state" | grep -v grep | awk '')

Чтобы получить PID, а затем запустить cron ниже и использовать значение этой переменной в команде

0 * * * * ~/jetty_trace.sh $JETTYPID

Цель состоит в том, чтобы сохранить текущий PID для jetty в эту переменную, а затем использовать эту переменную в качестве аргумента для скрипта, который выполняется (в двух словах)

jstack -F <PID> >> stacktrack.log

Но с кучей форматирования даты / времени. Это возможно?

0
Вы используете очень длинную альтернативу `$ (pidof jetty92.state)`. Если вы устанавливаете `JETTYPID` где-либо, кроме строки запуска, вы не можете быть уверены, что он не был обновлен до запуска` jstack`. AFH 6 лет назад 0
Приятно знать, что есть более простой способ. Спасибо :) Alex Lorsung 6 лет назад 0
Почему бы не включить этот код в сам jstack, чтобы ваша запись в crontab просто превратилась в jstack stacktrack.log? Или, если вы не можете изменить `jstack`, то вызовите внешний интерфейс в` crontab`, например, `pjstack >> stacktrack.log`, где` pjstack` проверяет, что `JETTYPID = $ (pidof jetty92.state)` содержит единственный действительный PID, затем запускается `exec jstack -F $ JETTYPID` (без перенаправления, поскольку это уже сделано в` crontab`). AFH 6 лет назад 0

0 ответов на вопрос