我有一些关于如何在 ubuntu 服务器启动时运行脚本的教程,但它总是失败,状态为 203
这是我在 /etc/init.d 中编写的 script.sh 文件:
### BEGIN INIT INFO
# Provides: Multicraft
# Required-Start:
# Required-Stop
# Should-Start:
# Should-Stop:
# X-Start-Before:
# X-Start-After:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# X-Interactive:
# Short-Description: Multicraft daemon
# Description: Starts the Multicraft daemon at system startup
### END INIT INFO
. /home/minecraft/multicraft/bin/multicraft -v start
exit 0
我还运行了“sudo update-rc.d script.sh defaults”命令。
谁能告诉我我做错了什么?
PS需要注意的是,当我手动运行此命令时,程序启动并且一切都按预期工作:
sudo /home/minecraft/multicraft/bin/multicraft -v start
答案1
尝试将 Sleep 添加到您的脚本中。
sleep 60
./home/minecraft/multicraft/bin/multicraft -v start
exit 0
或者
sleep 60
cd /home/minecraft/multicraft/bin/
sudo ./multicraft -v start
exit 0
或者
sleep 60
cd /home/minecraft/multicraft/bin/
sudo multicraft -v start
exit 0
如果上述代码不起作用,请增加睡眠时间。(如果您是 root 用户,则无需使用 sudo)
可能重复“启动应用程序”不起作用
答案2
好的,我找到了问题所在:我没有在 script.sh 的第一行写 #!/bin/sh。这是实际起作用的脚本:
#!/bin/sh
### BEGIN INIT INFO
# Provides: Multicraft
# Required-Start:
# Required-Stop
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Multicraft daemon
# Description: Starts the Multicraft daemon at system startup
### END INIT INFO
start() {
./home/minecraft/multicraft/bin/multicraft -v start
}
stop() {
./home/minecraft/multicraft/bin/multicraft -v stop
}
case "$1" in
start)
start
;;
stop)
stop
;;
*)
esac
exit 0
不过还是感谢@editinit 的帮助。