2011-12-11 3 views
2

리눅스 컴퓨터에서 Bukkit (Minecraft) 서버를 실행 중이고 서버의 stop 명령을 사용하여 서버를 정상적으로 종료하고 컴퓨터가 특정 시간에 일시 중단되도록하려면 pm-suspend을 명령 줄에서 사용하십시오. . 여기에 내가있어 무엇 :bash의 버퍼 파이프

[email protected]~/dir$ perl -e 'sleep [time]; print "stop\\n";' | ./server && sudo pm-suspend 

(. 내가 /etc/sudoers에 의해 편집 한 그래서 내가 일시 중단 할 때 비밀번호를 입력 할 필요가 없습니다)

것은이의 perl -e 동안 자고있다, (.. 내가 뭔가를 오해 할 수 그건 내 추측) 서버는, 바이트의 일정한 흐름을 기대하고 그래서이 귀중한 자원을 차지 수신의 속삭임을 모두 출력합니다 : 그러한 일이 있습니까

[email protected]~/dir$ ... 
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>... 

을 버퍼링 된 파이프로? 그렇지 않은 경우 지연된 입력을 스크립트에 보내는 방법이 있습니까?

+1

이 동작은 bukkit 서버가 표준 입력이 터미널에 연결될 것으로 기대하기 때문일 수 있습니다. 리디렉션하면이 가정이 깨집니다. – user688996

답변

2

영구적으로 실행되는 서버에 대해 init script을 권장하는 Bukkit's wiki을보고 싶을 수 있습니다.

이 init 스크립트는 실행중인 서버와 통신하는 데 비 전통적인 방식을 사용합니다. 서버가 screen 세션에서 시작되면 모든 명령이 화면을 통해 서버 콘솔로 전송됩니다 (예 :

screen -p 0 -S $SCREEN -X eval 'stuff \"stop\"\015'

https://github.com/Ahtenus/minecraft-init/blob/master/minecraft

이 방법은 그 bukkit 따라서 자동 실행을 위해 (자체 단말 에뮬레이터이다) 화면 래퍼 요구 단말기에 부착 될 표준 입력을 예상 할 수있다 제안 참조.