Недавно я написал программу с помощью Mono.
У меня Ubuntu 16.04.
Я уже пробовал использовать «/etc/rc.local» (после этой ссылки и это)
/etc/rc.local:
#!/bin/sh -e
sudo game_backup.sh "$@" &
exit 0
/usr/local/bin/game_backup.sh:
#!/bin/bash
cd /home/yahniukov/Documents/programs/my_programs/game_backup
sudo mono ./backup.exe "$@"
Поскольку вы используете Ubuntu 16.04, который по умолчанию использует systemd, вы должны написать сервисный модуль systemd для управления стартовым поведением вашего приложения.
Простой файл systemd выглядит как как предполагается, предполагается, что mono находится в /usr/bin/mono, так как строка ExecStart должна начинаться с абсолютного пути. Сохраните это в /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
Вы добавили "$@", что означает, что некоторые параметры переданы вашей команде, поэтому вы должны заменить <your-parameters> на фактически используемые. Вы также можете использовать опции systemd Environment или EnvironmentFile, чтобы сохранить это.
После создания файла выполните следующую команду, чтобы сообщить systemd, что существует изменить.
systemctl daemon-reload
Теперь вы должны иметь возможность управлять службой следующим образом. Для полного описания см. [F21].
systemctl status my-mono-app
systemctl start my-mono-app
systemctl stop my-mono-app
systemctl restart my-mono-app
Чтобы включить службу как запуск, вам необходимо ввести команду следующим образом:
systemctl enable my-mono-app
В зависимости от поведения вашего скрипта и приложения, возможно, потребуется изменить часть Type=simple на oneshot или forking. Не нужно запускать systemctl daemon-reload после того, как вы внесли изменения в файл my-mono-app.service, чтобы получить изменения.
Поскольку вы используете Ubuntu 16.04, который по умолчанию использует systemd, вы должны написать сервисный модуль systemd для управления стартовым поведением вашего приложения.
Простой файл systemd выглядит как как предполагается, предполагается, что mono находится в /usr/bin/mono, так как строка ExecStart должна начинаться с абсолютного пути. Сохраните это в /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
Вы добавили "$@", что означает, что некоторые параметры переданы вашей команде, поэтому вы должны заменить <your-parameters> на фактически используемые. Вы также можете использовать опции systemd Environment или EnvironmentFile, чтобы сохранить это.
После создания файла выполните следующую команду, чтобы сообщить systemd, что существует изменить.
systemctl daemon-reload
Теперь вы должны иметь возможность управлять службой следующим образом. Для полного описания см. [F21].
systemctl status my-mono-app
systemctl start my-mono-app
systemctl stop my-mono-app
systemctl restart my-mono-app
Чтобы включить службу как запуск, вам необходимо ввести команду следующим образом:
systemctl enable my-mono-app
В зависимости от поведения вашего скрипта и приложения, возможно, потребуется изменить часть Type=simple на oneshot или forking. Не нужно запускать systemctl daemon-reload после того, как вы внесли изменения в файл my-mono-app.service, чтобы получить изменения.