如何在我的 VPS 上自动运行程序?

如何在我的 VPS 上自动运行程序?

我目前拥有一台安装了 Centos7 的 VPS。我还有一个编程的“蒸汽机器人' 我想将它放到 VPS 上,并在 VPS 在线时始终自动运行。我不确定如何做到这一点,研究后从 /r/SteamBot subreddit 上的一篇文章中注意到,VPS 上需要 mono 才能实现这一点。不确定这是否属实,这让我来到这里。

答案1

首先让它“手动”运行。如果你还没有,请安装埃佩尔单核细胞增多症,并让机器人运行。您基本上需要编写一些可以启动命令并使其保持运行的内容。

  1. 编写一个 init 脚本来启动它。Centos 7 使用 systemd,它可以让您做一些很棒的事情,比如自动重启。我自己还没有深入研究过 systemd,但它的文档很齐全。

  2. 我通常使用的方法是主管。它不是系统级的。会在失败时重新启动,并且有一个可选的 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

这会记录错误,您可以添加一行来记录标准输出以进行故障排除。

  1. 如果它是一个非交互式应用程序,请将其添加到您的 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 ...

相关内容