我有一个 TeamSpeak3 服务器的启动脚本,在/etc/init.d
启动时运行。
#! /bin/sh ### 开始初始化信息 # 提供:ts3 # 必需启动:$network mysql # 必需停止:$network # 默认开始:2 3 4 5 # 默认停止:0 1 6 # 简短描述:TeamSpeak3 服务器守护进程 # 描述:启动/停止/重新启动 TeamSpeak 服务器守护程序 ### 结束初始化信息 设置-e PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="TeamSpeak3 服务器" 名称=teamspeak3-服务器 用户=teamspeak3 DIR=/opt/teamspeak3-server 选项=inifile=ts3server.ini DAEMON=$DIR/ts3server_startscript.sh #PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME # 如果包已被删除,则优雅退出。 测试-x $DAEMON ||出口0 睡觉2 sudo -u $USER $DAEMON $1 $OPTIONS
我需要这样的事情发生:
- 运行立即退出的脚本
./MyScript
,位于 TS3 目录中 - 等一段时间
- 运行将保持运行的实际守护进程
我不太擅长 Unix 脚本,我只需要用它来运行一个服务器。我还可能提到我正在运行最新的 Ubuntu。
感谢您的帮助,krejcar25
答案1
DAEMON
很简单,只需在脚本最后一行中运行 TS3 的命令之前运行它,然后将sleep
命令设置为 5 秒,例如,脚本将如下所示:
#! /bin/sh
### BEGIN INIT INFO
# Provides: ts3
# Required-Start: $network mysql
# Required-Stop: $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: TeamSpeak3 Server Daemon
# Description: Starts/Stops/Restarts the TeamSpeak Server Daemon
### END INIT INFO
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="TeamSpeak3 Server"
NAME=teamspeak3-server
USER=teamspeak3
DIR=/opt/teamspeak3-server
OPTIONS=inifile=ts3server.ini
DAEMON=$DIR/ts3server_startscript.sh
#PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0
sleep 2
#####################################################
$DIR/MyScript
sleep 5
#####################################################
sudo -u $USER $DAEMON $1 $OPTIONS
var$DER
引用 TS3 服务目录/opt/teamspeak3-server