Как запустить моно приложение при запуске с правами root?

Недавно я написал программу с помощью 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 "$@"

эта ссылка

0
задан 20 January 2018 в 14:34

2 ответа

Поскольку вы используете 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, чтобы получить изменения.

0
ответ дан 17 July 2018 в 22:36

Поскольку вы используете 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, чтобы получить изменения.

0
ответ дан 24 July 2018 в 13:13
  • 1
    Помимо ответа Томаса, если ваше приложение использует относительный путь, который вы должны добавить после строки ExecStart: WorkDirectory = {path of your exe} – Luidgi Gromat 9 May 2018 в 05:11

Другие вопросы по тегам:

Похожие вопросы: