web-dev-qa-db-fra.com

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

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

Je ne trouvais pas 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.

Est-il possible d'obtenir une liste de tous les programmes que j'ai commencé à utiliser "Nohup"?

53
Nils De Winter

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

METHOD1: en utilisant jobs,

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

METHOD2:en utilisant la commande ps.

$ 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 programmes en cours d'exécution.

Description

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

référence

$ man ps # puis recherchez /PROCESS STATE CODES

84
prayagupd

Au lieu de Nohup, vous devriez utiliser screen. Le résultat est identique: vos commandes sont exécutées "en mode détaché". Toutefois, vous pouvez reprendre les sessions d’écran, 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 ceux-ci:

Pour démarrer la première session d’écran ou reprendre la dernière session détachée:

screen -Rd 

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

Vous pouvez également démarrer plusieurs écrans - lisez la documentation.

23
mvp

Si vous avez une redirection de sortie standard vers "Nohup.out", il suffit de voir qui utilise ce fichier.

lsof | grep Nohup.out
13
Victor Melnikov

Vous ne pouvez pas obtenir exactement la liste des commandes lancées avec Nohup, mais vous pouvez les voir avec vos autres processus en utilisant la commande ps x. Les commandes commencées par Nohup auront un point d'interrogation dans la colonne TTY.

4
Old Pro

Vous pouvez également simplement utiliser la commande top et votre ID utilisateur vous indiquera les tâches en cours d'exécution et leur heure.

$ top

(cela affichera tous les travaux en cours)

$ top -U [user ID]

(Cela affichera les travaux spécifiques à l’ID utilisateur)

3
Jcrow06