Kann eine PID-Variable als Parameter in eine Crontab übergeben werden?

379
Alex Lorsung

Kann eine PID-Variable als Parameter in eine Crontab übergeben werden:

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

ODER

Könnte ich einfach die Variable oben in der Crontab als solche definieren:

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

Um eine PID zu erfassen und anschließend einen cron auszuführen, verwenden Sie diesen Variablenwert im Befehl

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

Das Ziel ist es, die aktuelle PID für Jetty in dieser Variablen zu speichern und diese Variable dann als Argument für ein Skript zu verwenden, das (kurz gesagt) ausgeführt wird.

jstack -F <PID> >> stacktrack.log

Aber mit einer Reihe von Datum / Uhrzeit-Formatierungen. Ist das möglich?

0
Sie verwenden eine sehr lange Alternative zu `$ (pidof jetty92.state)`. Wenn Sie `JETTYPID` an einer anderen Stelle als in der Laufzeichenfolge festlegen, können Sie nicht sicher sein, dass es nicht aktualisiert wurde, bevor Sie` jstack` ausführen. AFH vor 6 Jahren 0
Gut zu wissen, dass es einen einfacheren Weg gibt. Vielen Dank :) Alex Lorsung vor 6 Jahren 0
Warum integrieren Sie diesen Code nicht in `jstack` selbst, so dass Ihr` crontab`-Eintrag einfach zu jstack >> stacktrack.log wird? Wenn Sie `jstack` nicht ändern können, rufen Sie ein Frontend in` crontab` auf, z. B. `pjstack >> stacktrack.log`, wobei` pjstack` überprüft, dass `JETTYPID = $ (pidof jetty92.state)` gilt eine einzige gültige PID, führt dann `exec jstack -F $ JETTYPID` aus (keine Weiterleitung, da dies bereits in` crontab` erfolgt). AFH vor 6 Jahren 0

0 Antworten auf die Frage