Ich führe den Sleep-Befehl im Terminal über den Bildschirm und im getrennten Modus aus.
Sobald der Bildschirm sofort zurückkehrt, führe ich ps
aus Befehl, um zu überprüfen, ob der Ruhezustand ausgeführt wird.
$ screen -d -m 'sleep 2m'
[[email protected] ~]$ ps
PID TTY TIME CMD
22795 pts/0 00:00:00 bash
22869 pts/0 00:00:00 ps
Aber der Befehl zeigte keinen Schlaf. Was mache ich hier falsch?
Akzeptierte Antwort:
Das hat mich anfangs auch verunsichert. Ich lese dann erneut den lokalen screen
Manpage für die ZUSAMMENFASSUNG – die Online-Manpage enthält keine Zusammenfassung) – und bemerkte, dass dort stand:
screen [ -options ] [ cmd [ args ] ]
… was mich glauben ließ, dass es den cmd
sehen wollte und args
als unabhängige Argumente.
Da Sie dieses erste Argument als Wert in Anführungszeichen angegeben haben – „sleep 2m
‘ – es hat versucht, einen Befehl namens (genau) ‘sleep 2m
auszuführen ‘, im Gegensatz zu dem, was Sie wirklich tun wollte, was sleep
war mit einem eigenen Argument von 2m
. Der screen
Der Befehl wurde erfolgreich beendet (in meinen Tests), aber nicht Ihren Befehl erfolgreich ausführen.
Verwenden Sie stattdessen:
screen -d -m sleep 2m
Statt ps
, das nur Prozesse anzeigt, die mit dem aktuellen Terminal verbunden sind (wobei SCREEN und verwandte Prozesse nicht sind ), verwenden Sie:
ps x
was es zeigen wird:
$ ps x
PID TTY STAT TIME COMMAND
# ...
7514 pts/1 Ss 0:00 -bash
7761 ? Ss 0:00 SCREEN -d -m sleep 2m
7762 pts/2 Ss+ 0:00 sleep 2m
7880 pts/1 R+ 0:00 ps x
# ...