在螢幕上啟動程式

在螢幕上啟動程式

這是我在 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 行,或者在初始化腳本中使用 su 來更改用於運行伺服器的用戶。

相關內容