Solía ejecutar un programa Perl TCP Socket 24 * 7 en mi servidor UBUNTU. Por lo general, abría el terminal Gnome e iba a la ruta del script y comenzaba el script de Perl. La terminal de Gnome permanece abierta en todo momento. Funcionó bien durante 6 meses. Pero durante los últimos tres días, no funciona correctamente. El terminal Gnome se cierra automáticamente y, por lo tanto, el programa Socket. Al día siguiente, por la mañana, volví a abrir el terminal y ejecuté el programa de socket, luego nuevamente el terminal se cerró durante la noche. No pude encontrar ninguna solución en la web. Necesita ayuda para resolver el problema
3
nohup {command} &
) haría eso. ¿O usar un ttty diferente? Por cierto: Ubuntu probablemente no lo cierre por sí solo. Probablemente necesite averiguar por qué, podría ser un bloqueo o un problema con su programa perlcron_daily
o cualquier otra cosa/var/log
.dmesg
la salida o en los registros del sistema?Respuestas:
Ejecute su programa en la pantalla . Simplemente instale la pantalla, abra su terminal y escriba "pantalla". A partir de ese momento, todo lo que haga estará dentro de una 'pantalla' persistente que no depende de si el caparazón externo está cerrado.
Si su terminal está cerrada, puede abrir una nueva y volver a conectar la pantalla.
Si escribo programas que necesitan ejecutarse de esta manera (generalmente los iniciaré de forma remota a través de ssh), generalmente escribo un cheque, de modo que el programa se niega a iniciarse a menos que se esté ejecutando en la pantalla (verifique si existe la variable de entorno STY). De esa manera no puedo ejecutar accidentalmente el programa fuera de la pantalla.
fuente
screen -r
. (Además, lescreen -x
permite adjuntar a una sesión a la que ya está conectada otra terminal)Es posible iniciar el programa en segundo plano (su script podría necesitar alguna alteración si no es posible) con ...
La salida del programa se redirigirá a {program.out}. Si cambia ">" a ">>", agregará la salida en lugar de escribir sobre la vez anterior en que se utilizó.
Eso eliminaría la necesidad de una sesión terminal. Además de eso, también atrapará los mensajes de error que podría haber perdido debido a que la sesión del terminal se mató / detuvo.
fuente
Presione CTRL+ ALT+ F2e inicie sesión con su nombre de usuario y contraseña.
Ejecute el comando desde allí y no debería cerrarse.
fuente