Você deve primeiro simplificar seu alias, não há necessidade de fazer o material de ativação. O que é importante é a primeira linha, shebang, do script python. Deveria ler:
#!/path/to/your/virtualenv/bin/python
Se o script for executável ( chmod +x script_name
), a linha acima se certificará de que o python instalado no virtualenv seja chamado, e isso garante que os pacotes instalados no virtualenv sejam executados.
Você pode criar um alias para o script ou colocar o script em algum diretório que esteja em seu PATH.
No arquivo de serviço do systemd você deve usar o caminho completo para o script. Tal script poderia parecer:
[Unit]
Description=your program description
Requires=any services that need to be installed
After=run after this service
[Service]
Restart=always
ExecStart=/root/bin/application start
ExecStop=/root/bin/application stop
[Install]
WantedBy=multi-user.target
O texto acima assume que seu script python está em /root/bin/application
e que ele é iniciado se passado no argumento start
da linha de comando e quando chamado com stop
, de alguma forma a segunda invocação sabe como notificar o start
ed aplicativo e graciosamente desligado. Se você não tiver um ExecStop
systemd tentará parar / matar seu aplicativo, o que você pode pegar com um manipulador de sinal