나는 종종 CPU, 디스크, RAM 또는 인터넷 연결에 바인딩된 장기 실행 명령을 실행합니다. 실행하는 동안 유사한 명령을 실행하고 싶다는 것을 알았습니다. 당신이 큰 것을 다운로드한다고 가정해 봅시다.
그런 다음 셸을 시작 wget ...1
하고 실행해 보겠습니다. 다른 셸을 열고 다른 셸을 실행할 수 있지만 wget ...2
이제 대역폭을 놓고 경쟁합니다. 실행 중인 셸에 두 번째 명령을 입력하면 wget
대화형이 아니기 때문에 나중에 실행됩니다.
Bash나 Fish Shell을 사용하여 이를 수행할 수 있는 합리적인 방법이 있습니까?
답변1
이미 포그라운드에서 실행 중인 경우 wget http://first
+를 사용하여 일시 중지한 다음 바로 뒤에 다른 명령을 사용하여 작업 상태로 되돌릴 수 있습니다.CTRLz
fg ; wget http://second
대부분의 경우 작동합니다.
이 접근 방식이 허용되지 않으면 잠금 파일을 사용해야 합니다. 또는 ps
파일을 잠그는 방법으로 프로세스를 모니터링 할 수도 있습니다 .
답변2
당신은 찾을 수 있습니다작업 스풀러도움이 되는.
응용 프로그램 설명을 인용하면,
작업 스풀러는 스풀링된 작업이 차례로 실행되는 Unix 배치 시스템입니다. 언제든지 실행할 작업의 양을 설정할 수 있습니다. 각 시스템의 각 사용자는 고유한 작업 대기열을 가지고 있습니다. 이러한 작업은 모든 셸/프로세스의 올바른 컨텍스트(인큐 컨텍스트)에서 실행되며 해당 출력/결과를 쉽게 볼 수 있습니다.
답변3
HTCondor와 같은 정교한 작업 대기열 관리자를 설치하고 거기에 작업을 대기열에 넣을 수 있습니다. 데비안에서는 컴퓨터의 단일 사용자를 위해 설정하는 것이 쉽습니다. 대부분의 경우 이는 아마도 과잉일 것입니다.