더 많은 프로그램을 실행할 수 있도록 bash에서 프로그램을 실행하고 표준 출력을 무시하려면 어떻게 해야 합니까? [폐쇄]

더 많은 프로그램을 실행할 수 있도록 bash에서 프로그램을 실행하고 표준 출력을 무시하려면 어떻게 해야 합니까? [폐쇄]

내가 하고 싶은 것은 내부에서 새로운 프로세스를 생성하고 bash내 터미널이 다음 줄에 있고 프로세스가 일반적으로 내 표준 출력을 훔치는 것을 제외하고는 아무 일도 일어나지 않은 것처럼 행동하는 것입니다...

지금 원 apt-get update하지만 모든 다운로드를 보는 대신 일부 구성 파일을 편집하고 싶기 때문에 vi /some/config이 두 가지 작업을 동시에 수행할 수 있어야 합니다.

명확히 하기 위해 질문하기 전에 몇 가지 내용을 읽었으므로 터미널이 닫힌 후에도 프로세스가 유지되기를 원하므로 [아직 종료되지 않은 경우] 하위 프로세스가 아닌 것 같습니다. 아마도 하위 프로세스가 아닐 것입니다. 쉘, 포크일까요? 포크 말이에요? 이렇게 포크하려면 어떻게 해야 하나요?

답변1

백그라운드에서 프로세스를 실행하여 동시에 다른 작업을 계속할 수 있는 방법을 찾고 있는 것 같습니다. 이는 명령 끝에 & 기호를 추가하여 수행됩니다. 예를 들어, 실행 후 몇 밀리초 후에 sleep 5h백그라운드 명령이 수행되는 동안 다른 명령을 입력할 수 있습니다. 터미널이 닫힌 후에도 프로세스가 생존하려면 다음 disown과 같이 프로세스를 격리해야 합니다.리디렉션. 바라보다공정 관리그리고직업 통제훌륭한 문서화를 위해.

또는 포그라운드에서 명령을 실행한 후 다른 터미널을 실행하여 다른 작업을 수행할 수도 있습니다. 나머지는 운영 체제가 처리합니다.

답변2

'</dev/null'은 /dev/null에서 표준 입력을 읽고 있습니다. 입력을 정상적으로 리디렉션합니다. 즉시 EOF를 반환합니다. 즉, 빈 파일에서 읽는 중입니다. 이는 STDIN에서 데이터를 읽고 싶은 경우가 있지만 이 경우에는 그렇지 않은 상황에 유용한 관용어입니다.

답변3

setsid나는 당신이 새 세션에서 프로그램을 시작하는 명령을 찾고 있다고 생각합니다 . 따라서 다음을 수행할 수 있습니다.

setsid apt-get update

apt-get update그리고 그들이 침묵하길 원한다면 :

setsid apt-get update >/dev/null 2>&1

이점은 setsid이 방법으로 시작된 프로세스가 터미널이 닫힌 후에도 계속된다는 것입니다.

답변4

nohup apt-get update > /dev/null 2> /dev/null < /dev/null & vi /some/config

https://en.wikipedia.org/wiki/Nohup#Overcoming_hanging

기술적으로 nohup은 stdin이 /dev/null임을 의미하므로 < /dev/nullno

관련 정보