我将尝试在Ubuntu服务器启动时运行一个shell脚本和一个命令。
这是我的CRON:
问题在于,如果我从目录
如果我重新启动,
我尝试了多种方法,但都没有成功,最后一件我改变的事情是在
我不确定是否有办法让
这是我的CRON:
@reboot /home/steam/check.sh
@reboot screen -d -S up -m node /var/www/html/Up1/server/server.js
我在日志中看到的内容是:
grep CRON /var/log/syslog
Jul 19 19:48:28 vc1s cron[3185]: (CRON) INFO (pidfile fd = 3)
Jul 19 19:48:28 vc1s cron[3185]: (CRON) INFO (Running @reboot jobs)
Jul 19 19:48:28 vc1s CRON[3209]: (root) CMD (screen -d -S up -m node /var/www/html/Up1/server/server.js)
Jul 19 19:48:28 vc1s CRON[3211]: (root) CMD (/home/steam/check.sh)
Jul 19 19:51:20 vc1s cron[3779]: (CRON) DEATH (can't lock /var/run/crond.pid, otherpid may be 3185: Resource temporarily unavailable)
Jul 19 19:55:01 vc1s CRON[3996]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
我的check.sh
脚本。
#!/bin/bash
until screen -d -S unturned -m /home/steam/start.sh; do
echo "Server 'myserver' crashed with exit code $?. Respawning.." >&2
sleep 1
done
这是我的start.sh
文件,用于启动Unturned游戏服务器。我认为这个脚本不是很重要,但我想我应该向您展示。
#!/bin/bash
# This script starts a Unturned 3 server on Linux machines
# Syntax: start.sh <instance name>
# Author: fr34kyn01535
#CONFIG
INSTANCE_NAME=1
STEAMCMD_HOME="./steamcmd"
UNTURNED_HOME="./unturned"
#COLORS
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLLOW='\033[0;33m'
NC='\033[0m'
#Steam checks
STEAMCMD_API=$STEAMCMD_HOME/linux32/steamclient.so
UNTURNED_API=$UNTURNED_HOME/Unturned_Data/Plugins/x86/steamclient.so
printf "Steam: "
if [ -f $STEAMCMD_API ]; then
if diff $STEAMCMD_API $UNTURNED_API >/dev/null ; then
printf "${GREEN}UP TO DATE${NC}\n\n"
else
cp $STEAMCMD_API $UNTURNED_API
printf "${YELLLOW}UPDATING${NC}\n\n"
fi
else
printf "${RED}NOT FOUND${NC}\n\n"
fi
cd $UNTURNED_HOME
if [ -f RocketLauncher.exe ]; then
ulimit -n 2048
mono RocketLauncher.exe $INSTANCE_NAME
else
echo "RocketLauncher not found."
fi
问题在于,如果我从目录
/home/steam
执行./check.sh
,它可以正常工作。但当我重新启动我的VPS时,@reboot
就会失效。如果我重新启动,
screen -list
不会显示任何内容。我尝试了多种方法,但都没有成功,最后一件我改变的事情是在
screen
命令中添加了 -d
参数,这样服务器就不需要一个 终端
来写下启动信息。我不确定是否有办法让
@reboot
正常工作。
如何让我的脚本在开机时运行?除了CRON
的@reboot
,还有其他替代方法吗?
提前感谢您的帮助。
sleep 60;
,但仍未奏效。我还尝试了@reboot root /home/steam/check.sh
。 - Jose Serodiosystemd
的内容,但您介意详细解释一下并聚焦于我的问题吗?我感觉在这个领域里太迷茫了。 - Jose Serodio