5 votes

Afficher PID du processus récemment lancé dans ZSH

Puis-je afficher le PID d'un processus que je viens de lancer, idéalement à la fin de la ligne de commande?

Exemple:
root in ~: mysqld .................. [PID 34567]
12121 mysql-logs commencent à arriver...
12125 plus de logs...

Par exemple, lorsque je lance deux processus mysqld et que le deuxième ne "fonctionne" pas (port, etc..), je ne peux pas savoir quel démon a quel PID.

Exemple concret:

mysqld >/dev/null                                                                                                                                     130 
120126 15:44:05 [Note] Le plugin 'FEDERATED' est désactivé.
120126 15:44:05 InnoDB : Le tas mémoire InnoDB est désactivé
120126 15:44:05 InnoDB : Les mutex et rw_locks utilisent les composants atomiques GCC
120126 15:44:05 InnoDB : Les tables compressées utilisent zlib 1.2.3
120126 15:44:05 InnoDB : Initialisation du pool de buffers, taille = 128.0M
120126 15:44:05 InnoDB : Initialisation du pool de buffers terminée
InnoDB : Impossible de verrouiller ./ibdata1, erreur : 35
InnoDB : Vérifiez que vous n'avez pas déjà un autre processus mysqld
InnoDB : utilisant les mêmes fichiers de données ou de logs InnoDB.
120126 15:44:05  InnoDB : Nouvelle tentative de verrouillage du premier fichier de données
InnoDB : Impossible de verrouiller ./ibdata1, erreur : 35
InnoDB : Vérifiez que vous n'avez pas déjà un autre processus mysqld
InnoDB : utilisant les mêmes fichiers de données ou de logs InnoDB.
InnoDB : Impossible de verrouiller ./ibdata1, erreur : 35
InnoDB : Vérifiez que vous n'avez pas déjà un autre processus mysqld
InnoDB : utilisant les mêmes fichiers de données ou de logs InnoDB.
InnoDB : Impossible de verrouiller ./ibdata1, erreur : 35
InnoDB : Vérifiez que vous n'avez pas déjà un autre processus mysqld

Je ne peux ni ^+C, ni ^+D ni ^+Z le processus et le seul moyen de savoir quel processus il s'agit est via top (comme déjà mentionné). Étant donné que je ne peux même pas mettre le processus en arrière-plan, je n'ai aucun moyen direct d'obtenir le PID. mysqld && echo $! montre que $! est 0.

J'aimerais que le PID soit affiché dès que le processus est lancé, puis que la sortie réelle commence.

3voto

Vous pourriez démarrer le processus en arrière-plan avec :

mysqld &

Cela affiche normalement le [pid]; sinon, affichez-le :

mysqld & echo pid=$!

Si vous souhaitez exécuter le démon en premier plan, ramenez-le simplement en premier plan :

mysqld & echo pid=$! ; fg

1voto

oHo Points 2423

Après avoir lu votre dernier commentaire, je comprends que vous voulez connaître le PID du processus que vous recherchez dans votre terminal. Nous avons tous le même besoin.
C'est ce que je fais habituellement :

J'ouvre deux terminaux.

Dans le premier, je vais lire la sortie de mysqld :

touch   mysql.log
tail -f mysql.log

Dans le deuxième, je lance mysqld en arrière-plan :

mysqld >mysql.log 2>&1 &
ps f

J'utilise ce deuxième terminal pour contrôler/espionner mysqld.

J'espère que cela pourra vous aider.
Amicalement.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X