Dans mon exemple, j'exécute une commande qui prend beaucoup de temps à s'exécuter (plusieurs heures).
Je ne me souviens pas vraiment si j'ai entré make ou make -j4.
Bien sûr, je pourrais l'arrêter et appuyer sur la touche ou vérifier l'historique pour le savoir, mais cela arrêterait le processus et je ne veux pas que cela se produise (au cas où il est déjà en train de faire -j4).
Existe-t-il un moyen de savoir quelle commande est en cours d'exécution sans arrêter le processus?
Si vous souhaitez voir la ligne de commande complète pour chaque instance de make
exécutée sur votre ordinateur, ouvrez un nouveau terminal et essayez:
pgrep -a make
pgrep
est un programme qui effectue une recherche dans tous les processus de votre ordinateur. Dans ce cas, il recherche des programmes nommés make
. L'option -a
indique à pgrep
de répertorier à la fois l'ID du processus et la ligne de commande complète pour chaque processus correspondant. (Sans -a
, cela renverrait simplement l'ID de processus.) Pour plus d'informations sur les nombreuses options de pgrep, voir man pgrep
.
Lorsque la fenêtre du terminal est active, vous pouvez suspendre (suspendre) le processus en appuyant sur Ctrl+Z. Vous pouvez ensuite pousser le travail en arrière-plan en saisissant bg
(votre travail continuera maintenant en arrière-plan et vous pourrez simultanément travailler sur la ligne de commande; cela revient à démarrer un travail avec &
à la fin de la ligne de commande. ). Ensuite, utilisez les flèches du curseur (haut et bas) pour voir quelle commande vous avez utilisée. Si vous le souhaitez (mais ce n'est pas nécessaire), vous pouvez alors placer votre travail au premier plan en saisissant fg
name__.
Je fais quelque chose comme Stefan: ^ Z pour mettre le travail en pause, puis je lance jobs
name__. Si plusieurs processus sont en cours d'exécution, vous devrez peut-être choisir le travail que vous avez mis en pause, mais cela donnera généralement la ligne de commande. Puis exécutez fg
pour continuer l'exécution.
Une bonne façon de voir cela dynamiquement est de fonctionner en haut, ce qui vous indique l'état général du système et les processus en cours d'exécution sur le système.
Faire un 'ps ux' montre vos processus avec pid et autres informations, vous pouvez utiliser compétence pour en tuer certains si vous le souhaitez, la page de manuel est une bonne ressource, et faire une compétence ou tuer -9 obtient des processus difficiles accroché dans l'appareil attend, etc. Vous pouvez également envoyer d'autres signaux à des processus tels que -hup, faire redémarrer les démons, etc.
Top is Nice, car il indique la taille du processus, le temps écoulé, l'état actuel de l'unité centrale, ainsi que l'état de la mémoire et de l'échange.
Je fais souvent $ make> & make.out & puis less ou tail -f dans le fichier journal make.out. Depuis, make est détaché en tant que processus de ma session Shell.