다음 상황을 고려하십시오.
nice -10 mysqldump -u crontab -p'readonly' --databases "$1" | gzip > $hour_folder"/"$1"_h"$hour".sql.gz"
이것은 nice
단지 적용 가능합니까 mysqldumnp
, 아니면 또한 적용 가능합니까 gzip
?
답변1
아니요, nice
예를 들어 or shell 키워드와 달리)는 독립 실행형 명령이므로 파이프로 연결된 다른 명령에 적용할 수 없습니다.!
time
nice
친화성의 변경은 나중에 인수로 전달된 명령을 실행하는 프로세스(및 친화성은 포크에서 상속되므로 명령 자체에 의해 생성될 수 있는 모든 프로세스) 에만 적용됩니다 .
이 두 명령의 사용 편의성을 향상시키려면 두 가지 별도의 호출이 필요합니다 nice
.
nice cmd1 | nice cmd2
또는 nice
파이프를 시작하는 쉘을 시작하십시오.
nice sh -c 'cmd1 | cmd2'
renice
또는 파이프를 시작하기 전에 현재 쉘 또는 하위 쉘 프로세스의 성능을 향상시킬 수 있습니다(일부 renice
구현 은놓다다른 사람이 되는 것의 아름다움증가하다지정된 금액에 따라).
그리고 zsh
:
zmodload zsh/system
(renice 10 $sysparam[pid]; cmd1 | cmd2)
그리고 bash
:
(renice 10 "$BASHPID"; cmd1 | cmd2)
에서는 zsh
비동기적으로 시작된 명령의 선호도가 5만큼 증가하므로( bgnice
옵션이 비활성화되지 않은 경우) 다음을 수행할 수도 있습니다.
(cmd1 | cmd2 &) &
두 명령의 호감도가 10 증가합니다.
$ ps -o nice,args | cat
NI COMMAND
0 /bin/zsh
0 ps -o nice,args
0 cat
$ nice ps -o nice,args | cat
NI COMMAND
0 /bin/zsh
10 ps -o nice,args
0 cat
$ nice ps -o nice,args | nice cat
NI COMMAND
0 /bin/zsh
10 ps -o nice,args
10 cat
$ ps -o nice,args | cat &
NI COMMAND
0 /bin/zsh
5 ps -o nice,args
5 cat
$ (ps -o nice,args | cat &) &
NI COMMAND
0 /bin/zsh
10 ps -o nice,args
10 cat
또한 nice mysqldump...
이 작업에 사용되는 상당량의 CPU 시간은 mysqld
요청을 처리하는 프로세스에 소비되며 mysqldump
실행 nice
프로세스의 상태만 설정하며 mysqldump
이는 MySQL 서버 프로세스의 상태에는 영향을 주지 않습니다. 그들 자신.
!
time
in 및 bash
Korn과 같은 일부 다른 쉘은 명령이 아닌 쉘 언어의 키워드입니다. 다음 파이프에 적합합니다. 그러나 뒤에 -p
단어가 time
오거나 time
어떤 방식으로든 인용된 경우에는 time
독립 실행형 명령을 실행하므로 인수로 전달된 명령을 통해서만 작동합니다.