J'exécute la commande sleep dans le terminal en utilisant screen et en mode détaché.
Une fois que l'écran revient immédiatement, j'exécute ps
commande pour vérifier que le sommeil est en cours d'exécution.
$ 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
Mais la commande n'a pas montré le sommeil. Qu'est-ce que je fais de mal ici ?
Réponse acceptée :
C'était également déroutant pour moi au départ. Je relis ensuite l'screen
local page de manuel pour le SYNOPSIS — la page de manuel en ligne ne donne pas de synopsis) — et j'ai remarqué qu'il disait :
screen [ -options ] [ cmd [ args ] ]
… ce qui m'a amené à croire qu'il voulait voir le cmd
et args
comme arguments indépendants.
Puisque vous avez donné ce premier argument comme valeur entre guillemets - 'sleep 2m
‘ — il a essayé d'exécuter une commande nommée (exactement) ‘sleep 2m
', contrairement à ce que vous réellement voulait, qui était sleep
avec son propre argument de 2m
. L'screen
la commande s'est terminée avec succès (lors de mes tests), mais pas exécuter avec succès votre commande.
Utilisez plutôt :
screen -d -m sleep 2m
Au lieu de ps
, qui n'affichera que les processus associés au terminal actuel (dont l'ÉCRAN et les processus associés ne sont pas ), utilisez :
ps x
qui le montrera :
$ 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
# ...