
Si se ingresan dos trabajos en la línea de comando de bash separados por punto y coma:
$ job 1; job 2;
¿Cómo cancelo el segundo? Si presiono CTRL+ c, el primero se cancelará y se iniciará el 'trabajo 2', solo quiero detener el segundo trabajo para que no se ejecute. Intenté atq, ps pero no tuve suerte, con ps -ef solo puedo ver 'trabajo 1' pero 'trabajo 2' no aparece en la lista, por lo que no puedo hacer que PID use kill. Sé que puedo usar && en lugar de ; pero ya es demasiado tarde. Ejecuté este comando por accidente en mi servidor en lugar de en la PC de mi casa y ahora estoy tratando de descubrir cómo evitar un desastre.
Este problema es específico del comando rsync seguido de otro comando:
$ rsync ..... ; sudo shutdown -h now
Matar el proceso por ID o matar a su padre no funcionará.
Después de varias horas de pruebas, lo aislé en rsync, otros comandos puedo terminar con CTRL+ cen varios órdenes, pero no si son después de algunos comandos como rsync o ping, probé diferentes versiones de Ubuntu, kernels y servidores sin usuario sudo. y podría reproducirlo en todas partes, la mejor manera de evitar este problema es usar && después de rsync para ejecutar el siguiente comando solo en el código de salida exitoso 0:
$ rsync .... && job 2
Respuesta1
Mata elproceso padrede trabajo1 con SIGKILL
.
Mostrar los procesos en un árbol de procesos, por ejemplo. con htop
o ps axf
y matar alproceso padre de job1y no el trabajo1 en sí.
Instalar htop
con
sudo apt-get install htop
Votantes negativos, comprendan la respuesta antes de votar en contra
Respuesta2
Creo que te pierdes algo. Cuando ejecutas dos comandos separados por, ;
puedes eliminar ambos comandos con CTRL+ c.
Sólo para estar seguro prueba este comando:
find / -name a ; ls /home
Luego elimine los comandos anteriores con CTRL+ c, esto eliminaría ambos procesos, no incluirá el contenido de su inicio. Es decir, el siguiente comando no se ejecutará.
ACTUALIZAR:Esto también será válido para tu rsync
mando. Aquí mi ejemplo:
$ 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:
Entonces, como ve arriba, cuando ejecuta CTRL+ c, esto elimina el primer comando y, al iniciar el apagado, le pedirá su sudo
contraseña, por lo que ahora puede finalizar el segundo proceso usando CTRL+ cnuevamente.
Actualización 2Como truco para el problema, puedes hacer:
- ya que usa sin contraseña
sudo
, vuelva asudo
solicitar la contraseña editando su archivo sudoersudo visudo
- Como paso final si nada más funcionay solo un truco y no es aconsejableedite el
/sbin/shutdown
comando para eliminarlo+x
o simplemente cámbiele el nombre a un nombre diferente.