Ich habe ein Programm unter Linux mit &
und gestartet disown
.
Ich möchte sehen, ob es noch läuft und es möglicherweise töten.
Ich habe den Prozess mit folgenden Befehlen gestartet:
(env)bash-4.2$ python manage.py update_rollups &
[1] 29144
(env)bash-4.2$ disown
Ich kann es nicht mehr finden ps aux
und auch nicht aufgrund der PID töten 29144
.
Ich möchte wissen, ob der Prozess noch läuft (unter init
?).
Ich hoffe du kannst helfen!
Antworten:
In Kürze
Mit
&
unddisown
ändern Sie die PID [ 1 ] des Prozesses nicht.Wenn Sie es in der
ps -p <YOURPID>
Ausgabe nicht sehen , wird es nicht mehr ausgeführt.Sie können über überprüfen es mit einer zusätzlichen
echo $?
[ 2 ] nach demps
(oderkill
) Befehl, zu überprüfen , ob das Programm beendet mit einem Exit - Code unterscheidet sich von0
( in der Regel1
).Verstehen Sie Ihre Befehle.
Hintergrund : Wenn Sie den Befehl mit dem Finale starten
&
, senden Sie ihn im Hintergrund.Das bedeutet, dass:
[1]
und Sie können sich darauf beziehen als%1
; (versuchen Sie den Befehljobs
).fg
und in den Vordergrund und in den Hintergrund bringenbg
.Es ist (noch) „Besitz“ von der ( in Verbindung mit der übergeordneten) Schale: Wenn die Schale ein empfängt
SIGHUP
Signal, es wird ein sendenSIGHUP
zu Signal an den Prozess.Disown : Mit dem Befehl
disown
entfernen Sie den Job aus der Jobliste der Shell, aber Sie ändern die PID nicht.Beachten Sie die gleiche PPID (die Shell ist noch vorhanden).
Jetzt töten wir die Muschel.
Es gibt noch eine andere
PPID
, die Sie5339
bei einem erneuten Aufruf vonps
,ps -p 5339
alsinit
Instanz entdecken werden :pstree
: ein schneller Weg.Sie können mit
pstree
schneller sehen.Vor dem
disown
und töte die Bash- Befehle:Nach dem
disown
und töte die Bash :Hinweis: Natürlich sind alle PIDs in Ihrem Fall unterschiedlich ...
quelle
Wenn es nicht in ist
ps auxf
, läuft es nicht. Wenn Siekill 29144
"No such process" ausführen und erhalten, bedeutet dies auch, dass der Prozess nicht ausgeführt wird.quelle
Jeder Prozess hat einen Ordner im
/proc
Dateisystempid
. Wenn der Ordner nicht vorhanden ist, wird der Prozess nicht ausgeführt.Zum Beispiel
Sie können den Prozess anzeigen
commandline
Beispielausgabe:
/usr/sbin/smbd
oder überprüfen Sie den Status der Prozessdatei
Beispielausgabe:
quelle