Como posso fazer o Debian executar um script python na inicialização?

Como posso fazer o Debian executar um script python na inicialização?

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-daemonbiná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.dcomando 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/skeletonscript foi substituído pelo script de exemplo na init-d-script(5) página de manual, que mais tarde em 2018 se tornou oapenasbase disponível quando /etc/init.d/skeletonfoi eliminada completamente. O conteúdo do esqueleto também mudou significativamente, não precisando mais de pessoas para escrever chamadas start-stop-daemonou 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 ExecStartconfiguração. Você pode querer, embora a pergunta não especifique de uma forma ou de outra, usar uma Userconfiguraçã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' USERem /etc/rc.local.

informação relacionada