SSH 터미널을 닫으면 nohup이 종료되고 실행 시 ps/job에 표시되지 않습니다.

SSH 터미널을 닫으면 nohup이 종료되고 실행 시 ps/job에 표시되지 않습니다.

PuTTY SSH를 통해 액세스되는 AWS EC2 Ubuntu 20.04 인스턴스가 있습니다. 다음을 통해 Python 프로세스를 실행합니다.MPI 열기다음 명령을 전달하십시오.루트가 아닌 경우:

nohup mpirun python3 job.py

쉘이 열려 있으면 정상적으로 실행됩니다. 프로세스가 ps및 를 사용하여 표시되지는 않지만 jobnohup.out 및 변경되는 파일 시스템을 통해 몇 시간 동안 실행한 후에도 여전히 작동하고 있음을 알 수 있습니다.

쉘을 닫으면 nohup 프로세스가 종료됩니다. 또한 위의 nohup 명령을 실행할 때 더 이상 아무 것도 입력할 수 없다는 점에 유의해야 합니다(커서가 비어 있음). 그래서 ps거기로 달려갔을 때 job두 번째 껍질을 열어야 했어요. 나는 이전에 nohup을 사용해 본 적이 없었고 이것이 이상하다고 생각했습니다.

nohup.out 파일에 오류가 있는지 조사한 결과 아무 것도 기록되지 않은 것으로 나타났습니다.

요약하면 다음과 같습니다.

  1. SSH 인스턴스(puTTY)를 닫고 nohup 프로세스를 종료합니다.

  2. ps 및 job이 nohup 프로세스가 실행 중이라는 것을 알고 있음에도 불구하고 해당 프로세스를 나열하지 않습니다.

필요한 경우 추가 질문에 답변해 드릴 수 있습니다.

답변1

jobs현재 셸에 대한 작업만 표시될 수 있습니다.

없는ps 현재 사용자와 동일한 유효 사용자 ID 및 호출자와 동일한 제어 터미널을 가진 프로세스를 표시합니다.. 예를 들어 ps -e다른 프로세스를 확인 해야 합니다 (그러나 운영 체제의 모든 프로세스가 반드시 필요한 것은 아닙니다.).

당신이 달리면

nohup something … &

그러면 동일한 쉘에서 jobs또는 을 실행할 수 있습니다 ps. 그것을 볼 것으로 기대하지 마십시오 nohup. 그 임무는 특정한 방식으로 행동하는 것이며 something지속될 필요가 없습니다. 볼 것으로 예상됩니다 something.

따라서 프로세스가 살아남았을 수도 있고 프로세스가 죽었다고 가정했을 수도 있습니다. 아니면 정말 죽었을 수도 있다. 바라보다프로세스가 종료되는 이유는 무엇입니까 nohup?이것답변두 가지 가능성이 언급됩니다:

  • KillUserProcesses=yeslogind.conf(시스템) 에서 ;
  • 또는 생성된 프로세스 SIGHUPnohup.

자세한 내용은 여기를 참조하세요:nohup사이의 disown차이&. 내가 올바르게 이해했다면 disown생성된 프로세스가 자체 핸들러를 구현하는 것이 도움이 될 수 있습니다 SIGHUP. 다음과 같이 사용하세요:

nohup something … &
disown

관련 정보