Ich würde denken, dass dies eine gängige Redewendung in der Linux-Welt ist, also ist meine Frage, ob es dafür eine eingebaute Funktionalität gibt?

Etwas wie:

Argumente:

$PID  - the process to send signal to
$SIGNAL_NAME   - the signal to send to the process
$WAIT_TIME    - number of seconds to wait for $PID to disappear

Der gesuchte Befehl würde dem Prozess $PID das $SIGNAL_NAME senden und dann synchron auf $WAIT_TIME warten, bis der $PID-Prozess verschwindet. Der Befehl hätte natürlich einen richtigen Exit-Code.

Ich kann ein solches Skript ganz einfach schreiben. Ich würde einfach erwarten, dass es eine allgemeine Anforderung ist? Vielleicht ein Shell-Build-In?

answer

Arghh

Ich hatte auf eine Option für den killBefehl oder etwas gehofft, das diesen Trick für mich erledigen würde.

Die beste Lösung, die ich bisher gefunden habe, ist:

kill -$SIGNAL_NAME $PID; timeout ${WAIT_TIME}s tail -f /dev/null --pid $PID

was gut funktioniert, vorausgesetzt, der tailBefehl unterstützt die --pidOption. Dies ist jedoch ein Paradebeispiel für eines von (vielen) Linux-Befehlskonstrukten, das viel Zeit und Nachforschungen erfordert, um zu verstehen, was es wirklich tut. In 1 Monat werde ich vergessen haben, warum das oben Gesagte funktioniert. :-(

Der killall --waitBefehl scheint einer integrierten Lösung für das Problem ziemlich nahe zu sein, außer dass er PID nicht als Argument akzeptiert.