nohup을 사용하여 rsync(및 기타 명령)를 실행하면 sigterm이 표시됩니다.

nohup을 사용하여 rsync(및 기타 명령)를 실행하면 sigterm이 표시됩니다.

내 컴퓨터에서 HP UX B.11.31 시스템에 연결하고 nohup을 사용하여 매우 긴 명령을 실행하여 작업이 완료되는 동안 며칠 동안 잠을 자거나 다른 작업을 수행할 수 있습니다.

그러한 명령의 예:

nohup rsync --rsync-path=/usr/local/bin/rsync -e ssh /data/src usr@target:/data/ >> /data/log/sync.out 2>&1 &

참고: Rsync 명령은 다른 HP UX 서버를 대상으로 합니다.

내 컴퓨터가 어떻게든 HP UX 시스템에서 연결이 끊어질 때까지 실행됩니다(내 홈 연결에서 VPN을 통해 SSH를 통해 연결되어 있으며 연결이 하루에 한 번 정도 발생하는 것 같습니다).

이런 일이 발생하면 다음을 찾을 수 tail /data/log/sync.out있고 찾을 것입니다.

Killed by signal 1.
rsync error: unexplained error (code 255) at rsync.c(549) [sender=3.0.8]

누군가 명령을 쉘 스크립트에 넣고 nohup을 사용하여 실행할 것을 제안했습니다.

그래서 나는 이것을 (shebang을 사용하여 #!/usr/bin/bash) 한 다음 다음과 같이 명령을 실행했습니다 nohup ./auto_rsync.sh > /data/log/sync.out 2>&1 &.

같은 일이 일어났습니다.

흥미롭게도 명령이 실행되는 동안 logout을 입력하면 exit명령이 계속 실행됩니다. 그렇다면 연결 해제가 nohup으로 실행 중인 프로세스에만 SIGTERM을 보내는 이유는 무엇입니까?

답변1

한동안 HP/UX 작업을 하지 않았지만 ssh에는 여전히 ServerAliveInterval 옵션이 있어야 합니다. 따라서 명령에서 ssh 뒤에 "-o ServerAliveInterval=60"을 추가하세요. 또는 이 옵션을 .ssh/config에서 영구적으로 설정하거나 시스템 SSH 구성 파일에 추가할 수 있습니다.

편집하다

HP/UX에서는 다른 이름을 갖습니다. 몇 가지 문서를 찾았습니다.

https://support.hpe.com/hpsc/doc/public/display?docId=c01892997

/etc/opt/ssh/sshd_config에 지정된 다음 매개변수를 사용하면 세션이 종료되기 전에 허용되는 필수 비활성 시간을 설정할 수 있습니다.

ClientAliveInterval 300
ClientAliveCountMax 6

위 코드는 최대 6번의 시도 동안 5분(300초)마다 클라이언트 활동 메시지를 보냅니다. 30분 동안 응답이 없으면 클라이언트 연결이 끊어집니다.

ClientAliveInterval 기본값 0은 이 활성 간격이 기본적으로 비활성화되도록 합니다.

관련 정보