Tenho este script na minha pasta pessoal (pi): server.py.
Como eu poderia fazer o Debian executar esse script na inicialização para não precisar fazer login e executá-lo manualmente?
Responder1
No momento em que esta resposta foi escrita pela primeira vez, o Debian (como instalado por padrão) usava scripts rc "SysV" com o start-stop-daemon
binário. Havia um script de exemplo, no arquivo /etc/init.d/skeleton
, que poderia servir de base para o script rc. Uma vez que alguém tenha seu script rc e ele seja marcado como executável, o update-rc.d
comando poderá ser usado para adicioná-lo aos níveis de execução desejados.
Com o passar dos anos, as coisas mudaram. Em 2014, em particular, duas coisas mudaram:
- O
/etc/init.d/skeleton
script foi substituído pelo script de exemplo nainit-d-script
(5) página de manual, que mais tarde em 2018 se tornou oapenasbase disponível quando/etc/init.d/skeleton
foi eliminada completamente. O conteúdo do esqueleto também mudou significativamente, não precisando mais de pessoas para escrever chamadasstart-stop-daemon
ou mesmo escrever muito mais do que algumas atribuições de variáveis. (Verhttps://unix.stackexchange.com/a/480897/5132.) - O padrão instalado mudou para systemd e, em vez disso, foi necessário escrever arquivos de unidade de serviço systemd (que não precisavam ser marcados como executáveis) e habilitá-los com
systemctl enable
. No entanto, não houve nenhum arquivo de unidade de exemplo. (Verhttps://github.com/systemd/systemd/issues/10572.)
Portanto, a partir de 2018, você precisará escrever um arquivo de unidade de serviço systemd que (no mínimo) nomeie seu script (usando um nome de caminho absoluto) em uma ExecStart
configuração. Você pode querer, embora a pergunta não especifique de uma forma ou de outra, usar uma User
configuração para que o script seja executado sob a égide de sua conta de usuário e não do superusuário. E vocêpoder, novamente dependendo de coisas não especificadas na pergunta, é necessário coordenar a ordem relativa de invocação do seu script e a montagem (automática) do seu diretório inicial, se ele for montado separadamente.
Responder2
Coloque su -c 'SCRIPT' USER
em /etc/rc.local
.