답변:
이 &
명령은 쉘이 백그라운드에서 명령을 실행하도록 지시합니다. 즉, 별도의 하위 쉘에서 작업으로 비동기식으로 분기되어 실행됩니다.
당신이 둘 때주의 &
모두 - 출력 표준 출력 및 표준 오류 - 계속 될 것입니다 화면에 인쇄 . 화면에 출력을 표시하지 않으려면 다음을 수행 하여 파일 stdout
과 stderr
파일을 모두 리디렉션 하십시오.
myscript > ~/myscript.log 2>&1 &
일반적으로 나중에 오류 분석에 대해 걱정하지 않으면 stderr
로 리디렉션 하여 버리기를 원할 수 있습니다 /dev/null
.
별도의 하위 셸에서 명령 / 스크립트를 동시에 실행할 수도 있습니다. 예를 들어;
./script1 & ./script2 & ./script3 &
백그라운드 작업은 명령 완료 전에 명령 행으로 다시 가져올 수 있습니다.
fg <job-number>
을 job-number
실행하여 얻을 수 있습니다
jobs
2>&1
리디렉션 stderr
합니다 stdout
.
stty tostop
터미널에 쓰려고하면 백그라운드 작업이 일시 중단 될 수 있다고 언급 할 가치가 있다고 생각합니다 .
을 사용 &
하면 프로세스가 백그라운드에서 실행 중입니다. 그러나 표준 출력은 여전히 터미널입니다.
사실, 당신은 실행할 수 ping 8.8.8.8 &
와 find / -name '*test*' &
같은 시간에 (혼합 출력의 결과로),하지만 당신은 실행되지 않을 수 있습니다 ping 8.8.8.8
와 find / -name '*test*'
같은 쉘에서 동시에.
아무것도보고 싶지 않다면을 사용하십시오 ping 8.8.8.8 &> /dev/null &
.
또한 nohup
및 에 대해 배우고 싶을 수도 있습니다 disown
.
disown
출력이 터미널로 인쇄되는 것을 막지 않습니다.
/dev/null
출력을 어딘가에 저장하지 않고 폐기하려는 경우 터미널 출력을 리디렉션하는 파일로 사용할 수도 있습니다 . 그리고 나는 그것이2>&1
리디렉션stderr
되는 것이 맞stdout
습니까? 어쩌면 당신은 그것을 명확히하고 싶을 수도 있습니다 ... 감사합니다.