¿Cómo puedo mantener vivo un proceso después de cerrar la sesión de masilla?


41

Estoy usando masilla para interactuar con el servidor Linux. He comenzado un proceso con masilla. El proceso se está ejecutando y tomará entre 5 y 6 horas. Quiero que ese proceso continúe ejecutándose después de cerrar la sesión de masilla. ¿Cómo puedo mantener vivo ese proceso después de cerrar la sesión de masilla? No quiero mantener la computadora encendida todo el tiempo. ¿Hay alguna forma de hacer esto?

Respuestas:


32

Yo uso la pantalla para ese tipo de cosas. En realidad, a veces lo dejo bastante tiempo para poder volver a lo que estaba haciendo.


El proceso está en marcha ahora, es que funcione para ese proceso me pregunto porque el proceso está en el medio y yo no quiero que reiniciarlo ahora?

+1 por mencionar mi herramienta de línea de comandos favorita indiscutible. Es una joya en situaciones como esta.
Noufal Ibrahim

@Noufal, totalmente! @prakash, debes ejecutar la pantalla antes de poder iniciar cualquier proceso
ziya

Si desea conectarse a varias máquinas, incluso puede ser una buena idea ejecutar varias pantallas dentro de la primera pantalla, por lo que solo tiene que conectarse a una pantalla para acceder a todos sus controles remotos en ejecución.

el enlace ya no funciona
Malky.Kid

31
^Z
bg %1
disown -h %1

La '-h' hace que el proceso sea inmune a SIGHUP cuando se completa la sesión.


3
Tenga en cuenta que no hay forma de 'reconocer' o 'adoptar' el proceso: una vez que haya hecho esto, no podrá volver a ponerlo en primer plano. Sin embargo, si el proceso es un trabajo por lotes que trabaja para producir algunos archivos, eso no debería importar.

19

Usa el nohupcomando. Simplemente prefijelo a su comando y los demonizará para que no se detengan cuando cierre la sesión / finalice su sesión de shell. La salida estándar estará por defecto en un archivo llamado nohup.out. Consulte la página del manual para nohup(1)obtener más información.


el proceso se está ejecutando, ¿funciona para ese proceso? Estoy preguntando porque el proceso está en el medio y no quiero reiniciarlo ahora.

Demasiado tarde ... al menos, para operaciones normales. No sería del todo sorprendente descubrir que si adjunta un depurador al proceso y luego lo modifica con un conjunto apropiado de llamadas al sistema, tal vez podría ponerlo en segundo plano. Pero no es lo que se podría recomendar: no me molestaría, por ejemplo, y tengo al menos una idea de lo que podría estar involucrado. Ahora tiene dos opciones ... permanecer conectado hasta que finalice o detener el proceso actual y reiniciar uno nuevo con nohup.
Jonathan Leffler

1
Si está usando bash (y creo que zsh), puede usar la solución y disownel proceso de Tom Anderson para que continúe ejecutándose incluso cuando se desconecta.
Noufal Ibrahim

Sí, disown parece ser el camino a seguir para un trabajo que ya se está ejecutando. Es factible porque el shell que inició el trabajo puede manipular las propiedades necesarias.
Jonathan Leffler

5

Comience el proceso con nohup "processname" &. También puede separarlo con screeno tmux.


3

Las soluciones anteriores están bastante bien descritas, sin embargo, ninguna de ellas funcionó para mí hasta que también edité la configuración de PuTTY para:

Habilitar TCP keepalives (opción SO_KEEPALIVE)

No había visto esto en ningún otro lugar, y solo lo encontré por prueba y error.


1

Ctrl + z Enviar el proceso actual al fondo.

Además, puede agregar & al final de su comando para ejecutar en segundo plano


44
Normalmente, control-z pone el proceso en un estado de animación suspendida; el comando bg lo pone en segundo plano. Sin embargo, eso también mantiene el proceso conectado al terminal, mientras que nohup lo separa del terminal y, por lo tanto, permite que la masilla se desconecte y que el proceso sobreviva a la desconexión.
Jonathan Leffler

Descubrí que usar '&' para enviar al fondo funciona con masilla, pero cuando me conecto usando ssh directamente desde un shell, si cierro la conexión, el proceso en segundo plano se interrumpe. ¿Alguna idea de por qué?
Zardoz89

0

Si desea que el programa contenido en el proceso se ejecute siempre o con frecuencia en segundo plano, puede codificarlo para que se separe del terminal de control (haga que dicho comportamiento sea controlable mediante un indicador de opción) y se ejecute en segundo plano.

Esa es una solución a largo plazo, por supuesto, no para el proceso actualmente en ejecución.


0

Puede usar &después del enlace.

Ejemplo:

[localhost ~ ]# wget http://www.link.com/download/download.zip &

La pregunta no era sobre un enlace, ¿quieres decir agregar un &signo después de la línea de comando?
Danny

0

Cómo mantener la ejecución de weblogic después de cerrar la ventana de masilla:

Pasos simples: después del inicio de sesión a través de masilla, siga los pasos a continuación:

  1. Vaya al directorio en el servidor donde startWebLogic.shse encuentra el comando.
  2. Escriba command screeny presione Enter(se abrirá una nueva pantalla).
  3. En la nueva pantalla, escriba su comando de ejecución ./startWebLogic.sh.
  4. Presione Ctrl+ aluego presione d(sin mantener presionado Ctrl); volverá a la pantalla anterior.
  5. Cuando desee volver a la pantalla de registro de su servidor, escriba command screen -r.

0

si el proceso es para nodejs, y puede ser su intención ya que originalmente publicó esto en stackoverflow. Originalmente estaba buscando esta pregunta yo mismo. Encontré pm2 y es increíble. Las otras respuestas pueden ayudar para la masilla general, pero si es específica del nodo, esta es, con mucho, la mejor respuesta, ya que hay un monitoreo incorporado y la configuración es simplemente un

$ npm install pm2 -g
$ cd yourappdirectory

"PM2 es un administrador de procesos de producción para aplicaciones Node.js con un equilibrador de carga incorporado. Le permite mantener las aplicaciones vivas para siempre, recargarlas sin tiempo de inactividad y facilitar las tareas comunes de administración del sistema.

Iniciar una aplicación en modo de producción es tan fácil como: "

$ pm2 start yourappname.js

"usando el comando guardar y luego congelar, habilita los procesos para que se inicien automáticamente al reiniciar"

$ pm2 save
$ pm2 freeze

para monitorear su

$ pm2 monit

y reinicia

$ pm2 restart yourappname

también para información de registro directo

$ pm2 logs

Ahora puedo ejecutar fácilmente dos ventanas de masilla en lugar de usar la ventana de mi navegador digialocean (que no podía desplazar hacia arriba); Para más información ver el github principal

https://github.com/Unitech/pm2

es asombroso.


¿Puedes explicar un poco más sobre qué es pm2 y qué hacen los comandos que muestras? Por favor no responda en los comentarios; edite  su respuesta para que sea más clara y completa.
G-Man dice 'reinstalar a Monica' el

Se agregó un poco más de documentación para la comunidad. Desearía haber encontrado pm2 años atrás.
soluciones sasy
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.