프로세스를 백그라운드로 이동하고 출력을 침묵시키는 방법은 무엇입니까?

프로세스를 백그라운드로 이동하고 출력을 침묵시키는 방법은 무엇입니까?

터미널에서 프로세스를 시작하고 프로세스가 실행될 때 표준 오류로 출력을 보낸다고 가정해 보겠습니다. 무음화하면서 프로세스를 배경으로 옮기고 싶습니다.

&프로세스를 중지하고 사용 하고 다시 시작하지 않고 이 작업을 수행할 수 있는 방법이 있습니까 > /dev/null 2>&1? 실행할 수 bg 있고 대상 프로세스의 출력 설명자를 변경할 수 있는 명령이 있는지 알고 싶습니다 .

답변1

너무 늦었어요. ~ 후에프로세스시작 후 쉘은 더 이상 제어하지 않습니다.프로세스파일 설명자를 사용하면 할 수 없습니다.조용한이는 쉘 명령을 통해 수행됩니다.

당신은 시도 만 할 수 있습니다죽이다처리하는 것 SIGHUP입니다.프로세스가 올바르게 처리하는 경우, 와 분리되어야 합니다.제어 터미널. 불행히도 많은 소프트웨어가 이를 올바르게 처리하지 못하고 단순히 종료됩니다.

답변2

터미널에서 실행되는 프로세스에는 stdin, stdout 및 stderr이 터미널에 바인딩되어 있으며 일반적으로 터미널 제어권을 다시 얻지 않으면 아무 것도 할 수 없습니다. 하지만 실제로 그렇게 할 수 있는 몇 가지 까다로운 도구가 있습니다. 구경하다이 예. 그리고 거기에 언급된 다른 프로그램들 retty.

답변3

나는 출력을 멈추기에는 너무 늦었다는 andcoz의 의견에 동의하지 않습니다.

프로세스가 포그라운드에서 실행 중이라고 가정하고 Ctrl-Z프로세스를 일시 중지하는 데 사용합니다. 그렇게 하면 작업 번호와 프로세스 ID가 보고됩니다. 계속해서 bg %1(작업 #1의 경우) 프로세스를 백그라운드로 이동할 수 있습니다. 이렇게 하면 프로세스가 백그라운드로 이동하지만 출력이 조용해지지는 않습니다. 출력을 무음으로 설정하려면 gdb모든 출력을 /dev/null.

이에 대해서는 앞서 잘 설명했습니다.https://stackoverflow.com/questions/593724/redirect-stderr-stdout-of-a-process-after-its-been-started-using-command-lin/593764#593764.

답변4

또 다른 명령줄 도구는 detachpidfile 작성, stdin, stdout 및 stderr 파일 작업 및 포그라운드 실행을 지원합니다. ( detach유사한 도구도 사이트에서 논의됩니다.)

http://inglorion.net/software/detach/

관련 정보