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.