문서에 따르면:
쉘이 특정 작업에 SIGHUP 신호를 보내는 것을 방지하려면 disown 내장 함수를 사용하여 작업 테이블에서 제거해야 합니다. 또는SIGHUP을 수신하지 않도록 표시하려면 disown -h를 사용하십시오.
https://www.gnu.org/software/bash/manual/html_node/Signals.html
참고하세요또는견적에서.
disown
간단히 사용 하고 -h
다시 로그인해도 프로세스가 종료되지 않는다는 것을 확인할 수 있습니다 .
#!/bin/bash
( sleep 10s; echo 1 > b ) &
disown
이 옵션은 불필요한 것 같죠 -h
? 그것 없이도 작동한다면 그 목적은 무엇입니까?
답변1
그렇지 않은 경우 -h
해당 작업은 활성 작업 목록에서 제거되고, 그렇지 않은 경우에는 -h
제거되지 않습니다.
모든 것이 매뉴얼에 있습니다:
disown [-ar] [-h] [jobspec ...]
(...)
If the -h option is given, each jobspec is not removed
from the table, but is marked so that SIGHUP is not sent to the
job if the shell receives a SIGHUP.
jobs
작업 거부를 사용하거나 사용하지 않고 실행한 후의 차이점을 확인하세요 -h
.