it-swarm-es.com

Inicie el programa en la pantalla después de reiniciar

Estoy ejecutando varias cajas Ubuntu 12.04 sin cabeza. Mi uso típico implica iniciar sesión en cada máquina a través de una sesión PuTTY y ejecutar un script usando la pantalla.

Después de iniciar sesión a través de PuTTY, ejecuto lo siguiente desde la línea de comandos: screen /home/user/"script"

Mi pregunta es:

¿Hay alguna forma de hacer que mi script/programa se ejecute automáticamente después de un reinicio? Estoy tratando de evitar una pérdida de productividad en una situación de pérdida de energía/reinicio automático.

3
user142219

Puedes usar cron para hacer esto por ti.

  • Simplemente haga crontab -e en la terminal
  • Se abrirá en el editor seleccionado, donde puede escribir
    @reboot <your command>
    (asegúrese de proporcionar la ruta completa para todos los ejecutables)
  • Guarda el archivo y cierra

Ref: http://manpages.ubuntu.com/manpages/precise/en/man5/crontab.5.html

4
Vishnu Kumar

La forma oficial de hacerlo es creando scripts de inicio. Estas secuencias de comandos tienen un comando de inicio, detención, reinicio y estado y se pueden configurar para ejecutar estos comandos en momentos específicos. Entonces, cuando cambie a leven 6 (reiniciar), detendrá el servicio antes de reiniciar y, si está configurado correctamente, ejecutará automáticamente el inicio en este script cuando cambie al nivel de ejecución 3. Puede encontrar estos scripts en /etc/init.d. Si crea el archivo correctamente (por lo que debe ser capaz de manejar un parámetro de inicio y de detención), puede ejecutar update-rc.d script.sh por defecto para configurarlo para que arranque automáticamente. Asegúrate de haber hecho chmod + x en el script primero para que sea ejecutable. La carpeta /etc/init.d contiene muchos ejemplos de cómo se hace esto.

También está el archivo /etc/rc.local, este archivo se ejecuta después de que el sistema se haya iniciado por completo y puede agregar sus propios comandos.

Personalmente, prefiero los scripts init.d porque puedes asegurarte de que el programa se cierre correctamente, evitando así posibles daños u otros errores. Pero para un comando, o algo que realmente no puede romper /etc/rc.local funcionará bien.

1
Cheiron

Modifique su script de tal manera que pueda ser invocado como un script de inicio o, mejor aún, un trabajo inicial. Con un poco de suerte, puede mantenerlo tal como está, y hacer que se ejecute en el arranque simplemente agregando una configuración inicial a /etc/init. (Tome cualquier archivo .conf pequeño como plantilla).

Debes tener en cuenta dos cosas:

  1. Su script se invoca con privilegios de root. Suéltelos para que su script se ejecute con los privilegios de usuario apropiados (su identidad de usuario, en este caso). Haga esto invocando el comando de pantalla final en su script usando su

    su -c "screen ..." - username.

  2. Cuando se inicia en el arranque, su script se ejecuta sin un terminal de control, mientras que actualmente lo ejecuta desde un Shell. Como utiliza screen Supongo que desea volver a conectarlo al terminal que ejecuta script en su próximo inicio de sesión. Si es así, esto puede requerir pasar opciones adicionales cuando invoque screen.

1
zwets

Tengo esto en el script para iniciar rtorrent en una pantalla en el momento del arranque:

#!/bin/sh

case $1 in
     start)
        su - johan -c "screen -dm rtorrent"
       ;;
     stop)
        killall rtorrent
        killall screen
        ;;
esac
exit 0

Puede combinar esto con la respuesta de Vishnus si prefiere crontab, <your command> = screen -dm /usr/home/"script".

1
McNisse

Intenté todo lo anterior, sin suerte. El script que estoy ejecutando necesita X para iniciarse.

Lo que finalmente funcionó, aunque puede haber sido la salida fácil, fue crear un pequeño script llamado launch.sh en mi directorio de inicio y agregarlo a la lista de aplicaciones de inicio de Ubuntu.

launch.sh contenía lo siguiente y ejecutó mi script desde dentro:

#!/bin/sh
screen -dmS 051 /home/{user}/{myscript} 

Descubrí que el archivo de configuración para la aplicación de inicio launch.sh estaba contenido en el archivo /home/{user}/.config/autostart/launch.sh.desktop y pude recrear ambos archivos en las mismas ubicaciones en mi otro cajas y recrear el éxito. Gracias a todos los que intentaron ayudar. Estoy sudando algunas balas menos después de haber descubierto una solución para esto.

0
user142219