거부 명령 확인


10

나는 ^z; bg; disown매우 중요한 장기 실행 프로세스를 실행하는 ssh 세션을 닫을 수 있도록 시퀀스를 발행했습니다 . 이 프로세스는 상태 출력을 stderr에 기록하며 분리 된 후에도 계속 수행됩니다 (lsof로 확인되면 stderr fd는 r / w에 대해 열려 있음).

프로세스가 실제로 제거되었는지 확인하는 방법이 있습니까?



2
궁금한 점은 다음과 같습니다. $ PROCESS 1 >> / root / std.out 2 >> / root / err.out &
Avery Payne

답변:


12

배쉬에서 disown자체 발행 명령을 (를 통해 백그라운드로 제거 bg또는 &활성 작업 테이블에서) 프로세스를 로그 아웃에 SIGHUP을받지 그들을 표시합니다.

와 같이 하나 이상의 작업을 전달 해제 할 수도 있습니다 disown 1 3. disown -h플래그는 표에 일자리를 유지하려는 경우 유용하지만, 여전히 로그 아웃에 SIGHUP 없습니다.

jobs명령 을 실행하여 작업 테이블을 볼 수 있습니다 . 성공적인 배경 후에는이 표시 [1]+ command &됩니다. 작업을 폐기 한 후에는 더 이상 작업 테이블에 표시되지 않으며 로그 아웃시 더 이상 종료되지 않아야합니다. 당신은 여전히 통해 프로세스를 볼 수 있습니다 ps ux, top및 기타 프로세스보기 유틸리티.

작업이 폐기 된 후 자연스럽게 종료 될 때까지 기다리거나 killPID를 통해 신호를 보내 중지 할 수 있습니다.

Bash는 종료 할 실행중인 작업 목록에서 작업을 제거하고 터미널의 stdout 및 stderr에 대한 파일 핸들이 여전히 열려 있기 때문에 터미널 장치가 닫힐 때까지 작업에서 출력을 계속받습니다 (로그 아웃 할 때) .

예 :

# we start a command in the background
$ cat /dev/urandom > test &
[1] 18533

# we see our command is still running
$ jobs
[1]+  Running                 cat /dev/urandom > test &

# we disown the backgrounded job
$ disown 1

# notice it is no longer in the job table
$ jobs

나는 일반적으로 or 와 disown같은 잠재적으로 오래 실행되는 명령을 실행 한 후 종료하지 않고 로그 아웃해야한다고 결정한 경우 에만 사용 합니다. 명령을 실행하고 로그 아웃한다는 것을 알고 있다면 파일을 파이프로 연결하거나 파일로 실행 하거나로 실행하거나 실행 하여 출력을 캡처 할 수 있습니다 (이후에 명령의 소유권을 다시 얻거나 종료 할 수 있음) ).rsynccpteenohupscreen

예 :

# capture stdout and stderr to separate logs
cat /dev/urandom >stdout.log 2>stderr.log

# capture stdout and stderr to the same log, and display to stdout as well
cat /dev/urandom 2>&1 | tee output.log

# run a command under nohup (doesn't require a disown or job control support)
nohup cat /dev/urandom </dev/null

1
+1 유익하고 예제가 있습니다. 좋은!
Andy Smith

매우 유익한 의견; 프로세스의 분리를 확인할 수 없다는 것을 말하는 것입니까 (작업 테이블에 더 이상 존재하지 않음을 제외하고)?
mikewaters

1
detach백그라운드 작업에서 실행하면 분리됩니다 :) 백그라운드 프로세스에서 작업을 수행해도 아무런 영향을 미치지 않는 중간 지점이 없습니다. 확인 jobs은 중지 된 프로세스 또는 무언가를 분리하려고 시도하지 않았 음을 확인합니다.
lunixbochs
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.