화면으로 부팅 시 프로그램 시작

화면으로 부팅 시 프로그램 시작

다음은 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

실행하기 전에 McMyAdmin 설치 디렉터리로 CD를 이동해야 합니다. 다른 디렉터리에서는 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/에 넣고 루트로 실행하는 것은 좋은 생각이 아닙니다. 대신에 해당 사용자를 생성하고 해당 사용자 crontab에서 @reboot 라인을 사용하거나 initscript에서 su를 사용하여 서버를 실행하는 데 사용할 사용자를 변경해야 합니다.

관련 정보