"[1]+Exit 1" 응답은 무엇을 의미합니까?

"[1]+Exit 1" 응답은 무엇을 의미합니까?

Python 프로그램을 백그라운드에서 계속 실행하고 사용 중이던 SSH 연결을 종료하기 위해 이 명령을 실행했습니다.

nohup python files.py >> files.log &

ps그런 다음 작동하는지 확인합니다.

$ ps a
  PID TTY      STAT   TIME COMMAND
13059 pts/0    Ss     0:00 -bash
13327 pts/0    R+     0:00 ps a
[1]+  Exit 1                  nohup python files.py >> files.log

무슨 뜻이에요 [1]+ Exit 1?

프로그램을 백그라운드에서 실행하여 올바르게 종료하려면 어떻게 해야 합니까?

답변1

bash 에서 명령 끝에 이를 사용하면 &백그라운드에서 명령이 실행됩니다. [1]+ Exit 1작업 1이 상태 1로 종료되었음을 나타냅니다 . 사이의 숫자 []는 작업 번호이고 그 뒤의 숫자 Exit는 종료 상태입니다. 종료 상태가 표시되지 않으면 명령이 상태로 종료되었음을 의미합니다 0.

다른 명령을 실행하기 전에 이 메시지가 표시되지 않는 이유는 기본적으로 완료된 백그라운드 명령의 상태가 프롬프트가 업데이트될 때까지 표시되지 않기 때문입니다. 이는 다른 명령이 종료된 후 또는 <ENTER>빈 프롬프트를 누를 수 있음을 의미합니다 .

편집:
또한 .Bash를 사용할 필요는 없습니다 nohup. 쉘 자체가 HUP를 수신할 때만 프로세스를 HUP합니다. 완전히 종료하면(또는 CTRL+D를 통해 ) exit이런 일이 발생하지 않습니다 .
그러나 disown특정 작업이 HUP를 얻지 않도록 내장 함수를 사용하여 이를 달성할 수도 있습니다.
마지막으로 다음을 수행하여 쉘이 HUP를 얻을 때 모든 작업을 거부하도록 SIGHUP 핸들러를 설정할 수도 있습니다 function sighup { disown -a; exit 0; }; trap sighup HUP.

답변2

Patrick의 대답은 정확하지만 Stefan의 요점은 nohup다른 버전의 사용자에게 중요합니다. 그러나 +(더하기) 기호의 의미는 제공되지 않습니다. 여기서는 "현재" 작업을 의미합니다. 예를 들어, 한 번에 3개의 명령을 제출하려는 경우:

$ sleep 5&
[1] 29056
$ sleep 5&
[2] 29091
$ sleep 5&
[3] 29147

그런 다음 5초 동안 기다렸다가 Enter를 누르십시오. 출력은 다음과 같습니다.

[1]   Done                    sleep 5
[2]-  Done                    sleep 5
[3]+  Done                    sleep 5

Patrick이 설명했듯이 대괄호 안의 숫자는 순차적인 작업 번호입니다. +는 최근 작업에 대해서만 주어지고, -는 이전 작업에 대해서만 주어집니다. 다른 모든 직업에는 기호가 없습니다.

관련 정보