2014-09-05 2 views
2

이 질문에 대한 대답은 bash - running remote script from local machine인데 sudo와 관련된 원격 명령을 어떻게 사용할 수 있습니까? 나는 내 서버가 성공적으로 다시 시작되었다는 메시지를 받았기 때문에 그것이 작동하고 있다고 생각하여 답변을 선택했습니다. 하지만 오늘은 서버가 실제로 재시작되지 않고 어떤 이유로 든 살해당하는 것을 보았습니다.sudo가있는 bash 원격 명령이 작동하지 않습니다.

것들 내가이 명령을 처음 실행했을 때 내가했던이 :

Restarting openerp-server: Stopping openerp-server: openerp-server. 
Starting openerp-server: openerp-server. 
Connection to host.com closed. 

그래서 그래, 나는이 모든 것이 좋은 줄 알았는데 :

ssh [email protected] -t 'sudo /etc/init.d/script restart' #or -t just after ssh, same thing 

나는이 메시지를 받았습니다. 그러나 프로세스가 재시작되었는지 실제로 알기 위해 실제로 작동하지 않는 것을 보았습니다.

내가 (같은 명령으로) 다시 다시 시작하려고 할 때,이 메시지를 가지고 :

Restarting openerp-server: Stopping openerp-server: start-stop-daemon: warning: failed to kill 25205: No such process 
openerp-server. 
Starting openerp-server: openerp-server. 
Connection to host.com closed. 

그러나 직접 원격 서버에 연결했을 때 나는 같은 명령을 사용하면, 모든 것이 잘 작동하고 내 스크립트가 서버를 다시 시작을 정상적으로. 나는이 의미 같은 명령 :

ssh [email protected] 
sudo /etc/init.d/script restart 

그래서 도대체 여기서 무슨 일이 일어나고 있는지?

답변

0

시작하는 스크립트가 명령이 반환 된 후 TTY에 잠깐 동안 머물러있는 장난 꾸러기 인 것 같습니다. 아마 문제를 일으키는 즉각적인 출구 일 것입니다. TTY 내의 셸에 첨부 된 백그라운드 작업을 시작하고 잠시 후 분리하면 연결을 닫으면 셸이 종료되고 그 내부의 작업이 종료 될 수 있습니다. 그러면 다시 시작할 때 스크립트에서 서비스에 대한 프로세스 번호가 있다고 생각하지만 찾을 수없는 이유를 설명합니다. 프로세스 번호가 어딘가에 기록 될 수 있지만 처리가 끝나기 전에 프로세스가 종료 될 수 있습니다.

확인하려면 몇 가지 시도해보십시오.

ssh [email protected] 
sudo /etc/init.d/script restart; exit 

을이 즉시 종료도 같은 문제를 안타 참조 : 즉시 종료, 당신의 sudo 명령을 실행, 원격으로 로그인합니다.

또한 조금 기다려야하고, 그 어디를 얻을 수 있는지 확인하기 위해 강제로

ssh [email protected] -t 'sudo /etc/init.d/script restart; sleep 30' 

을 시도합니다.

+0

첫 번째 옵션이 정상적으로 실행되었습니다. 종료 후에도 정상적으로 재시작됩니다. 하지만 수면 타이머로 두 번째 옵션을 사용하면 해결되었습니다. 그래서 원격 명령을 사용할 때 서버 재시작 프로세스가 실제 서버 연결보다 오래 걸렸을 것 같습니다. 사실 1 초 정도 걸릴 정도로 충분하고 창문이 정상적으로 다시 시작됩니다. – Andrius

관련 문제