Saltar al contenido

¿Cómo hacer que un archivo jar se ejecute al inicio y cuando cierre la sesión?

Solución:

Aquí hay una manera fácil de hacerlo usando SysVInit. Instrucciones:

  1. Cree el script de inicio y finalización de su aplicación. Ponlo en algún directorio, en nuestro ejemplo es:

    • Iniciar guion: /usr/local/bin/myapp-start.sh
    • Detener secuencia de comandos: /usr/local/bin/myapp-stop.sh

    Cada uno proporcionará las instrucciones para ejecutar / detener la aplicación. Por ejemplo, el myapp-start.sh El contenido puede ser tan simple como lo siguiente:

    #!/bin/bash
    
    java -jar myapp.jar 
    

    Para el script de detención, puede ser algo como esto:

    #!/bin/bash
    # Grabs and kill a process from the pidlist that has the word myapp
    
    pid=`ps aux | grep myapp | awk '{print $2}'`
    kill -9 $pid
    
  2. Cree el siguiente script (myscript) y ponlo /etc/init.d.

    /etc/init.d/myscript contenido:

    #!/bin/bash
    # MyApp
    #
    # description: bla bla
    
    case $1 in
        start)
            /bin/bash /usr/local/bin/myapp-start.sh
        ;;
        stop)
            /bin/bash /usr/local/bin/myapp-stop.sh
        ;;
        restart)
            /bin/bash /usr/local/bin/myapp-stop.sh
            /bin/bash /usr/local/bin/myapp-start.sh
        ;;
    esac
    exit 0
    
  3. Ponga el script para comenzar con el sistema (usando SysV). Simplemente ejecute el siguiente comando (como root):

    update-rc.d myscript defaults 
    

PD: Sé que Upstart es genial y bla bla, pero prefiero el antiguo sistema de inicialización SysV.

¡Sí! Es posible. 🙂 Advenedizo es el camino a seguir para asegurarse de que el servicio siga funcionando. Tiene cinco paquetes, todos instalados por defecto:

  • Upstart init demonio y utilidad initctl
  • upstart-logd proporciona el demonio logd y el archivo de definición de trabajos para el servicio logd
  • upstart-compat-sysv proporciona archivos de definición de trabajos para las tareas rc y las herramientas de reinicio, nivel de ejecución, apagado y telinit que brindan compatibilidad con SysVinit
  • startup-tasks proporciona archivos de definición de trabajos para las tareas de inicio del sistema
  • system-services proporciona archivos de definición de trabajos para servicios tty

El aprendizaje es muy agradable y merece la pena. Upstart tiene un sitio web: http://upstart.ubuntu.com/

3 sugerencias rápidas …

  1. Crear un Sguión tarta en /etc/rc3.d (modo de consola multiusuario) con el correspondiente Kmalos guiones en /etc/rc.0 y /etc/rc6.d para matar su programa Java de forma controlada cuando el sistema se apaga (nivel de ejecución 0) o se reinicia (nivel de ejecución 6) Consulte Introducción a los niveles de ejecución.

    Es posible que pueda iniciar su aplicación Java en el nivel de ejecución 2 (rc2.d) pero, como rastreador, necesitará TCP / IP. Así que asegúrese de que su servicio de red esté disponible / iniciado en su nivel de ejecución 2 de antemano. Definitivamente, la creación de redes está en el nivel de ejecución 3.

    /etc/init.d contiene todos los scripts de inicio / finalización reales. /etc/rcN.d Los directorios solo contienen enlaces a ellos, con el prefijo S o K para iniciarlos o eliminarlos respectivamente, por nivel de ejecución N.

  2. Un proceso dirigido por crond debe persistir entre cierres de sesión. Tal vez lo agregue a su crontab.

  3. Un proceso ejecutado con nohup también debe persistir. Vea nohup: ejecute un comando incluso después de cerrar la sesión.

    $ nohup java -jar myapp.jar &
    

    Por defecto, myapp.jarLa salida estándar irá a un archivo llamado ./nohup.out, o $HOME/nohup.out si el primero no se puede escribir.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *