nice и ionice. Приоритеты процессов

nice — позволяет указывать приоритет выполнения процессором различных задач, диапазон приоритетов -20 до 19, где 19 наименьший, если не указать, то будет стандартный приоритет 0. Удобен например при упаковке данных в архивы, чтобы эта задача не грузила сервер или когда нужно запустить много процессов, распределив нагрузку, которые занимают все процессорное время.

Пример выполнения команды с самым низким приоритетом:

nice -n 19 КОМАНДА

Посмотреть таблицу процессов и их приоритетов можно так (колонка NI):

ps axl
ps -l

Если таблица большая, можно перенаправить вывод команды в Less и смотреть постранично:

ps axl | less

Чтобы изменить приоритет:

renice -n 19 ПРОЦЕСС(PID)

Проверка значения приоритета по умолчанию (стандартно 0):

nice

ionice — позволяет указать приоритет при операциях ввода/вывода, например чтобы снизить нагрузку на диск. Первым указывается класс от 1 до 3, потом приоритет от 0 до 7, где 7 наименьший.
Классы есть трех видов:
1) Real time — Преимущественный без обращения внимания на другие процессы с указанием приоритетов от 0 до 7.
2) Best Effort — Стандартный с указанием приоритетов от 0 до 7.
3) Idle — При простое без указания приоритетов.

Пример выполнения команды с самым низким приоритетом ввода/вывода:

ionice -c2 -n7 КОМАНДА

Для изменения приоритета:

ionice -c2 -n7 -p ПРОЦЕСС(PID)

Для просмотра установленного приоритета:

ionice -p ПРОЦЕСС(PID)

Можно указать одновременно приоритеты через nice и ionice:

nice -n 19 ionice -c2 -n7 КОМАНДА

Для указания высоких приоритетов например могут понадобится root права, по этому команды нужно выполнять от имени root пользователя либо добавив перед командой sudo.

Отключение шифрования ecryptfs домашнего каталога

Понадобилось однажды отключить шифрование ecryptfs домашнего каталога, которое было когда-то настроено при установке системы.

В первую очередь сделаем копию домашнего каталога нужного пользователя:

sudo cp -rp /home/user /home/user_backup

Получим точку монтирования в каталоге:

PRIVATE=`cat ~/.ecryptfs/Private.mnt 2>/dev/null || echo $HOME/Private`

Отмонтируем каталог:

ecryptfs-umount-private

Установим права на каталог:

chmod 750 $PRIVATE

Удалим каталог и директории ~/.Private, ~/.ecryptfs:

rm -rf $PRIVATE ~/.Private ~/.ecryptfs

А также в сделанной копии, а то ecryptfs-utils может не удалится:

rm -rf /home/user_backup/.Private /home/user_backup/.ecryptfs

Если ecryptfs больше не будет использоваться в системе, то удалим утилиты:

sudo apt-get remove ecryptfs-utils libecryptfs0

Установим правильные права на директорию пользователя:

sudo chmod 750 /home/user
sudo chown user:user -R /home/user

Скопируем из резервной копии домашнего каталога нужные файлы.
Все.

Можно посмотреть встроенную инструкцию командой:

ecryptfs-setup-private --undo

Смотрите также:
Решение ошибки «Could not chdir to home directory /home/user: Permission denied»

Решение ошибки «Could not chdir to home directory /home/user: Permission denied»

Перенес однажды систему на другой диск и при подключении через SSH увидел следующие ошибки:

Читать далее «Решение ошибки «Could not chdir to home directory /home/user: Permission denied»»

Директории с большим количеством файлов

Получилась однажды интересная ситуация, в одной директории оказались миллионы файлов.
Причем часть из них — нужные.

При попытке посмотреть список файлов естественно получится ступор на длительное время.
Как вариант их можно посмотреть через FTP, у которого за частую стандартный лимит на количество отображаемых файлов 10 000, например FTP клиентом FileZilla удобно перемещать файлы по директориям, но этот вариант длительный, из-за того что время еще тратится на FTP запросы, нагрузка на диск при этом низкая.

Если файлы не нужные, их можно удалить командой (с запросом подтверждения на удаление):

rm -r /dir/

Или удалить все без запроса вместе с директорией:

rm -rf /dir/

В моем случае не нужными были мелкие файлы, по этому перейдя в нужную директорию, удалил командой ниже все что меньше указанного размера:

cd /dir/
find -size -2 -type f -print -delete

Перед удалением можно посмотреть количество таких файлов и общее количество, однако это тоже длительные процесс:

find -maxdepth 1 -size -2 -type f -print | wc -l
find -maxdepth 1 -type f -print | wc -l

Если вместо -2 указать 0, то будут удаляться файлы с нулевым размером, то есть пустые.

Если нужно отсортировать файлы по директориям, перейдем в директорию с файлами, создадим нужные директории, например по датам и переместим файлы по шаблону (все у которых название начинается на 2017, -maxdepth 1 указывает что не нужно искать файлы в поддиректориях):

cd /dir/
mkdir 2017
find -maxdepth 1 -type f -name '2017*' -exec mv -vn -t /dir/2017 {} \+

Результат выполнения можно записывать в файл добавив к команде «> файл», например:

find -maxdepth 1 -type f -name '2017*' -exec mv -vn -t /dir/2017 {} \+ > /dir/dir/file.log

Перенос работающей системы Ubuntu на другой диск

На тесте использую систему Ubuntu Server 14.04.5 LTS.

И так, на работающей системе переключимся на root пользователя:

Читать далее «Перенос работающей системы Ubuntu на другой диск»

Резервное копирование Linux в архив и восстановление из него

На тесте приведу пример примитивного копирования Ubuntu Server системы в архив и восстановление на той же системе либо на чистой новой.

Читать далее «Резервное копирование Linux в архив и восстановление из него»

Решение «Suspicious process running under user» и «Excessive resource usage»

Иногда некоторые нужные процессы используют много ресурсов на сервере и система начинает часто уведомлять об этом на email.
Например как в моем случае, после установки Zabbix агента начали приходить уведомления:

Читать далее «Решение «Suspicious process running under user» и «Excessive resource usage»»

Как включить Horde, SquirrelMail и RoundCube в cPanel

cPanel позволяет использовать сразу несколько web интерфейсов для просмотра почты, иногда они могут быть отключены или возможно некоторые из них нужно отключить.

Читать далее «Как включить Horde, SquirrelMail и RoundCube в cPanel»

Поиск текста с использованием grep

grep — утилита для поиска указанного текста в файлах, именах файлов и т.д. из командной строки.

Читать далее «Поиск текста с использованием grep»

Установка и настройка Postfix

Postfix — агент пересылки почты (MTA — mail transfer agent) с открытым исходным кодом.

Допустим к IP адресу сервера привязано доменное имя, от которого в дальнейшем будет рассылаться почта.

Читать далее «Установка и настройка Postfix»