Eu tenho um dispositivo IoT com uma distribuição Linux barebones nele. Não há crontab , chkconfig ou update-rc .
Como devo proceder para a execução de um script quando o dispositivo é iniciado, depois que tudo no dispositivo tiver sido carregado? Eu pensei em adicionar o script em /etc/init.d , mas nada parece acontecer. Este é o script que estou usando.
#! /bin/sh -e
# /etc/init.d/camstart
. /etc/init.d/functions.sh
start() {
/usr/local/packages/application/myapp
}
stop() {
kill 'pidof myapp'
kill 'pidof myappinternal'
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
pidof myapp
pidof myappinternal
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
esac
exit 0
Minha outra ideia foi usar /etc/rc.local , mas o dispositivo não tem esse arquivo. Tem rc?.d pastas variando de 1-6 e S. Colocar scripts em qualquer um deles não parece ter qualquer efeito.
Alguma sugestão?
EDIT: Não tenho certeza do que é a distro do Linux, mas verificar /etc/*release me diz que é baseado no Poky do Yocto Project. De /proc/version é a versão 4.9.62 do Linux.
Tanto quanto eu posso dizer, ele usa systemctl para iniciar systemd services.
EDIT2: Esqueceu de mencionar. Eu tentei escrever um systemd service para meu script e iniciá-lo usando systemctl start app , mas ele sai imediatamente com exit code 0 .
app.server:
[Unit]
Description=app
After=acap-pre.target
Requires=acap-pre.target
[Service]
Slice=extension-acap.slice
Type=oneshot
RemainAfterExit=yes
ExecStart=/etc/init.d/app start
ExecStop=/etc/init.d/app stop
EDIÇÃO FINAL: Funcionou depois de analisar Como escrever script de inicialização para systemd e viu que meu systemd service estava ausente
[Install]
WantedBy=multi-user.target