Ejecute un comando en un shell y siga ejecutando el comando cuando cierre la sesión

StackOverflow https://stackoverflow.com/questions/431521

  •  08-07-2019
  •  | 
  •  

Pregunta

Estoy usando Putty para conectarme a un servidor remoto. Lo que quiero saber es si hay alguna forma de escribir mis comandos y permitir que sigan ejecutándose después de cerrar la sesión con Putty. La razón de esto es que no quiero mantener la computadora encendida todo el tiempo. ¿Hay alguna forma de hacer esto?

Actualización con la solución

Para mi pregunta, tal como se presenta, la mejor solución es usar uno de los comandos proporcionados, como nohup , porque no tiene que instalar ningún software adicional. Pero si tiene el mismo problema, use la pantalla, instálela y úsela. Es asombroso.

He seleccionado la respuesta de Norman Ramsey como favorita porque propongo varias soluciones usando comandos y la pantalla . Pero compruebe las otras respuestas, especialmente la de PEZ, luego obtendrá una idea de qué pantalla es capaz de hacer.

¿Fue útil?

Solución

nohup , disown y screen son todos buenos, pero screen es el mejor porque a diferencia de los otros dos , screen le permite desconectarse del servidor remoto, mantener todo en funcionamiento y luego volver a conectarse para ver qué sucede. Con nohup y disown no puede reanudar la interacción.

Otros consejos

pantalla! Es lo mejor desde el pan rebanado. (Sí, sé que otros ya lo han sugerido, pero es tan bueno que todo el mundo debería unirse y sugerirlo también).

La pantalla

es como, como, ummmm ... como usar VNC o similar para conectarse a un destop GUI, pero para ventanas de shell de comandos. Puede tener varias ventanas de shell '' abrir a la vez en la misma sesión de pantalla. Puedes hacer cosas como:

  1. Inicie una sesión de pantallas usando " screen -dR " (acostumbrarse a usar -dR)
    • ejecuta algunos comandos en una ventana
    • presione CTRL - A , C para crear una nueva ventana, abra un archivo allí en vim
    • presione CTRL - A , 0 para volver a la primera ventana y ejecutar algún comando en el archivo que acaba de editar
    • CTRL - A , 1 para volver a su sesión vim
    • CTRL - A , C para otra ventana más y tal vez haga '' sudo - su '' (porque resulta que necesitas un shell raíz completo)
    • CTRL - A , 0 e iniciar un proceso en segundo plano
    • CTRL - A , C para crear una nueva ventana, " tail -f " el registro para ese proceso en segundo plano
    • CTRL - A , d para desconectar su pantalla y luego CTRL - D para desconectarse del servidor
    • Ir de vacaciones por tres semanas
    • Inicie sesión de nuevo en el servidor y emita " screen -dR " para conectarse a su sesión de pantalla existente
    • verifique el registro en la cuarta ventana con CTRL - A , 3 (es como si hubiera estado allí viéndolo todo el tiempo)
    • CTRL - A , 1 para retomar esa sesión vim nuevamente
    • ¿Supongo que estás empezando a hacerte una idea ahora? =)

Es como la magia. He estado usando la pantalla durante más tiempo del que puedo recordar y todavía estoy totalmente sorprendido con lo sangriento que es.

EDITAR : Solo quiero mencionar que ahora también hay tmux . Muy parecido a pantalla , pero tiene algunas características únicas, dividiendo las ventanas como la más destacada.

Intente usar GNU Screen . Le permite tener varias conchas abiertas a la vez. Y puede desconectarse de esos shells en ejecución (es decir, cerrar sesión con Putty) y seguirán haciendo lo suyo.

Lo que está buscando es nohup .

Vea el enlace wiki para saber cómo usarlo.

la pantalla es la mejor.

Prueba:

screen -dmS " MyTail " tail -f / var / log / syslog

Este comando de inicio en segundo plano.

Use screen -r para listar, y screen -r Mytail para ingresar a la sesión.

Si más usuarios necesitan acceder a la misma sesión, use: screen -rx MyTail, y ambos o más usuarios comparten la sesión.

Si no puede usar la pantalla (porque, por ejemplo, su sesión SSH está siendo controlada por programación), también puede usar daemonize para ejecutar el programa como daemon.

Una manera que me funciona bien es en .

en funciona como cron, pero para un trabajo de una sola vez. Lo usé hoy para descargar un archivo grande sin tener que mantener viva mi sesión.

por ejemplo:

$ at 23:55
at> wget http://file.to.download.com/bigfile.iso
at> ^D  

Pasa en una vez (en el futuro) y le da un aviso. Ingrese los comandos que desea ejecutar en ese momento y presione Ctrl + D. Puede salir de su sesión y ejecutará los comandos a la hora especificada.

Wikipedia tiene más información sobre en .

./command & disown
ssh localhost && ./command && exit
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top