Dans mon exemple, j'exécute une commande qui prend très longtemps à être exécutée (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 consulter l'historique pour le savoir, mais cela arrêterait le processus et je ne veux pas que cela se produise (au cas où il ferait déjà make -j4).
Existe-t-il un moyen de savoir quelle commande est exécutée sans arrêter le processus?
command-line
make
Daniel Viaño
la source
la source
pgrep -a make
make
vous pouvez l'arrêter et le redémarrer et il devrait reprendre là où il s'était arrêté.Réponses:
Si vous voulez voir la ligne de commande complète pour chaque instance
make
qui s'exécute sur votre ordinateur, ouvrez un nouveau terminal et essayez:pgrep
est un programme qui recherche dans tous les processus de votre ordinateur. Dans ce cas, il recherche des programmes nommésmake
. L'option-a
indiquepgrep
de répertorier à la fois l'ID de processus et la ligne de commande complète pour chaque processus correspondant. (Sans-a
, cela retournerait simplement l'ID du processus.) Pour plus d'informations sur les nombreuses options de pgrep, voirman pgrep
.la source
pgrep
serait différent de la commande qui a été tapée sur la ligne de commande.Pendant que 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 tapant
bg
(votre travail va maintenant continuer en arrière-plan et vous pouvez en même temps travailler sur la ligne de commande; cela revient à démarrer un travail avec&
à la fin de la ligne de commande). Utilisez ensuite 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 ensuite mettre votre travail au premier plan en tapantfg
.la source
for X in {1..1000} ; do sleep $X ; done
la boucle serait interrompue et les itérations restantes ne se produiraient pas.jobs
, comme le montre la réponse de @ ichabod), puis de le reprendre viafg
.Je fais quelque chose comme Stefan: ^ Z pour suspendre le travail, puis je cours
jobs
. Si plusieurs processus sont en cours d'exécution, vous devrez peut-être trier le travail qui a été interrompu, mais cela donnera généralement la ligne de commande. Exécutez ensuitefg
pour continuer l'exécution.la source
Une bonne façon de voir cela dynamiquement est de lancer top, et cela 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 d'autres informations, vous pouvez utiliser des compétences pour en supprimer certains si vous le souhaitez, la page de manuel pour cela est une bonne ressource, et faire une compétence ou tuer -9 devient des processus collants bloqué dans l'appareil attend etc. Vous pouvez également envoyer d'autres signaux à des processus tels que -hup, redémarrer les démons, etc.
Le haut est agréable car il vous montre la taille du processus, le temps écoulé et les états actuels du processeur et celui de la mémoire et du swap.
Je fais souvent un $ make> & make.out & puis moins ou tail -f sur le fichier journal make.out. Depuis, make est détaché en tant que processus de ma session shell.
la source