이 명령의 출력을 리디렉션하고 싶습니다 firefox &
. 추가한다는 &
것은 백그라운드에서 명령을 실행하고 이를 사용할 때 수신된다는 것을 알고 있습니다 [number of process in background] [PID]
.
firefox & > firefoxFile
그런데 열어 firefoxFile
보니 텅 비어 있었습니다. 못 찾겠 어 [number of process in forground] [PID]
.
답변1
당신이 쓴 댓글에
백그라운드 프로세스의 pid와 수를 찾고 싶습니다.
이건 어때?
firefox &
pid=$!
echo "The PID for the background process is $pid" >&2
PID가 있으면 물론 원하는 파일에 그 값을 쓸 수 있습니다.
답변2
쉘이 bash[1]인 경우 다음을 시도해 볼 수 있습니다.
exec 3>&2 2>firefoxFile; firefox & exec 2>&3-
여기에서 쉘(예: bash)이 [jobnum] pid
백그라운드 작업 알림을 인쇄합니다.표준 에러, Firefox가 아닙니다. 이 조합은 일시적으로 stderr을 파일로 리디렉션 firefoxFile
하고 해당 파일에 알림을 캡처합니다.그리고Firefox는 수명 동안 stderr에 무엇이든 기록합니다.
[jobnum] Done firefox
백그라운드 작업이 종료되면 인쇄될 bash를 캡처하지 않습니다.
귀하의 명령은 firefox & > file
두 개의 명령으로 구문 분석됩니다1. firefox &
( firefox
백그라운드에서 실행됩니다) 그리고2. > file
(아무것도 쓰지 않고 잘립니다 file
.) 이것은 확실히 당신이 원하는 것이 아닙니다.
[1]읽을 수 있습니다여기이 트릭이 다른 쉘에서는 작동하지 않는 이유는 stderr이 에서 리디렉션될 수 있지만 zsh
해당 zsh
프롬프트와 작업 알림은 stderr에 기록되지 않고 이 목적을 위해 특별히 열린 현재 터미널을 가리키는 다른 fd에 기록되기 때문입니다.
답변3
정확하지는 않지만 거의 비슷합니다. 조금 더 추가하면 됩니다 sed
.
firefox &
jobs -l | grep -E "\[[0-9]+\]\+" > firefoxFile