Prozesse töten, wenn ich ein Skript ausführen, die mit dem &
mehrere Prozesse beginnt wieGibt es ein Shell-Befehl, der alle Hintergrund Schwanz
tail -f log file1 &
tail -f log file2 &
Wie kann ich sie schließen alle auf einmal nach unten?
Prozesse töten, wenn ich ein Skript ausführen, die mit dem &
mehrere Prozesse beginnt wieGibt es ein Shell-Befehl, der alle Hintergrund Schwanz
tail -f log file1 &
tail -f log file2 &
Wie kann ich sie schließen alle auf einmal nach unten?
Sie können auf Hintergrundjobs in Ihrem aktuellen Shell mit den %1
, %2
, ... idioms verweisen.
Meines Wissens gibt es nicht so etwas wie einen Haken alle; Es gibt keine %*
oder ein Äquivalent.
Aber Sie Verknüpfung könnte mit
kill %1 %2 %3 %4 %5 %6 %7 %8
, die die ersten acht Hintergrundprozesse noch läuft in der aktuellen Shell töten würde. Das kann oder darf nicht ein tail
sein.
Seien Sie vorsichtig, den du ;-)
töten Wenn Sie diese volle Kontrolle über die Hintergrundprozesse haben könnte eine sichere Wette für Sie sein. Da Sie erwähnen, dass Sie dies von einem Shell-Skript tun wollen, und wenn die tail
s die einzigen Hintergrundprozesse sind, dann ist dies einfach. Stellen Sie nur sicher, dass Ihr Shell-Skript eine Subshell startet, so dass es niemals die Hintergrundprozesse einer interaktiven Shell beeinflusst. Zum Beispiel könnten Sie Ihr Skript mit
#!/usr/bin/bash
starten und Ausführungsberechtigungsbits für das Skript festlegen und das Skript immer namentlich aufrufen. Mit anderen Worten, sollten Sie nicht source script_file
dass Skript.
Auf der anderen Seite jim's answer zu speichern die PIDs (Prozess-IDs) von jedem Prozess, den Sie starten, ist eine viel sicherere Möglichkeit, andere Prozesse zu töten.
killall tail
sollte es tun, aber es schließt auch alle anderen Prozesse Schwanz Sie laufen haben.
"erinnern", das Kind pids.
tail -f logfile1 &
pid1=$!
tail -f logfile2 &
pid2=$!
kill $pid1 $pid2
Offensichtlich würden Sie nicht sofort töten wie das in Ihrem realen Skript ausgeben. Sie würden wahrscheinlich lieber auf die Child-Prozesse warten. Aber das tut, was Sie gefragt haben
genial Dank :) – doapydave
ist dies wahrscheinlich die sicherere einfache opt .. Nochmals vielen Dank – doapydave