开机时通过屏幕启动程序

开机时通过屏幕启动程序

这是我在 init.d 中的脚本(Debian Linux)

#! /bin/sh
# /etc/init.d/blah
#

# Some things that run always
touch /var/lock/McMyAdmin

# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting McMyAdmin "
screen -dmS Minecraft
sleep 2
screen -S Minecraft -X stuff "bash /opt/McMyAdmin/start.sh"`echo -ne '\015'`
;;
stop)
echo "Stopping McMyAdmin"
screen -S Minecraft -X stuff "\quit"`echo -ne '\015'`
;;
*)
echo "Usage: /etc/init.d/McMyAdmin {start|stop}"
exit 1
;;
esac

exit 0

我的问题是,启动屏幕会话后,什么都没有发生。如果我逐行输入,它会正常工作,但在脚本中什么都不起作用。它创建了屏幕会话,但没有向其发送任何命令。我做错了什么?

答案1

您必须先 cd 到 McMyAdmin 安装目录,然后才能运行它。您不能从其他目录运行其 start.sh 脚本。

改变:

screen -S Minecraft -X stuff "bash /opt/McMyAdmin/start.sh"`echo -ne '\015'`

cd /opt/McMyAdmin/
screen -S Minecraft -X stuff "sh start.sh"`echo -ne '\015'`

另外,将 McMyAdmin 放在 /opt/ 中并以 root 身份运行它并不是一个好主意。相反,您应该为其创建一个用户,并在该用户的 crontab 中使用 @reboot 行,或者在 initscript 中使用 su 来更改用于运行服务器的用户。

相关内容