실행하는 데 몇 시간이 걸리는 PHP 스크립트를 실행하고 있는데 컴퓨터를 종료해야 합니다. 나는 실행 스크립트를 사용합니다 php script.php
.
이 스크립트를 계속 실행하는 동안 닫을 수 있는 방법이 있습니까? (서버에서 실행됩니다)
Mac에서 SSH를 통해 원격 DigitalOcean 서버에 연결하고 있습니다.
참고: 제가 원하는 것은 프로세스를 종료하는 것이 아니라 계속 진행하는 것입니다. 나는 screen
or 를 사용해야 한다는 것을 알고 있지만 nohup
이전에 그렇게 하지 않은 것은 내 잘못입니다.
컴퓨터를 종료하지 않고 세션을 종료하는 유일한 해결책이 아닌가요?
추신: 누군가가 링크한 다른 질문과 중복되지 않습니다. 내 질문에 대한 정답도 다른 질문에 대한 정답과 다르다는 것을 알 수 있습니다. 여기서 문제는 세션을 종료하더라도 내 사용자가 실행 중인 스크립트를 계속 실행하는 것입니다.
답변1
프로세스를 일시 중지하려면 Ctrl+를 누르세요 . Z그런 다음 다음 두 명령을 실행합니다.
bg
disown %1
그런 다음 로그아웃하고 사용자 없이 프로세스를 계속 실행할 수 있습니다. 하지만더 이상 어떤 방식으로든(종료 이외의) 프로세스와 상호 작용할 수 없습니다.
앞으로는 장기 실행 프로세스를 이해하기 위해 screen
, nohup
, 또는 를 살펴볼 수도 있습니다.tmux
답변2
설치된 경우 nohup 명령을 사용하여 이 작업을 수행할 수 있습니다.
다음은 다음에서 인용되었습니다.https://www.cyberciti.biz/tips/nohup-execute-commands-after-you-exit-from-a-shell-prompt.html
nohup 명령 구문:
구문은 다음과 같습니다
nohup command-name &
또는
nohup /path/to/command-name arg1 arg2 &
어디,
command-name: 쉘 스크립트의 이름 또는 명령 이름입니다. 명령이나 쉘 스크립트에 인수를 전달할 수 있습니다. & : nohup은 실행되는 명령을 자동으로 배경화하지 않습니다. 명령줄을 & 기호로 종료하여 이를 명시적으로 수행해야 합니다.
crontab
서버에서 정기적으로 작업을 실행해야 하는 경우에도 이를 설정하는 것이 더 나을 것입니다.