Ejecutar .sh al arrancar

Ne0x

Hola, resulta que algo tan simple me está costando sudor y lágrimas.

Resulta que quiero lanzar una aplicación al iniciar la RPI. He creado el siguiente .sh:

#!bin/bash
cd /home/pi/carpetaAPP
screen -d -m -S nombrepantalla ./aplicación

Bien, si la ejecuto yo a mano con bash funciona perfectamente, el problema viene que no consigo hacer que se ejecute al arrancar. He probado modificando el rc.local y en crontab -e y nada.

Alguien puede ayudarme? Gracias

saldelarueda

Falta una barra /

1 respuesta
Zuniels

#!/bin/bash

Ne0x

#2 pero si ejecuto yo el sh funciona bien :s

1 respuesta
saldelarueda

#4 Cómo ejecutar?? sh archivo.sh? ./archivo.sh? Punto barra archivo.sh si tiene permiso +x

1 respuesta
Markitos_182

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-unit_files

Ne0x

#5 bash /home/pi/start.sh funciona ok

Lo intento meter para que se ejecute al arrancar y nada. Ni por rc.local ni por crontab

1 respuesta
saldelarueda

#7 Quién es dueño de archivo.sh; root? pi?

1 respuesta
Ne0x

#8 root

1 respuesta
saldelarueda

#9 Mira aquí: https://raspberrypi.stackexchange.com/questions/8734/execute-script-on-start-up instrucciones específicas para miniordenador rpi

willy_chaos

Te falta la barra de #!/bin/bash

si tu lo ejecutas a mano y lo haces usando bash aplicacion.sh es normal que te funcione. Esa cabecera indica que programa ha de usar, si tu ya ejecutas el programa bash y le pasas como parámetro el script le dara igual

Diferente es como lo estas ejecutando en el screen, lo estas haciendo con ./app.sh y ahi, si que ira a buscar la primera linea y ver con que interprete lo ha de ejecutar. Si esta mal escrito, no entenderá que programa ha de usar.

Opcion 1 - Arreglar la barra
Opcion 2 - screen -d -m -S nombrepantalla bash aplicación.sh

Luego para ejecutar un programa al inicio del sistema tienes varias opciones

  • Escribir la entrada del programa en el /etc/inittab
  • Escribir en el /etc/rc.local el comando que has escrito del screen
  • Crear un script en los /etc/init.* para iniciar al entrar en un runlevel
Ne0x

Muchas gracias por la ayuda, estuve un rato peléandome pero no he conseguido nada.

Arreglé la barra y tanto en rc.local como en crontab me ignora al bootear xD.

También probé a obviar el .sh que lanza la app y escribir la línea directamente en rc.local o crontab poniendo:

screen -d -m -S nombrepantalla /home/pi/appFolder/app

o con @reboot delante en crontab.

Luego en casa le meto format a la rpi y empiezo desde 0 y probaré también añadir el script en init.d

1 respuesta
Beric

#12 Solo por curiosidad de pi-user que soy, que intentas lanzar ?

1 respuesta
Ne0x

#13 una aplicación que comprueba pings de una lista de ips cada x segundos.

1 respuesta
Ivan69

#14 es posible que se ejecute antes de que la network este up. Lo mas facil añadir sleep o que se ejecute cuando el adaptador este up. Aunque tal vez no sea eso.

fercalbla

#1 Puedes conseguir el trozo de log del fichero /var/log/syslog donde aparece la ejecución del cron? Eso ayudaria bastante para saber que esta pasando. Con un "grep CRON /var/log/syslog" deberias de poder obtenerlo.

garlor

lo primero que tienes que saber es si el script realmente se ejecuta o no, para ello lo mas sencillo es al principio del script poner un mkdir /a o touch /a
con esto sabras si el script se ejecuta, pero no hace lo que quieres, o no se ejecuta, esto es muy importante cuando quieres ejecutar cosas en el bootup/shutdown, porque puedes obtener resultados diferentes que si los ejecutas cuando el sistema operativo esta totalmente arrancado

prueba a meterlo en el /etc/bashrc

Usuarios habituales

  • garlor
  • Ne0x
  • Beric
  • willy_chaos
  • saldelarueda
  • Markitos_182
  • Zuniels

Tags