서버 A에서 ssh를 통해 서버 B에 다음 명령을 실행하고 싶습니다.
service network stop
sleep 5
service network start
문제는 네트워크 ‘중지’를 발행했기 때문에 현재 ssh 연결도 손실되기 때문입니다. 따라서 후속 명령을 실행할 수 없습니다 (절전 5 및 서비스 네트워크 시작). (서비스 네트워크 다시 시작)을 사용할 수 없습니다.
누구든지 이것에 대한 해결 방법 / 솔루션이 있습니까?
답변
대화식으로 이것을하고 있다면, 왜 screen
세션을 시작하지 않습니까? 다음과 같이 보일 것입니다.
screen
(스크 라이닝 쉘 시작)
service network restart
(SSH 세션 연결이 끊어 지지만 화면 세션에서 네트워크 재시작이 계속됨)
(몇 초 기다립니다)
(다시 시작한 후 호스트로 다시 SSH 연결)
screen -r
(화면에 다시 연결하여 오류 확인)
IMHO, 네트워크 인터페이스를 원격으로 다시 시작하는 것은 항상 무섭습니다. 다시 나타나지 않으면 어떻게됩니까? 문제가 발생하면 호스트에 콘솔이나 다른 수단이 있습니까?
답변
이를 수행 할 수있는 정확한 명령은 Linux 배포판에 따라 다릅니다. 꽤 표준적인 옵션은 네트워킹을 다시 시작하기 위해 향후 5 초 동안 작업을 예약하고 “at”하는 것입니다. 다른 하나는 nohup
명령 을 사용하는 것 입니다.
echo "sleep 5; /etc/init.d/networking start" | at now
nohup sh -c 'sleep 5; /etc/init.d/networking start' &
다른 배포판에는 결과 프로그램을 더 이상 쉘과 연관되지 않은 데몬으로 바꾸는 데몬 명령이 있습니다.
답변
이를 수행하는 가장 간단한 방법은 and 연산자를 사용하는 것입니다.
service network stop && sleep 5 && service network start
답변
쉘 스크립트에 넣고 SSH를 통해 실행 해보십시오.
답변
이것을 시도하십시오 (필요한 경우 cron 설치 가능).
$ at now+5min
at> service network stop
at> sleep 5
at> service network start
at> [control-D]
그런 다음 로그 아웃하고 6 분 동안 기다렸다가 다시 로그인하십시오.