나중에 콘솔 상호 작용을 필요로하는 프로그램 (예 : "apt -y update &")을 제외하고 사용자에게 "정말 힘을 내야합니까?" .... 아무도 더 이상보고 있지 않을 때).
이 구멍을 막고 프로세스가 터미널을 절대 사용할 수 없게하는 과정을 알리기 위해 <&-를 일부 명령에 추가하여 활성 터미널에서 완전히 분리하여 STDIN이 더 이상 불가능하다는 것을 알려줍니다. 그래도 사용한다면 / bin / bash가 쉘인지 확인하십시오. 스크립트는 프롬프트를 캐스트 할 의사 터미널이없는 것과 관련된 오류를 로깅합니다.
예를 들면 다음과 같습니다.
`./runme.sh &> runme.log <&- & disown`
현재 터미널 세션에서 연결을 끊는 최고의 방법입니다. STDOUT과 STDERR 모두 runme.log에 기록됩니다. 콘솔이나 셸이 더 빨리 종료되는지 또는 다른 계정으로 로그 아웃 / 실행 한 경우 (runme에서 터미널 가비지가 발생하지 않음), 부모 자식까지도 제거 할 수 없기 때문에 중요하지 않습니다. PID 관계가 제거되었습니다.
업데이트 : 그럼에도 불구하고 세마포어를 원래 부모의 이름과 연결하는 데 문제가 있었으므로 이제 대신 권장합니다.
at now <<< "(cmd1; cmd2; etc.) &> logfile.log"
물론 CRON에서 출력을 이메일로 받으려면 &>를 제거하거나 파일 대신 / dev / null로 리디렉션하십시오.
screen
)을 사용하면 더 오래 실행되는 프로세스를 "랩핑"할 수 있습니다. 쉘에서 분리하여 쉘로 돌아간 다음 다시 연결하여 실행중인 프로세스의 출력을 볼 수 있습니다. 재 연결은 다른 터미널, SSH 등에서도 수행 할 수 있습니다. 이러한 종류의 작업을 수행 할 수있는 다른 프로그램도있을 수 있습니다.