
Soy nuevo en Linux y probablemente esté haciendo una pregunta bastante básica. ¿Cómo ejecuto un programa continuo en Linux?
Básicamente, tengo un programa que busca continuamente el contenido de un sitio web. Este programa se estará ejecutando durante varios días. No tengo privilegios administrativos en la computadora en la que deseo ejecutar este programa y tampoco tengo acceso exclusivo a esta computadora, lo que significa que otros usuarios pueden iniciar sesión físicamente. Además, salvo que se produzca algún desastre incalculable, la computadora estará funcionando durante todo el tiempo que dure mi programa.
Sé que puedo ingresar mediante SSH a la máquina y ejecutar el programa. Sin embargo, esto no es deseable ya que necesitaría una segunda máquina para hacerlo (lo que en cierto modo anula el objetivo de lo que estoy haciendo), sin mencionar los problemas de tiempo de espera.
¿Hay alguna manera de ejecutar mi programa en la computadora de forma remota sin establecer una conexión de algún tipo después de iniciarlo?
Respuesta1
Si es algo que debe suceder a intervalos regulares, úselo cron
(por ejemplo, debe consultar el sitio web una vez cada hora, o una vez al día, o con mayor o menor frecuencia, pero aún no está definido de manera arbitraria).
Sin embargo... Es posible que desee ejecutar un comando en algún momento posterior en lugar de hacerlo.ahora mismo, para eso quieres usar el at
demonio, que te permite ejecutar un comando una vez en una fecha/hora posterior (como si fueran las 5 en punto y quisieras ir a casa, pero tienes un proceso de 4 horas que sería lo mejor). corre en medio de la noche y no vuelve a ocurrir).
Diré que se ha mencionado, úselo nohup
si desea ejecutarlo ahora mismo pero no desea volver a conectarse a esa sesión para verificarlo más tarde. Estoy para comprobarlo más tarde.screen
tmux
nohup
screen
tmux
Respuesta2
Necesitas hacer dos cosas:
- Ejecute el comando con
nohup
. Esto evita que la máquina remota finalice el comando cuando se desconecta - Ejecute el comando en segundo plano, agregando
&
. Esto no es estrictamente necesario, pero lo devolverá a un shell en lugar de bloquear el comando para que pueda desconectarse normalmente o hacer otras cosas.
Entonces para el comando command
:
nohup command &
Respuesta3
nohup
es definitivamente el camino correcto a seguir si puede ejecutar su programa sin interactuar con él: si escribe todos sus resultados y mensajes de error en un archivo al que puede acceder más tarde, por ejemplo. revise el nohup.out
archivo para ver los mensajes de error que dejó el programa mientras se ejecutaba (¡gracias por la corrección, Michael!)
Si necesita interactuar con el programa mientras se está ejecutando,Pantalla GNUpodría ser la mejor manera de hacerlo. Le permite crear una terminal virtual que permanece ejecutándose incluso después de cerrar sesión, junto con cualquier programa que haya iniciado en ella, siempre que nadie apague la computadora.Aquí hay un tutorialDescubrí al usarlo.