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


0

我目前拥有安装了Centos7的VPS。我也有一个编程' Steambot '我想把VPS放到VPS上并让它在VPS上线时自动运行。我不知道如何做到这一点,研究并注意到/ r / SteamBot subreddit上的帖子,VPS上需要单声道才能实现这一点。不确定是否真实,这使我来到这里。

Answers:


0

首先让它“手动”运行。如果您还没有,请安装 EPEL ,让机器人工作。你基本上需要编写一些能够启动命令并保持运行的东西。

  1. 编写一个init脚本来启动它。 Centos 7使用systemd,它可以让你做一些像自动重启这样的东西。我自己并没有潜入systemd,但它有很好的记录。

  2. 我通常使用的方法是 supervisord 。它不是系统级别。将在失败时重新启动,并具有可选的webui

你的supervisord脚本就像这样简单

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将启动它 一旦 当你重新启动时,其他方法更好,因为他们记录并重新启动时出错

对于CentOS 7,编写systemd .service可能更容易
grawity

我还不熟悉它。这肯定是最好的选择。
Journeyman Geek

0

最简单的方法是编写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

应在文件中设置$ FLAGS变量 /path/to/flag/setting/file,如果它是一个复杂的选择,否则只需删除此行并替换下面的行

  ExecStart=/absolute/path/to/executable -i -f -d

或者你需要的任何标志。上面应该放入一个名为的文件中 myservice@.service。这种方式可以称为

  systemctl myservice@MyName.service  

并且可执行文件将以用户MyName身份运行。您应该将上面的文件放入 /etc/systemd/user,以便它作为用户服务运行,而不是系统服务。这样做的好处是任何用户都可以运行它,而不仅仅是root。你可以随时控制它 systemctl --user

如果您不关心其他用户是否能够运行该服务,请使用该行

     User=MyName

保存文件 myservice.service,并控制它而不传递参数,如 systemctl myservice ...

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.