Трубить приятно?
У меня есть следующая команда (упрощенно):
mysqldump <databases> | bzip2 > backupfile.sql.bz2
По какой-то причине процесс bzip2 сошел с ума и поднял нагрузку на процессор до 60. Я не знаю почему, но я надеюсь, что использование nice может смягчить его в будущем, но я хочу использовать только nice для bzip2, а не mysqldump.
Могу ли я просто изменить его на
mysqldump <databases> | nice bzip2 > backupfile.sql.bz2
или я должен сделать
nice mysqldump <databases> | bzip2 > backupfile.sql.bz2
Спасибо
2 ответа
TL; DR: правильная команда
mysqldump <databases> | nice bzip2 > backupfile.sql.bz2
nice
Команда только изменяет правильность команды, которую она получает как прямой аргумент. Это не относится ко всему конвейеру или цепочке команд, если вы просто пишете это в начале строки.
Следовательно:
mysqldump <databases> | nice bzip2 > backupfile.sql.bz2
будет делать то, что вы хотите и запустить
mysqldump
обычно, тогда какbzip2
работает с повышенным свойством добротности +10.nice mysqldump <databases> | bzip2 > backupfile.sql.bz2
будет делать то, что вы хотите, это сделает
mysqldump
хорошо, но пустьbzip2
беги нормально.Третий вариант, который позволяет вам правильно запускать все команды конвейера, состоит в том, чтобы выполнить их в новом процессе оболочки с повышенной точностью, например
nice bash -c 'mysqldump <databases> | bzip2 > backupfile.sql.bz2'
Тем не менее, обратите внимание, что повышение привлекательности процесса не обязательно снижает его загрузку процессора. Пока у вас остаются ресурсы ЦП, хороший процесс будет продолжать использовать столько процессорного времени, сколько может и требует. Только если ваш ЦП перегружен (это означает, что ваши запущенные процессы запрашивают в общей сложности больше процессорного времени, чем вы можете предложить), хорошие процессы отойдут назад и позволят ЦП отдавать нормальным или не приятным процессам больший приоритет.
Если вы хотите, чтобы приятно только bzip выбрать первую версию.