无法理解如何在系统启动时自动运行命令

无法理解如何在系统启动时自动运行命令

我一直在阅读有关如何在 Linux 上运行@startup 脚本的大多数顶级结果。

我一直在运行一个用于视频游戏的家庭服务器,我想自己创建一些东西。

不确定它叫什么。不过,我们将其称为脚本以供参考。

我希望能够创建一个脚本,可以在我的 Linux 服务器更新和/或重新启动时运行某些命令。

它似乎经常这样做(我认为这是件好事)

目前,我为一款名为 Terraria 的游戏创建了一个 config.txt 文件。此 txt 文件包含游戏开始时应使用的世界和游戏设置。它还设置了一条规则,即当无法找到所述世界时,将使用某些参数自动创建一个新世界。

- - 描述 - -

因此我使用以下命令创建了一个文件:

touch startup.sh

我已经在游戏文件所在的同一文件夹中创建了脚本

这是在 startup.sh 文件中写的内容:

#!/bin/sh
@reboot screen -S Terraria ./TerrariaServer.bin.x86_64 -config serverconfig.txt

当我删除@reboot时,我可以执行命令./startup.sh,它会打开一个名为Terraria的屏幕并使用其配置规则运行游戏。

我找不到一个简单的解释来说明如何在启动时运行命令

我非常确定这归结为正确的搜索,我相信我所寻找的任何地方都已经写在某处了。

答案1

#!/bin/bash属于 bash 脚本。 @reboot属于 crontab。

您可以尝试使用 crontab 看看它是否可以运行您想要的程序。

为了添加一个 cronjob,您需要运行crontab -e然后将您的作业添加到文件末尾,您需要的行将如下所示;

@reboot screen -S Terraria /path/to/the/server/folder/TerrariaServer.bin.x86_64 -config serverconfig.txt

答案2

[Unit]
Description=Terraria Server

[Service]
Type=simple
WorkingDirectory=/home/terraria/
ExecStart=screen -S Terraria ./TerrariaServer.bin.x86_64 -config serverconfig.txt nogui
User=Terraria
Restart=on-failure

[Install]
WantedBy=multi-user.target
  • 将 WorkingDirectory 更改为您想要的。我猜是
  • 我从您的示例中使用的命令。
  • 另存为/etc/systemd/system/terraria.service
  • 您可以向其中添加诸如套接字之类的东西,以便可以向服务发送命令。

控制:

sudo systemctl start|stop|restart terraria  # Starts/stops/restarts
sudo systemctl status terraria  # shows the status of the service
sudo journalctl -u terraria -f   # shows the server log

您遇到问题的部分是:您在启动时启用或禁用服务......

sudo systemctl enable terraria.service
sudo systemctl disable terraria.service

相关内容