284 votes

Puis-je interrompre/écraser un processus déjà lancé ?

Je fais des tests sur des scripts de migration de données à long terme, via SSH. Disons que je commence à exécuter un scripts vers 16h ; maintenant, 18h arrive, et je me maudis de ne pas avoir fait tout cela en screen .

Y a-t-il un moyen de "rétroactivement" nohup un processus, ou dois-je laisser mon ordinateur en ligne toute la nuit ? S'il n'est pas possible de joindre screen à/ nohup un processus que j'ai déjà commencé, alors pourquoi ? Quelque chose à voir avec la façon dont les processus parent/enfant interagissent ? (Je n'accepterai pas de réponse négative qui n'aborde pas au moins la question du "pourquoi" - désolé ;) )

6 votes

Je viens de voir un article de blog intéressant sur disown . blogs.oracle.com/ksplice/entry/disown_zombie_children_and_the

12voto

Martin M. Points 6418

Je ne peux que vous donner un simple "Non" sans le pourquoi pour la partie écran, je serais intéressé par la raison moi-même thou.

Cependant, avez-vous essayé disown (un buildin de bash)

~ $ echo $SHELL
/bin/bash
~ $ type disown
disown is a shell builtin
~ $ help disown
disown: disown [-h] [-ar] [jobspec ...]
     By default, removes each JOBSPEC argument from the table of active jobs.
    If the -h option is given, the job is not removed from the table, but is
    marked so that SIGHUP is not sent to the job if the shell receives a
    SIGHUP.  The -a option, when JOBSPEC is not supplied, means to remove all
    jobs from the job table; the -r option means to remove only running jobs.

10voto

daharon Points 1355

Nohup sur Solaris/OpenSolaris possède un drapeau -p pour nohup un processus en cours d'exécution - par exemple, voir le fichier Page de manuel de Solaris 10 nohup .

5voto

Diego Points 1311

J'ai récemment vu un lien vers neercs qui est un utilitaire de type écran construit à l'aide de libcaca, une bibliothèque d'art ascii en couleur. Parmi d'autres fonctionnalités, il est capable de saisir un processus existant et de le re-parenter dans votre session neercs (écran).

Je ne l'ai toutefois pas utilisé, et je ne peux donc pas dire si cela fonctionne ou non.

2voto

Myrddin Emrys Points 1229

Je ne pense probablement pas assez, alors n'hésitez pas à me corriger (j'ai déjà appris le disown !)... Est-ce qu'un ctrl-Z et "bg" ne fonctionneraient pas pour au moins faire tourner le processus en arrière-plan ? Ou est-ce que le problème principal est que vous voulez toujours voir STDOUT pendant qu'il s'exécute ?

2voto

David Pashley Points 22851

Si vous pouvez vivre avec le fait de ne pas pouvoir interagir avec le processus et que vous n'avez pas d'objection à charger des modules aléatoires du noyau, vous pouvez faire pire que de regarder le site suivant Snoop . Il y a aussi quelques autres projets. Aquí est un injcode d'appel, qui peut faire la plupart du temps ce que vous voulez faire.

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