Ejecute el script al iniciar en el servidor AWS Ec2 Ubuntu 1404

Ejecute el script al iniciar en el servidor AWS Ec2 Ubuntu 1404

Necesito iniciar servicios como elasticsearch, kafka en el momento del arranque de la instancia Ec2

Probé @reboot en crontab pero algo va mal

Guión de Shell:

#!/bin/sh

nohup /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch &

Entrada de crontab:

@reboot sh /home/abhijeet/startServices.sh

No se donde me estoy equivocando

Respuesta1

cronejecuta shells en un entorno modificado con un mínimo PATHy presumiblemente /usr/binno está presente allí, por lo que /usr/bin/nohupno se encuentra.

Puede:

  • agregue /usr/binal PATH, en lugar de modificar el suyo crontab, debe agregar esto en la parte superior del script:

    #!/bin/sh
    export PATH="$PATH":/usr/bin
    nohup /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch &
    
  • Utilice la ruta absoluta para nohup:

    #!/bin/sh
    /usr/bin/nohup /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch &
    

Tenga en cuenta que, según la crontabentrada, está ejecutando el script como argumento para sh( dash) mientras tiene exactamente el mismo asunto. En este caso, esto no hace ninguna diferencia, pero tenga cuidado si el asunto es diferente. Por lo general, uno haría que el script fuera ejecutable y usaría shebang para indicar el intérprete deseado.


Ahora,la parte más importante. cronejecuta todos los trabajos dados en sus respectivos subcapas y genera estos subcapas en paralelo (sin bloqueo), es decir, ejecuta trabajos de manera paralela. Por lo tanto, no necesita el nohupfondo y ( &), solo hágalo (según su ejemplo, /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearches ejecutable):

@reboot /home/ubuntu/elasticsearch-2.3.4/bin/elasticsearch

información relacionada