GNU/Linux >> Tutoriales Linux >  >> Ubuntu

¿Seguir ejecutando un programa de Python incluso después de cerrar la sesión de Ssh?

Esta pregunta ya tiene respuestas aquí :¿Cómo mantener los procesos en ejecución después de finalizar la sesión ssh?

(14 respuestas)
Cerrado hace 3 años.

Yo script de python llamado scrape.py . Como sugiere el nombre, es un rastreador web y quiero que se ejecute continuamente en mi máquina Linux incluso después de cerrar sesión y finalizar la sesión ssh. Leí mucho por aquí y hubo muchas sugerencias para usar nohup python scrape.py & . Esto funcionó bien, pero la ejecución del script se detuvo tan pronto como me desconecté. También exploré el supervisor aplicación, pero no tengo permisos de root, por lo que también falla. ¿Me puede sugerir una manera de resolver este problema? Gracias.

Mejor respuesta

Existen varios enfoques (herramientas y comandos) que puede utilizar para fines similares:

  1. Usa emuladores de terminal como tmux y screen :

    • tmux – multiplexor de terminales:permite crear, acceder y controlar varios terminales desde una única pantalla. tmux puede separarse de una pantalla y continuar ejecutándose en segundo plano, luego volver a adjuntarse. Se proporcionan ejemplos de su uso básico aquí y aquí.

    • screen – gestor de pantalla con emulación de terminal VT100/ANSI. Es un administrador de ventanas de pantalla completa que multiplexa una terminal física entre varios procesos (generalmente shells interactivos)... Los programas continúan ejecutándose cuando su ventana no está visible e incluso cuando la sesión de pantalla completa está desconectada de la terminal del usuario. Aquí se proporciona un ejemplo de uso.

  2. Use comandos separados ejecutados en segundo plano (lea también):

    • nohup – ejecutar un comando inmune a cuelgues, con salida a un no-tty; Ejecute COMMAND, ignorando las señales de colgado. La sintaxis común para enviar un comando al fondo y separarlo de la sesión de shell actual:nohup COMMAND & o nohup COMMAND >/dev/null 2>&1 & si desea suspender el archivo de información creado por nohup . Se proporcionan ejemplos de su uso básico aquí y aquí. También aquí se muestra cómo usarlo a través del comando ssh.

    • disown – similar a nohup pero es shell (zsh, ksh, bash) integrado; se usa para eliminar trabajos de la tabla de trabajos, o para marcar trabajos para que no se les envíe una señal SIGHUP si el shell principal la recibe (por ejemplo, si el usuario cierra la sesión). Aquí se proporciona un ejemplo de uso.

    • setsid – crea una sesión y establece el ID del grupo de procesos. Ejemplo de uso setsid "COMMAND" . Más ejemplos aquí.

  3. Usa el huponexit Opción de golpe:

    $ ./script.py > output.txt &
    [1] 7461
    $ shopt -s huponexit
    $ exit
    

    Referencia:

    • Cómo utilizar el control de trabajos de Bash para gestionar procesos en primer plano y en segundo plano en DigitalOcean
  4. Usar administradores de horarios como at y crontab :

    • at – ejecutar comandos en un momento posterior; at y batch leer comandos desde la entrada estándar o un archivo específico que se ejecutará en un momento posterior, usando /bin/sh . Ejemplo de uso:echo "COMMAND" | at now + 1 minute . Más ejemplos aquí.

    • crontab – programar trabajo de fondo periódico; es bien conocido para otros propósitos, pero puede especificar un momento determinado en el que su comando se ejecutará solo una vez. Aquí se proporciona una buena calculadora crontab.

  5. Cree el servicio del sistema e inícielo, consulte:

    • ¿Cómo ejecuto un solo comando al inicio usando systemd?
    • ¿Cómo ejecutar scripts al inicio?
Relacionado:¿La política apt-cache requiere sudo?
Ubuntu
  1. 5 formas de mantener las sesiones y los procesos SSH remotos en ejecución después de la desconexión

  2. ¿Mantener Ubuntu Server ejecutándose en una computadora portátil con la tapa cerrada?

  3. ¿Cómo mantener en ejecución un comando que comencé desde el Shell si cierro la sesión del Shell?

  4. Mantener viva la sesión SSH

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

Comando de pantalla de Linux:mantenga los procesos en ejecución a pesar de una conexión interrumpida

¿Cómo mantener abierta la terminal de Gnome después de que se cierra un programa?

Cómo mantener las sesiones SSH remotas en ejecución después de la desconexión

CentOS/RHEL:cómo ejecutar un script o comando cuando cualquier usuario cierra la sesión de ssh

Evite que la tarea de Linux que se está ejecutando actualmente se elimine después de cerrar la sesión de SSH

SSH:cómo incluir el comando -t en el archivo ~/.ssh/config