PuTTY u OTRO: siga ejecutando el comando incluso después de salir de PuTTY [duplicado]


13

Tengo un par de comandos que necesito ejecutar. Estos comandos deben ejecutarse continuamente incluso después de que salga de mi interfaz. Cuando tengo acceso a la GUI de Linux, ejecuto algo como:

cd /home/testuser/Scripts*
xterm -hold -T "Background_Script1" -e  "service1-start.sh" &
sleep 10
xterm -hold -T "Background_Script2" -e "service2-start.sh" &

Cualquier ayuda será muy apreciada.



¿Hay alguna razón por la que no estás ejecutando estos servicios como demonios?
SevenSidedDie

¿Los comandos están destinados a ser servicios que deberían ejecutarse en un tiempo de actividad cercano al 100% "para siempre", o una tarea de procesamiento de larga duración que se espera que termine después de algún tiempo? Todas las respuestas "funcionarán" para ambos casos, pero la recomendación adecuada será diferente.
Peteris

¿Qué distribución específica de Linux estás usando? Descubrí que la ejecución set -m;hace que mis scripts continúen ejecutándose después de cerrar sesión en CentOS y RHEL.
ArtOfWarfare

Respuestas:


33

Tratar

nohup Background_ScriptX y

nohup asegura que un proceso no finaliza cuando se cierra un terminal. El símbolo & empuja el proceso a un segundo plano.

Espero que esto haya sido útil.


nohup definitivamente hace el trabajo
Pitto

Me alegra ser de ayuda.
Eamonn Travers

15
La pantalla tiene una clara ventaja sobre nohup : nohup no le permite volver a un comando en ejecución (por ejemplo, a la mañana siguiente para leer su stdout, luego elegir matarlo, etc.). la pantalla le permite hacer exactamente eso.
Andreas F

1
nohup envía la salida a un archivo donde puede procesarse.
Brian Knoblauch

Para aquellos que son nuevos en nohup, básicamente es "sin colgar" - con nohup, la HUPseñal de colgar ( ) se ignora.
Dan7119

20

Si desea leer la salida en una fecha posterior, puede usar screen:

screen -d -m my_command

Esto le proporciona un terminal separado al que puede conectarse más tarde ( screen -r) para leer la salida stdout / stderr.


2
+1. Por un lado, si cierra su terminal (por ejemplo, masilla) y luego lo abre de nuevo y lo vuelve a conectar a la pantalla ( screen -r), también tendrá toda la salida que produjo su programa y, de lo contrario, se habría "perdido". Además, la pantalla puede hacer muchas cosas increíbles, como pantallas divididas, etc. :)
Alberto Santini

6

Otra opción si el nohupcomando no está disponible es usar el comando disown .

Primero puede ver sus tareas en segundo plano ejecutando jobsen la terminal. Puede obtener el número de trabajo desde allí.

Ahora solo ejecute disown %[job number]y el proceso se desconectará de la terminal actual y permanecerá vivo cuando cierre la sesión.

Nota al margen: asegúrese de hacer la pregunta correcta. Si está ejecutando servicios reales como insinúa en su muestra, es posible que desee ver cómo crear un demonio en el sistema operativo que elija. Esto es para asegurarse de que el proceso aún se ejecuta después de un reinicio y hacerlo más consistente con otros servicios.

Espero que esto ayude.


3

Como screense ha mencionado: existen otros multiplexores de terminales por ahí. Me gusta tmuxmucho, vea, por ejemplo, esta otra pregunta de superusuario, tmux vs screen para una comparación.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.