서버가 응답하지 않으면 프로세스는 중단 없이 절전 모드로 전환됩니다.

서버가 응답하지 않으면 프로세스는 중단 없이 절전 모드로 전환됩니다.

저는 sshfs를 사용하여 원격 서버의 디렉터리 및 파일을 마운트하고 상호 작용합니다. 내가 사용하는 명령은 다음과 같습니다.

sshfs -o follow_symlinks host:dir mountpoint -o reconnect

일정 기간 동안 활동이 없었다가 컴퓨터를 일시 중단 모드에서 해제하면 원격 서버의 리소스를 사용하는 프로세스가 응답을 중지하는 경우가 있습니다. 여기에 이미지 설명을 입력하세요. 이 문제는 주로 Nautilus(파일)에서 발생하며 열린 PDF 파일이 원격 서버에 있는 경우 Okular에서도 발생할 수 있습니다.

이러한 프로세스를 종료하려고 하면 kill -9작동하지 않습니다. 예를 들어, Nautilus가 응답하지 않을 때 프로세스를 종료하기 위해 사용하는 명령은 다음과 같습니다.

toto:~/.ssh$ ps aux | grep nautilus
toto   21435  0.4  0.3 1440760 123276 ?      Sl   09:32   1:48 /usr/bin/nautilus --gapplication-service
toto   96139  0.0  0.0   9216  2428 pts/4    S+   15:44   0:00 grep --color=auto nautilus
toto:~/.ssh$ kill -9 21435

나는 배웠다여기왜냐하면 그들은방해받지 않는 수면. ~에서기타 토론, 내 생각에 해결책은 -o reconnectsshfs에 대한 매개변수로 사용하는 것입니다. 불행하게도 컴퓨터가 깨어난 후에도 응용 프로그램이 응답하지 않는 현상이 여전히 발생합니다.

답변1

ServerAliveInterval나는 and ServerAliveCountMax/or를 사용해 볼 것이다 .ClientAliveInterval

ServerAliveInterval은 연결을 유지하고 파이프 손상 문제를 방지하기 위한 가장 일반적인 전략인 것 같습니다.

sshd_config의 옵션은 ServerAliveInterval정확히 무엇을 합니까?ClientAliveInterval

쉘 포함:

sshfs -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -o follow_symlinks host:dir mountpoint -o reconnect

클라이언트는 60초(ServerAliveInterval 시간) 동안 유휴 상태로 대기한 후 "no-op 빈 패킷"을 서버에 보내고 응답을 기다립니다. 응답이 없으면 위의 프로세스를 3(ServerAliveCountMax)회(180초)까지 계속 시도합니다. 서버가 여전히 응답하지 않으면 클라이언트의 SSH 연결이 끊어집니다.

ClientAliveCountMax

ClientAliveCountMax서버 측에서도 도움이 될 수 있습니다. 이는 클라이언트가 연결을 끊기 전에 응답하지 않을 수 있는 시간 제한입니다. 기본값은 3(3개의 ClientAliveIntervals)입니다.

구성~/.ssh/config

Host myhostshortcut
     HostName myhost.com
     User barthelemy
     ServerAliveInterval 60
     ServerAliveCountMax 10

상위 프로세스 종료

응답하지 않는 프로세스를 직접 종료하려고 시도하는 대신 상위 프로세스를 종료합니다.

ppid응답하지 않는 프로세스에서 사용되는 상위 프로세스 ID 찾기

ps -ef

이 경우 응답하지 않는 프로세스의 상위 프로세스는 sshfs명령에 의해 생성된 프로세스입니다. 다음 명령은 실행 중인 프로세스 목록에서 이를 찾는 데 도움이 됩니다.

ps -ef | grep sshfs

가 있는 경우 와 함께 명령을 ppid사용하십시오 .killpid

kill -9 1268

상위 프로세스를 종료하면 하위 프로세스도 종료되어야 합니다.

관련 정보