Si deux travaux sont entrés dans la ligne de commande bash séparés par un point-virgule:
$ job 1; job 2;
Comment annuler le deuxième? Si j'appuie CTRL+c, le premier sera annulé et le "travail 2" commencerait, je veux juste arrêter le deuxième travail pour ne pas l'exécuter. J'ai essayé atq, ps mais pas de chance, avec ps -ef je ne vois que 'job 1' mais 'job 2' n'est pas listé, donc je ne peux pas obtenir de PID pour utiliser kill. Je sais que je peux utiliser && au lieu de; mais il est trop tard maintenant, j'ai exécuté cette commande par accident sur mon serveur au lieu de mon ordinateur personnel et maintenant j'essaie de comprendre comment éviter une catastrophe.
Ce problème est spécifique à la commande rsync suivie d'une autre commande:
$ rsync ..... ; Sudo shutdown -h now
Tuer le processus par ID ou tuer son parent ne fonctionnera pas.
Après plusieurs heures de test, je l'ai isolé pour rsync, d'autres commandes avec lesquelles je peux terminer CTRL+c dans divers ordres, mais pas s'ils sont après certaines commandes comme rsync ou ping, j'ai essayé différentes versions d'Ubuntu, noyaux, serveur sans utilisateur Sudo et je pourrais le reproduire partout, le meilleur moyen d'éviter ce problème est d'utiliser && après rsync pour exécuter commande suivante uniquement en cas de succès exitcode 0:
$ rsync .... && job 2
Je pense que vous manquez quelque chose, lorsque vous exécutez deux commandes séparées par ;
vous pouvez tuer les deux commandes par le CTRL+c.
juste pour être sûr d'essayer cette commande:
find / -name a ; ls /home
Tuez ensuite les commandes ci-dessus avec CTRL+c, cela tuerait les deux processus, vous ne répertorierez pas le contenu de votre page d'accueil. C'est-à-dire que la prochaine commande ne s'exécutera pas.
PDATE: Ceci sera également valable pour votre commande rsync
. Voici mon exemple:
$ rsync -avz /var/cache/apt/archives/ /tmp/backups/ ; Sudo shutdown -h now
sending incremental file list
created directory /tmp/backups
./
authbind_1.2.0build3_AMD64.deb
................
^Crsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(549) [sender=3.0.9]
[Sudo] password for user:
Donc, comme vous le voyez ci-dessus, lorsque vous exécutez CTRL+c, cela tue la première commande et au démarrage de shudown, il vous demandera votre mot de passe Sudo
, vous pouvez donc maintenant tuer le deuxième processus en utilisant CTRL+c encore.
pdate 2 En tant que hack de problème, vous pouvez faire:
Sudo
puis refaites votre Sudo
demande de mot de passe en éditant votre fichier sudoer Sudo visudo
/sbin/shutdown
commande pour supprimer +x
ou renommez-le simplement sous un autre nom.Tuez le processus parent de job1 avec SIGKILL
.
Afficher les processus dans un arbre de processus, par exemple. avec htop
ou ps axf
et tue le processus parent de job1 et non job1 lui-même.
Installez htop
avec
Sudo apt-get install htop
Downvoters, comprendre la réponse avant de downvoter