Tengo un script bash que monta y desmonta un dispositivo, que realiza algunas operaciones de lectura en el medio. Dado que el dispositivo es muy lento, el script tarda unos 15 segundos en completarse (el montaje tarda al menos 5-6 segundos). Como dejar este dispositivo montado puede causar otros problemas, no quiero que este script se interrumpa.Script Bash: no se puede manejar correctamente SIGTSTP
Habiendo dicho eso, puedo manejar correctamente SIGINT (Ctrl + c), pero cuando trato de manejar SIGTSTP (Ctrl + z), el script se congela. Lo que significa que la señal está atrapada pero el controlador no se ejecuta.
#!/bin/sh
cleanup()
{
# Don't worry about unmounting yet. Just checking if trap works.
echo "Quitting..." > /dev/tty
exit 0
}
trap 'cleanup' SIGTSTP
...
Tengo que enviar manualmente la señal KILL al proceso. ¿Alguna idea de por qué está sucediendo esto y cómo puedo solucionarlo?
Eso tiene tanto sentido. Por lo tanto, parece que a menos que todos los binarios que ejecuta con el script también manejen^z de la forma en que lo hace, no hay forma de manejar adecuadamente^z. ¿Está bien? – Ram
Puede ejecutar el trabajo asincrónicamente en setsid y esperarlo. por ejemplo: 'setsid cmd & wait' en lugar de simplemente' cmd'. –
Parece que lo hace. ¡Gracias por tu ayuda! Pero, curioso, ¿no se mantendrá detenido el proceso en una nueva sesión? – Ram