PuTTY SSH를 통해 액세스되는 AWS EC2 Ubuntu 20.04 인스턴스가 있습니다. 다음을 통해 Python 프로세스를 실행합니다.MPI 열기다음 명령을 전달하십시오.루트가 아닌 경우:
nohup mpirun python3 job.py
쉘이 열려 있으면 정상적으로 실행됩니다. 프로세스가 ps
및 를 사용하여 표시되지는 않지만 job
nohup.out 및 변경되는 파일 시스템을 통해 몇 시간 동안 실행한 후에도 여전히 작동하고 있음을 알 수 있습니다.
쉘을 닫으면 nohup 프로세스가 종료됩니다. 또한 위의 nohup 명령을 실행할 때 더 이상 아무 것도 입력할 수 없다는 점에 유의해야 합니다(커서가 비어 있음). 그래서 ps
거기로 달려갔을 때 job
두 번째 껍질을 열어야 했어요. 나는 이전에 nohup을 사용해 본 적이 없었고 이것이 이상하다고 생각했습니다.
nohup.out 파일에 오류가 있는지 조사한 결과 아무 것도 기록되지 않은 것으로 나타났습니다.
요약하면 다음과 같습니다.
SSH 인스턴스(puTTY)를 닫고 nohup 프로세스를 종료합니다.
ps 및 job이 nohup 프로세스가 실행 중이라는 것을 알고 있음에도 불구하고 해당 프로세스를 나열하지 않습니다.
필요한 경우 추가 질문에 답변해 드릴 수 있습니다.
답변1
jobs
현재 셸에 대한 작업만 표시될 수 있습니다.
없는ps
현재 사용자와 동일한 유효 사용자 ID 및 호출자와 동일한 제어 터미널을 가진 프로세스를 표시합니다.. 예를 들어 ps -e
다른 프로세스를 확인 해야 합니다 (그러나 운영 체제의 모든 프로세스가 반드시 필요한 것은 아닙니다.).
당신이 달리면
nohup something … &
그러면 동일한 쉘에서 jobs
또는 을 실행할 수 있습니다 ps
. 그것을 볼 것으로 기대하지 마십시오 nohup
. 그 임무는 특정한 방식으로 행동하는 것이며 something
지속될 필요가 없습니다. 볼 것으로 예상됩니다 something
.
따라서 프로세스가 살아남았을 수도 있고 프로세스가 죽었다고 가정했을 수도 있습니다. 아니면 정말 죽었을 수도 있다. 바라보다프로세스가 종료되는 이유는 무엇입니까 nohup
?이것답변두 가지 가능성이 언급됩니다:
KillUserProcesses=yes
logind.conf
(시스템) 에서 ;- 또는 생성된 프로세스
SIGHUP
는nohup
.
자세한 내용은 여기를 참조하세요:nohup
사이의 disown
차이&
. 내가 올바르게 이해했다면 disown
생성된 프로세스가 자체 핸들러를 구현하는 것이 도움이 될 수 있습니다 SIGHUP
. 다음과 같이 사용하세요:
nohup something … &
disown