答案1
由于您正在运行默认使用的 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.unit
、systemd.service
和systemd.exec
。
创建文件后,执行以下命令来告知systemd
发生了更改。
systemctl daemon-reload
现在您应该能够按如下方式控制该服务。有关完整说明,请参阅man systemctl
。
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
才能获取更改。