Inicio automático de aplicaciones xorg
Si la secuencia de comandos que desea iniciar requiere una sesión xorg, entonces puede intentar seguir la especificación de inicio automático de freedesktop que podría o no funcionar según el entorno de escritorio que esté utilizando.
Alternativamente, puede orientar su entorno de escritorio específico como se describe en https://wiki.archlinux.org/index.php/autostarting .
Ejecutar un script como un servicio systemd
Si su script se ajusta a la descripción de un demonio o un 'servicio', y su sistema está ejecutando systemd, como es el caso de las linces raspbian y más modernas, entonces puede configurar su script para que se ejecute como un servicio systemd: esto proporciona un control granular sobre el ciclo de vida y el entorno de ejecución, así como las condiciones previas para (re) iniciar el script, como la red en funcionamiento. También es posible configurar el reinicio del servicio en caso de falla ( Restart=always
y retraso entre reiniciar, por ejemplo RestartSec=10
).
Para uso en todo el sistema, cree su archivo de unidad systemd en /etc/systemd/system
, por ejemplo, con vim /etc/systemd/system/autossh.service
:
[Unit]
Description=Autossh keepalive daemon
## make sure we only start the service after network is up
Wants=network-online.target
After=network.target
[Service]
## use 'Type=forking' if the service backgrounds itself
## other values are Type=simple (default) and Type=oneshot
Type=forking
## here we can set custom environment variables
Environment=AUTOSSH_GATETIME=0
Environment=AUTOSSH_PORT=0
ExecStart=/usr/local/bin/ssh-keep-alive.sh
ExecStop=/usr/bin/killall -9 autossh
### NOTE: you can have multiple `ExecStop` lines
ExecStop=/usr/bin/killall ssh
# don't use 'nobody' if your script needs to access user files
# (if User is not set the service will run as root)
#User=nobody
# Useful during debugging; remove it once the service is working
StandardOutput=console
[Install]
WantedBy=multi-user.target
Ver también:
Ahora estamos listos para probar el servicio:
systemctl start autossh
Comprobación del estado del servicio:
systemctl status autossh
Detener el servicio:
systemctl stop autossh
Una vez que haya verificado que el servicio funciona como se esperaba, habilítelo con:
systemctl enable autossh
NOTA: Por razones de seguridad systemd
, ejecutará el script en un entorno restringido, similar a cómo crontab
se ejecutan los scripts, por lo tanto, no haga suposiciones sobre las variables del sistema preexistentes. Use las Environment
teclas si su script necesita variables específicas para ser definidas. Agregar set -x
en la parte superior de su script bash y luego ejecutarlo systemctl status my_service
podría ayudar a identificar por qué su script falla. Como regla general de tumb, siempre use rutas absolutas para todo, incluyendo echo
y cat
, o defina explícitamente su $ PATH.
.xinitrc
o.xsession
archivo.