Como você está executando o Ubuntu 16.04, que por padrão usa systemd
, você deve escrever uma unidade de serviço systemd
para controlar o comportamento de inicialização do seu aplicativo.
Um arquivo% unitsystemd
simples é semelhante ao seguinte, assumindo que mono
esteja em /usr/bin/mono
, pois a linha ExecStart
deve começar com um caminho absoluto.
Salve isso em /etc/systemd/system/my-mono-app.service
.
[Unit]
Description=my mono app
# If the service relies on network uncomment the next line.
#After=network.target
[Service]
Type=Simple
ExecStart=/usr/bin/mono /home/yahniukov/Documents/programs/my_programs/game_backup/backup.exe <your-parameters>
[Install]
WantedBy=multi-user.target
Você adicionou "$@"
, o que significa que alguns parâmetros foram passados para o seu comando, portanto, é necessário substituir <your-parameters>
pelos realmente usados.
Você também pode usar o systemd
options Environment
ou EnvironmentFile
para armazenar isso. Para mais informações, dê uma olhada nas páginas man systemd.unit
, systemd.service
e systemd.exec
.
Depois de criar o arquivo, execute o comando da seguinte maneira para informar systemd
de que houve uma alteração.
systemctl daemon-reload
Agora você deve poder controlar o serviço da seguinte maneira. Para uma descrição completa, consulte man systemctl
.
systemctl status my-mono-app
systemctl start my-mono-app
systemctl stop my-mono-app
systemctl restart my-mono-app
Para ativar o serviço como inicialização, você precisa digitar o comando da seguinte forma.
systemctl enable my-mono-app
Dependendo do comportamento do seu script e aplicativo, pode ser necessário alterar a Type=simple
part para oneshot
ou forking
. Não que você tenha que executar systemctl daemon-reload
depois de ter feito alterações no arquivo my-mono-app.service
para obter as alterações.