我目前拥有一台安装了 Centos7 的 VPS。我还有一个编程的“蒸汽机器人' 我想将它放到 VPS 上,并在 VPS 在线时始终自动运行。我不确定如何做到这一点,研究后从 /r/SteamBot subreddit 上的一篇文章中注意到,VPS 上需要 mono 才能实现这一点。不确定这是否属实,这让我来到这里。
答案1
首先让它“手动”运行。如果你还没有,请安装埃佩尔和单核细胞增多症,并让机器人运行。您基本上需要编写一些可以启动命令并使其保持运行的内容。
编写一个 init 脚本来启动它。Centos 7 使用 systemd,它可以让您做一些很棒的事情,比如自动重启。我自己还没有深入研究过 systemd,但它的文档很齐全。
我通常使用的方法是主管。它不是系统级的。会在失败时重新启动,并且有一个可选的 webui
你的监督脚本很简单
command=command to run steambot
directory=directory you want to run steambot in
autostart=true
startretries=5
stderr_logfile=/var/log/supervisor/ttrss/ttrss.err.log
user=www-data
这会记录错误,您可以添加一行来记录标准输出以进行故障排除。
- 如果它是一个非交互式应用程序,请将其添加到您的 crontab(否则会变得更加棘手)。@reboot 将启动它一次当你重新启动时,但其他方法更好,因为它们会在发生错误时记录并重新启动
答案2
最简单的就是写一个 systemd 服务。Systemd 的功能非常多,你又没有具体说明你想要什么,所以我就给你一个非常简单的脚本:
[Unit]
Description=Some comment here about what this does
After=network.target
[Service]
EnvironmentFile=-/path/to/flag/setting/file
ExecStart=/absolute/path/to/executable $FLAGS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
User=%i
Group=users
[Install]
WantedBy=multi-user.target
/path/to/flag/setting/file
如果是复杂的选择,则应在文件中设置 $FLAGS 变量,否则只需删除此行并用下面的行替换
ExecStart=/absolute/path/to/executable -i -f -d
或您需要的任何标志。以上内容应放入名为的文件中[email protected]
。这样就可以这样调用
systemctl [email protected]
并且可执行文件将以用户 MyName 的身份运行。您应该将上述文件放入/etc/systemd/user
,以便它作为用户服务而不是系统服务运行。这样做的好处是任何用户都可以运行它,而不仅仅是 root 用户。您可以随时使用 来控制它systemctl --user
。
如果你不关心其他用户是否能够运行该服务,请使用以下行
User=MyName
将文件保存在 中myservice.service
,并在不传递参数的情况下控制它,如下所示systemctl myservice ...