Bash 스크립트에서 "ssh -O check"의 출력을 이해하는 방법은 무엇입니까?

Bash 스크립트에서 "ssh -O check"의 출력을 이해하는 방법은 무엇입니까?

듣고 있는 메인 프로세스가 아직 존재하는지 확인하고 싶습니다 ssh.sock. 현재 반환된 종료 코드가 ssh -S ssh.sock -O check <my-server>0인지 확인하고 있지만 이것이 이 문제를 처리하는 올바른 방법인지 확실하지 않으며 어떤 문서도 찾을 수 없습니다. ServerAliveInterval=20연결이 실패하면 죽도록 마스터 프로세스가 있어야 합니다 . 반환 코드가 0이 아니지만 프로세스 자체가 여전히 활성 상태인 경우가 있습니까?

답변1

이를 시도하는 가장 쉬운 방법은 프로세스를 시작하고( ssh -MS ssh.sock <my-server>) 소켓을 삭제한 후 어떻게 작동하는지 시험해 보는 것입니다. 업무와 연결:

$ ssh -S ssh.sock -O check <my-server>
Master running (pid=24314)
$ echo $?
0

소켓이 없으면 다음과 같은 결과가 나타납니다.

$ ssh -S ssh.sock -O check <my-server>
Control socket connect(ssh.sock): No such file or directory
$echo $?
255

나는 반환 코드를 처리하는 것이 올바른 접근 방식이라고 생각합니다.

반환 코드가 0이 아니지만 프로세스 자체가 여전히 활성 상태인 경우가 있습니까?

이전 예제와 마찬가지로 어떤 이유로 소켓이 삭제되면 연결은 여전히 ​​활성 상태이지만 "외부"에서 이를 검사하거나 새 세션을 연결할 수 없습니다.

관련 정보