PC를 사용하는 동안 백그라운드에서 길고 복잡한 CPU 및 IO가 많은 명령줄 작업을 시작하고 싶습니다. 보통 우선순위로 실행하면 시스템의 응답성이 저하됩니다. 모든 프로세스가 실행되고 실행 중인 프로세스의 우선 순위가 낮은 쉘(작업이 실행될)을 시작하는 방법은 무엇입니까?
답변1
쉘이든 무거운 명령(자체가 쉘 스크립트일 수 있음)이든 우선순위가 낮은 프로세스에서 명령을 실행하려면 Linux에서 다음을 수행할 수 있습니다.
nice ionice -c idle the-command and its arguments
nice
이는 표준 ionice
이며 Linux에만 해당됩니다.
일부 쉘 코드를 실행하려면 sh -c
다음 명령을 사용하십시오.
nice ionice -c idle sh -c '
for i in foo bar; do
heavycmd "$i" > "$i.log"
done'
nice
선호도를 독립적으로 높이려면 10
이 옵션을 사용하여 다양한 증분을 지정할 수 있습니다 -n
.
zsh
셸 에서 이 bgnice
옵션을 설정하면(대화형에서는 기본적으로 설정됨) 백그라운드에서 실행되는 모든 명령의 선호도가 5씩 증가합니다.
(t)csh
셸 에는 nice
셸의 친화성을 변경하는 내장 명령이 있습니다(구문은 nice
표준 명령( nice +10 cmd
임의의 친화성을 지정(증가 없음!))과 다르며 기본 친화성은 4입니다).
자신의 친근성 변경을 지원하지 않는 쉘에서는 대신 사용할 수 있습니다 renice
. 조심하세요renice -n 5 "$pid"
현재 POSIX 요구사항줄이다이드 프로세스의 장점이 $pid
5 증가합니다., 그러나 이것은 내가 알고 있는 어떤 구현에서도 발생하는 것이 아니며 분명히허점POSIX 사양 1에서. 실제로는 호감도를 5²로 설정하거나증가하다5.
실제로 renice -n 20 "$pid"
친화도가 처음부터 부정적이지 않다고 가정하면 최소한 Linux에서는 친화도가 가장 높은 값으로 설정됩니다.
nice
(1970년대 중반 Unix V4에 도입됨) 처음에는 숫자 인수를 사용하지 않았습니다 . Unix V7과 csh(V6 기반 BSD)에서는 숫자 매개변수가 독립적으로 추가되었지만 방식은 달랐습니다. V7에서는 nice -5 cmd
Niceness를 5만큼 증가시키는 반면 csh(위 참조)에서는 이를 로 설정합니다 -5
. renice
원래는 BSD에서 왔으며 csh nice
( renice +5 "$pid"
Niceness를 5로 설정)와 일치합니다.
이 역사는 오늘날 세상 밖에서 친근감이 증가하거나 감소하는 이유를 csh
설명 nice -5
합니다 renice -5
. 나는 이것이 주요 옵션 이름을 제거하고 깨끗한 API를 사용하려고 도입된 -n
POSIX 발명품(예: for )이라고 생각합니다 (niceness 값도 이식 불가능하므로 증분을 처리하는 것이 더 합리적입니다).head -n
+
ionice
다른 프로세스의 I/O 우수성은 -p
해당 옵션을 통해 변경할 수도 있습니다.
따라서 쉘(여기서는 Bourne과 유사한 쉘) 내부에서 다음을 사용하여 쉘 인터프리터를 실행하는 프로세스의 장점을 변경할 수 있습니다.
renice -n 20 "$$"
ionice -c idle -p "$$"
또는 현재 하위 셸의 상태를 변경합니다.
(
pid=$(sh -c 'echo "$PPID"')
renice -n 20 "$pid"
ionice -c idle -p "$pid"
# do stuff in the subshell with lower priority / higher niceness
)
bash
쉘 에서는 현재 서브쉘 pid를 얻기 위해 and $BASHPID
in zsh
with $sysparams[pid]
(behind )를 사용할 수도 있습니다. 셸은 하위 프로세스가 있는 하위 셸 환경을 구현하지 않으므로 위의 내용은 전역 양성에 영향을 미칩니다 zmodload zsh/system
.ksh93
1에 소개됨SUSv3, 이것이전 버전(원래 renice
API도 지정함(더 이상 사용되지 않음))은 양수 값이 감소했음을 올바르게 나타냅니다.우선순위, 친절하지 않다
² util-linux
구현과 동일합니다. 이것은허점.-n
2009년에 추가됨-n
POSIX 준수를 위해, 그러나 관리자는 이것이 필요하다는 것을 깨닫지 못했습니다.증가POSIX 사양에서. 도움말 메시지2010년부터의미한다증가,그러나 그것은 진실이 아니다.