실행 중인 셸에서 작업 대기열에 넣기

실행 중인 셸에서 작업 대기열에 넣기

나는 종종 CPU, 디스크, RAM 또는 인터넷 연결에 바인딩된 장기 실행 명령을 실행합니다. 실행하는 동안 유사한 명령을 실행하고 싶다는 것을 알았습니다. 당신이 큰 것을 다운로드한다고 가정해 봅시다.

그런 다음 셸을 시작 wget ...1하고 실행해 보겠습니다. 다른 셸을 열고 다른 셸을 실행할 수 있지만 wget ...2이제 대역폭을 놓고 경쟁합니다. 실행 중인 셸에 두 번째 명령을 입력하면 wget대화형이 아니기 때문에 나중에 실행됩니다.

Bash나 Fish Shell을 사용하여 이를 수행할 수 있는 합리적인 방법이 있습니까?

답변1

이미 포그라운드에서 실행 중인 경우 wget http://first+를 사용하여 일시 중지한 다음 바로 뒤에 다른 명령을 사용하여 작업 상태로 되돌릴 수 있습니다.CTRLz

fg ; wget http://second

대부분의 경우 작동합니다.

이 접근 방식이 허용되지 않으면 잠금 파일을 사용해야 합니다. 또는 ps파일을 잠그는 방법으로 프로세스를 모니터링 할 수도 있습니다 .

답변2

당신은 찾을 수 있습니다작업 스풀러도움이 되는.

응용 프로그램 설명을 인용하면,

작업 스풀러는 스풀링된 작업이 차례로 실행되는 Unix 배치 시스템입니다. 언제든지 실행할 작업의 양을 설정할 수 있습니다. 각 시스템의 각 사용자는 고유한 작업 대기열을 가지고 있습니다. 이러한 작업은 모든 셸/프로세스의 올바른 컨텍스트(인큐 컨텍스트)에서 실행되며 해당 출력/결과를 쉽게 볼 수 있습니다.

답변3

HTCondor와 같은 정교한 작업 대기열 관리자를 설치하고 거기에 작업을 대기열에 넣을 수 있습니다. 데비안에서는 컴퓨터의 단일 사용자를 위해 설정하는 것이 쉽습니다. 대부분의 경우 이는 아마도 과잉일 것입니다.

관련 정보