출력을 로그 파일로 리디렉션하고 동시에 프로세스를 백그라운드 할 수 있습니까?
즉, 이렇게해도 될까요?
nohup java -jar myProgram.jar 2>&1 > output.log &
아니면 법적 명령이 아닙니까? 또는 다음과 같이 수동으로 배경으로 이동해야합니까?
java -jar myProgram.jar 2>$1 > output.log
jobs
[CTRL-Z]
bg 1
첫 번째 명령의 한 가지 문제는 stderr을 stdout이있는 위치로 리디렉션 한 다음 (주석에서 제안한대로 $를 &로 변경 한 경우) stdout을 일부 로그 파일로 리디렉션했지만 리디렉션 된 stderr을 가져 오지 않는다는 것입니다. . 다른 순서로해야합니다. 먼저 stdout을 원하는 위치로 보낸 다음 stderr을 stdout이있는 주소로 보내야합니다.
some_cmd > some_file 2>&1 &
그런 다음 &를 던져 백그라운드로 보낼 수 있습니다. jobs
명령을 사용하여 작업에 액세스 할 수 있습니다 . jobs
실행중인 작업을 표시하고 번호를 매 깁니다. 그런 다음 % 다음에 숫자를 사용하여 작업에 대해 말할 kill %1
수 있습니다.
또한 끝에 &없이를 Ctrlz사용하여 bg
명령을 일시 중지하고 명령을 사용 하여 백그라운드에 배치하고 fg
다시 포 그라운드로 가져올 수 있습니다. jobs
명령 과 함께 사용하면 강력합니다.
명령을 작성하는 순서에 대해 위의 부분을 명확히하기 위해. stderr이 주소 1002이고 stdout이 주소 1001이고 파일이 1008이라고 가정합니다.이 명령은 왼쪽에서 오른쪽으로 읽습니다. 따라서 처음으로 보는 것은 2>&1
stderr을 주소 1001 > file
로 이동 한 다음 stdout을 1008로 이동시키는 것입니다. 그러나 stderr을 1001로 유지합니다. 1001을 가리키는 모든 것을 가져와 1008로 이동하지 않고 단순히 stdout을 참조하여 파일로 이동합니다.
반대로 stdout을 1008로 이동 한 다음 stderr을 stdout이 가리키는 지점 인 1008로 이동합니다. 이렇게하면 둘 다 단일 파일을 가리킬 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다