TL; DR : o comando correto é
mysqldump <databases> | nice bzip2 > backupfile.sql.bz2
O comando nice
apenas altera a gentileza do comando que recebe como argumento direto. Ele não se aplica a todo o pipeline ou a uma cadeia de comandos se você apenas escrevê-lo no início da linha.
Portanto:
-
mysqldump <databases> | nice bzip2 > backupfile.sql.bz2
fará o que quiser e lançará
mysqldump
normalmente, enquantobzip2
será executado com uma propriedade de gentileza elevada de +10. -
nice mysqldump <databases> | bzip2 > backupfile.sql.bz2
fará o oposto do que você deseja, ele tornará
mysqldump
legal, mas deixebzip2
executar normalmente. -
Uma terceira opção que permite executar todos os comandos do pipeline seria executá-los em um novo processo de shell com alta gentileza, como
nice bash -c 'mysqldump <databases> | bzip2 > backupfile.sql.bz2'
No entanto, por favor, note que aumentar o niceness de um processo não necessariamente reduz seu uso de CPU. Contanto que você ainda tenha recursos de CPU, um bom processo continuará a usar o máximo de tempo de CPU que puder e requerer. Somente se sua CPU estiver sobrecarregada (o que significa que seus processos em execução solicitam um tempo total de CPU maior do que o que você pode oferecer), os processos agradáveis retrocederão e deixarão a CPU dar mais prioridade aos processos normais ou não agradáveis.