93 votes

Comment obtenir une liste des programmes en cours d'exécution avec nohup

J'accède à un serveur fonctionnant sous CentOS (distribution linux) avec une connexion SSH. Comme je ne peux pas toujours rester connecté, j'utilise "nohup [command] &" pour exécuter mes programmes.

Je n'ai pas trouvé comment obtenir une liste de tous les programmes que j'ai commencé à utiliser nohup. "jobs" ne fonctionne que lorsque je me déconnecte. Après cela, si je me reconnecte, la commande jobs ne me montre rien, mais je peux voir dans mes fichiers journaux que mes programmes sont toujours en cours d'exécution.

Y a-t-il un moyen d'obtenir une liste de tous les programmes que j'ai lancés en utilisant "nohup" ?

134voto

Prayag Upd Points 3347

Quand j'ai commencé avec $ nohup storm dev-zookeper ,

MÉTHODE1 : en utilisant jobs ,

prayagupd@prayagupd:/home/vmfest# jobs -l
[1]+ 11129 Running                 nohup ~/bin/storm/bin/storm dev-zookeeper &

NOTE : jobs affiche les processus de nohup uniquement sur la même session de terminal dans laquelle nohup a commencé. Si vous fermez la session du terminal ou si vous essayez une nouvelle session, il n'y aura pas d'affichage de l'écran d'accueil. nohup processus. Préférez la MÉTHODE2

MÉTHODE2 : en utilisant ps commandement.

$ 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] 

Colonne ATS avec ? => nohup les programmes en cours.

Description

  • colonne TTY = le terminal associé au processus
  • colonne STAT = état d'un processus
    • S = sommeil interruptible (attente de la fin d'un événement)
    • l = est multithread (en utilisant CLONE_THREAD, comme le font les pthreads de NPTL)

Référence

$ man ps # puis chercher /PROCESS STATE CODES

35voto

mvp Points 29360

Au lieu de nohup vous devez utiliser screen . Cela aboutit au même résultat : vos commandes s'exécutent de manière "détachée". Cependant, vous pouvez reprendre les sessions d'écran et revenir dans leur terminal "caché" et voir les progrès récents à l'intérieur de ce terminal.

screen a beaucoup d'options. Le plus souvent, j'utilise celles-ci :

Pour démarrer la première session d'écran ou pour prendre le relais de la plus récente session détachée :

screen -Rd 

Pour se détacher de la session en cours : Ctrl+ACtrl+D

Vous pouvez également lancer plusieurs écrans - lisez la documentation.

22voto

Victor Melnikov Points 245

Si vous avez une sortie standard, redirigez-la vers "nohup.out" pour voir qui utilise ce fichier.

lsof | grep nohup.out

7voto

Old Pro Points 7826

Vous ne pouvez pas exactement obtenir une liste de commandes commencées avec nohup mais vous pouvez les voir avec vos autres processus en utilisant la commande ps x . Les commandes commençant par nohup aura un point d'interrogation dans la colonne ATS.

7voto

Jcrow06 Points 751

Vous pouvez également utiliser la commande top et votre ID utilisateur indiquera les travaux en cours et leur durée.

$ top

(ceci montrera tous les travaux en cours)

$ top -U [user ID]

(Ceci montrera les emplois qui sont spécifiques à l'ID utilisateur)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X