
첫째, 이해 tmux
합니다 screen
. 내 딜레마: SSH를 통해 쉘 스크립트를 시작했는데 시간이 오래 걸릴 것으로 예상하여 밤새 컴퓨터를 켜두었습니다.
쉘 명령을 종료했다가 다시 시작할 수 없습니다. 그렇지 않으면 처음부터 다시 시작됩니다. 쉘 스크립트를 종료하지 않고 SSH 연결을 종료하고 싶습니다. 컴퓨터를 분리하고 안전하게 컴퓨터 연결을 끊을 수 있도록 소급하여 수행할 수 있는 작업(즉, 명령이 SSH 터미널에서 실행됨)이 있습니까?
답변1
가능한지 알고 싶습니다 detach
. 일반적으로 기존 터미널 세션에서 이 작업을 수행하면 셸을 종료할 수 있으며 "분리된" 프로세스는 계속 실행됩니다. 먼저 프로세스를 일시 중지하고 백그라운드에서 실행해야 합니다. 효과는 이 명령을 사용한 것과 같습니다 nohup
.
그러나 귀하의 프로세스가 여전히 종료될 수 있음을 나타내는 일부 응답을 발견했습니다 systemd
. 지금까지 직접 본 적이 없으므로 주의하시기 바랍니다.
편집하다:
*잘* "분리"의 경우 disown
적어도 CentOS 및 해당 유사 항목을 읽으십시오. 제가 오해한 모든 분들께 사과드립니다. 어디선가 "분리" 명령이 나온 기억이 나는데...
답변2
당신이 할 수 있는 한 가지는 일시 중지 작업을 사용하는 것입니다 CTRL+Z
. 그런 다음 fg
해당 명령에 대한 포그라운드 작업이나 해당 명령에 대한 백그라운드 작업으로 계속 진행합니다 bg
. 문제에 따라 이 bg
명령이 필요합니다. 그런 다음 jobs
세션을 종료하기 전에 명령이 작동했는지 확인할 수 있습니다. 경고처럼, 세션을 종료한 후에는 스크립트가 완료되는 시기나 완료 여부를 추적할 수 없습니다(스크립트가 수행한 작업 제외). 요약하자면:
CTRL+Z
$ jobs
$ bg
$ jobs
$ exit
또 다른 면책 조항: 연결을 끊고 명령이 백그라운드에서 계속 실행되도록 허용하는 환경을 설정했는지 여부는 시스템에서 작업하는 사람 외에는 아무도 알 수 없습니다. 대부분의 설정에서 작동하지만 알 수는 없습니다. 가능하다면 테스트 스크립트에서 테스트하고 중지했다가 다시 시작할 수 있는지 확인하겠습니다.