Ich greife auf einen Server mit CentOS (Linux Distribution) mit einer SSH-Verbindung zu. Da ich nicht immer angemeldet bleiben kann, verwende ich "nohup [Befehl] &", um meine Programme auszuführen.
Ich konnte nicht finden, wie ich eine Liste aller Programme bekomme, die ich mit nohup gestartet habe. "jobs" funktioniert erst, bevor ich mich abmelde. Wenn ich mich danach erneut anmelde, zeigt mir der Befehl jobs nichts an, aber ich kann in meinen Protokolldateien sehen, dass meine Programme noch ausgeführt werden.
Gibt es eine Möglichkeit, eine Liste aller Programme zu erhalten, die ich mit "nohup" gestartet habe?
Antworten:
Als ich anfing mit
$ nohup storm dev-zookeper
,Methode 1: Verwenden von
jobs
,prayagupd@prayagupd:/home/vmfest# jobs -l [1]+ 11129 Running nohup ~/bin/storm/bin/storm dev-zookeeper &
METHODE2: Verwenden des
ps
Befehls.$ ps xw PID TTY STAT TIME COMMAND 1031 tty1 Ss+ 0:00 /sbin/getty -8 38400 tty1 10582 ? S 0:01 [kworker/0:0] 10826 ? Sl 0:18 java -server -Dstorm.options= -Dstorm.home=/root/bin/storm -Djava.library.path=/usr/local/lib:/opt/local/lib:/usr/lib -Dsto 10853 ? Ss 0:00 sshd: vmfest [priv]
TTY-Spalte mit
?
=>nohup
laufenden Programmen.Beschreibung
Referenz
$ man ps
# dann suchen/PROCESS STATE CODES
quelle
nohup
. Es werden die Prozesse aufgelistet, die nicht an ein TTY angehängt sind. Dies ist eine völlig andere Sache: Prozesse, mit denen begonnen wurde,nohup
bleiben an das übergeordnete TTY gebunden, bis es geschlossen wird. Prozesse, die nicht an ein TTY gebunden sind, wurden nicht unbedingt gestartetnohup
. Das heißt, Verfahren 2 Listen, unter anderem Prozesse, einige der Programme laufen mitnohup
.Stattdessen
nohup
sollten Sie verwendenscreen
. Es wird das gleiche Ergebnis erzielt - Ihre Befehle werden "getrennt" ausgeführt. Sie können jedoch Bildschirmsitzungen fortsetzen und zu ihrem "versteckten" Terminal zurückkehren und die jüngsten Fortschritte in diesem Terminal anzeigen.screen
hat viele Möglichkeiten. Am häufigsten benutze ich diese:So starten Sie die erste Bildschirmsitzung oder übernehmen die letzte getrennte Sitzung:
So trennen Sie sich von der aktuellen Sitzung: Ctrl+ACtrl+D
Sie können auch mehrere Bildschirme starten - lesen Sie die Dokumente.
quelle
Wenn Sie eine Standardausgabe haben, die zu "nohup.out" umgeleitet wird, sehen Sie einfach, wer diese Datei verwendet
quelle
man lsof
: "Im Allgemeinen erben Threads und Tasks die Dateien des Aufrufers, können jedoch einige schließen und andere öffnen, sodass lsof immer alle geöffneten Dateien von Threads und Tasks meldet." Ich konnte keine Informationen über nohup in seinem Mann finden, aber es scheint, dass es zwei Threads verwendet, nicht einen.Sie können nicht genau eine Liste der Befehle erstellen, mit
nohup
denen begonnen wurde, aber Sie können sie zusammen mit Ihren anderen Prozessen anzeigen, indem Sie den Befehl verwendenps x
. Befehle, mit denen begonnen wurdenohup
, haben ein Fragezeichen in der Spalte TTY.quelle
Sie können auch einfach den Befehl top verwenden und Ihre Benutzer-ID zeigt die ausgeführten Jobs und deren Zeiten an.
$ top
(Dies zeigt alle laufenden Jobs an.)
$ top -U [user ID]
(Dies zeigt Jobs an, die für die Benutzer-ID spezifisch sind.)
quelle