터미널에서 프로세스를 시작하고 프로세스가 실행될 때 표준 오류로 출력을 보낸다고 가정해 보겠습니다. 무음화하면서 프로세스를 배경으로 옮기고 싶습니다.
&
프로세스를 중지하고 사용 하고 다시 시작하지 않고 이 작업을 수행할 수 있는 방법이 있습니까 > /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
또 다른 명령줄 도구는 detach
pidfile 작성, stdin, stdout 및 stderr 파일 작업 및 포그라운드 실행을 지원합니다. ( detach
유사한 도구도 사이트에서 논의됩니다.)