저는 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 reconnect
sshfs에 대한 매개변수로 사용하는 것입니다. 불행하게도 컴퓨터가 깨어난 후에도 응용 프로그램이 응답하지 않는 현상이 여전히 발생합니다.
답변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
사용하십시오 .kill
pid
kill -9 1268
상위 프로세스를 종료하면 하위 프로세스도 종료되어야 합니다.