kill $(ps aux | grep something | awk '{print $2}')
Архив категории ‘Операционные системы’
Найти и удалить все процессы, подходящие под критерий
MySQL не может сделать open_files_limit более 1024
CentOS 7, MariaDB 10. Было необходимо увеличить open_files_limit до 15000.
В /etc/my.cnf :
open_files_limit = 15000
но после перезагрузки сервиса значение осталось на уровне 1024. В логах обнаружилась запись:
[Warning] Could not increase number of max_open_files to more than 1024
Решение:
Необходимо увеличить директиву LimitNOFILE демона systemd для сервиса mariadb.service. Для этого достаточно прописать в файле /usr/lib/systemd/system/mariadb.service внутри секции [service] строку:
LimitNOFILE=15000
Но, так делать не рекомендуется, поскольку изменения могут быть затёрты при обновлении пакетов. Как этого избежать, описано в этом же файле. Поэтому мы так и поступим. Создаём директорию /etc/systemd/system/mariadb.service.d , а внутри неё файл limits.conf , в который впишем 2 строки:
[Service]
LimitNOFILE=15000
перезагружаем сервисы:
systemctl daemon-reload
systemctl restart mariadb.service
проверяем:
mysql -e 'show variables like "open_files%"'
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| open_files_limit | 15000 |
+------------------+--------+
Сброс IPMI с помощью ipmitool
Завис веб-интерфейс IPMI на одном из серверов Supermicro.
К счастью, сохранился доступ к операционной системе, установленной на сервере (CentOS 6).
Проблему решаем с помощью ipmitool.
Установим:
yum install OpenIPMI OpenIPMI-libs ipmitool
Запускаем сброс IMPI:
ipmitool mc reset cold
Если получаем ошибку вида
Could not open device at /dev/ipmi0 or /dev/ipmi/0 or /dev/ipmidev/0: No such file
то включаем модули ядра:
modprobe ipmi_devintf modprobe ipmi_si
Если после сброса IMPI обнаруживаем неубиваемый процесс kipmi0, жрущий 100% ядра, ограничиваем его прожорливость:
echo 100 > /sys/module/ipmi_si/parameters/kipmid_max_busy_us
Иногда ipmitool, запущенный с той же машины, где работает IPMI, не может отработать и зависает. В таком случае поможет ipmitool, установленный на другом сервере. Обращаемся с другого сервера по сети командой:
ipmitool -I lan -H xxx.xxx.xxx.xxx -U ADMIN -P PASSWORD -v mc reset cold
Подключить новый диск
Как создать на новом диске раздел и файловую систему.
В данном примере новый диск определяется в системе как sdb.
1. Создаём раздел.
Если диск с MBR, можно использовать fdisk.
Заходим в оболочку fdisk.
fdisk /dev/sdb
жмём n — создаём новый раздел
жмём 1 — указываем номер раздела
жмём w — сохраняем изменения
Если диск в GPT, то fdisk не сгодится. Напишет такое:
WARNING: GPT (GUID Partition Table) detected on ‘/dev/sdb’! The util fdisk doesn’t support GPT. Use GNU Parted.
Значит и будем использовать parted.
Заходим в его оболочку, используя наш новый диск.
parted /dev/sdb
делаем раздел
mkpart primary 0% 100%
и выходим
quit
2. Далее создаём файловую систему
mkfs.ext4 /dev/sdb1
3. Монтируем
mount /dev/sdb1 /mnt
4. Для автомонтирования раздела правим /etc/fstab, вписав в него строку
/dev/sdb1 /mnt ext4 defaults 1 2
Поиск и удаление вредоносного кода, если он внедрён во множество файлов
Попался сайт с массово заражёнными файлами javascript. В конец каждого файла были дописаны две строки:
;document.write(unescape("%3C%73%63%72%69%70%74%20%74%79 ... далее много кода ... %73%63%72%69%70%74%3E%09"));
;var OOO='7kSKlBXYjNXZfhSZwF2YzV ... далее много кода ... ;eval(lI1(I11(OOO)));
Ищем в текущей директории файлы с расширением .js, внутри них ищем строку, начинающуюся на ;var OOO=
и заканчивающуюся на eval(lI1(I11(OOO)));
. Заменяем на пустую строку (двойной слэш).
find . -name "*.js" -type f -print0 | xargs -0 sed -i 's/;var OOO=.*eval(lI1(I11(OOO)));//g'
аналогично поступаем с первой строкой:
find . -name "*.js" -type f -print0 | xargs -0 sed -i 's/;document\.write(unescape("%3C%73%63%72%69.*%73%63%72%69%70%74%3E%09"));//g'
Добавление раздела внутри виртуальной машины
После расширения диска в виртуальной машине KVM необходимо создать новый раздел.
Например, у нас был диск размером 43 ГБ, добавили 10:
# fdisk -l Disk /dev/vda: 53.7 GB, 53687091200 bytes 255 heads, 63 sectors/track, 6527 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0004fd07 Device Boot Start End Blocks Id System /dev/vda1 * 1 5091 40892224 83 Linux /dev/vda2 5091 5222 1048576 82 Linux swap / Solaris
Создадим раздел на неиспользуемом пространстве.
# fdisk /dev/vda WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (5222-6527, default 5222): Using default value 5222 Last cylinder, +cylinders or +size{K,M,G} (5222-6527, default 6527): Using default value 6527 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks.
Здесь мы вошли в утилиту fdisk, ввели команду n (создать раздел), затем ввели p (primary-раздел), затем номер раздела 3. Завершили работу записью изменений, нажав w.
Перезагружаемся, чтобы перечитать таблицу разделов.
Теперь у нас есть новый раздел vda3.
Создадим файловую систему
mkfs.ext4 /dev/vda3 -j
Монтируем
mount /dev/vda3 /mnt
Правим файл /etc/fstab
/dev/vda3 /mnt ext4 defaults 1 1
Замена MySQL и установка MariaDB в CentOS 6
MariaDB — это СУБД, бинарно совместимая с MySQL, имеющая ряд улучшений и оптимизаций в коде, которые влияют на производительность баз данных в целом.
Рассмотрим замену MySQL на MariaDB в ОС CentOS 6.
Итак, после того, как сделан полный бэкап всех баз данных, удаляем MySQL и сопутствующие пакеты.
Самое время для дисклеймера: все описанные действия вы будете делать на свой страх и риск, и я не несу ответственности за порчу или утерю данных, связанную с данной статьёй.
# yum remove mysql*
Перед установкой MariaDB нам понадобится пакет совместимости из репозитория Remi.
# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
Устанавливаем:
# yum --enablerepo=remi-test --disablerepo=remi install compat-mysql55
Если этого не сделать, то вы скорее всего получите ошибку при запуске php-fpm. В таком случае вам следует удалить все пакеты mysql:
# yum remove mysql-server mysql-libs mysql-devel mysql*
и установить пакет совместимости из репозитория remi.
Для установки MariaDB создадим файл /etc/yum.repos.d/MariaDB.repo со следующим содержимым:
[mariadb] name = MariaDB baseurl = http://yum.mariadb.org/5.5/centos6-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
Замените centos6-amd64 на centos6-x86 в случае, если вы используете 32-разрядную версию ОС.
Наконец, устанавливаем клиент и сервер СУБД:
# yum install MariaDB-server MariaDB-client
Стартуем сервис:
# service mysql start
Добавляем его в автозагрузку:
# chkconfig mysql on
Так же как и после установки MySQL, делаем первоначальную установку root-пароля, удаление тестовой базы, анонимных пользователей, и удалённого доступа root:
# mysql_secure_installation
Все базы данных и пользователи, которые были в MySQL, должны сохраниться.
Перезагружаем сервис:
# service mysql restart
и убеждаемся, что всё в порядке, зайдя в консоль:
# mysql -uroot -p
после ввода пароля root видим следующее:
Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 131 Server version: 5.5.30-MariaDB-log MariaDB Server Copyright (c) 2000, 2013, Oracle, Monty Program Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
Вот и всё: ваш сервер теперь работает на MariaDB.
Расход процессами занимаемой памяти с сортировкой
Полезная однострочная команда, показывающая занимаемое процессами место в оперативной памяти. Суммирует все процессы с одинаковым именем, и сортирует по убыванию. Выводит объём в мегабайтах и имя процесса.
ps -eo comm,rss|awk '{arr[$1]+=$2} END {for (i in arr) {print arr[i]/1024, i}}'|grep -v '^0 '|sort -n -r
Установка устаревшего ядра CentOS
В официальных зеркалах CentOS расположены пакеты только для последних версий, устаревшие удаляются.
Однако, их можно найти здесь.
Чтобы установить старое ядро, например 2.6.32-220 от версии CentOS 6.2, выполняем команду:
rpm -ivh --oldpackage http://vault.centos.org/6.2/os/x86_64/Packages/kernel-2.6.32-220.el6.x86_64.rpm
Удалить ещё проще:
rpm -e kernel-2.6.32-220.el6.x86_64
Удалить файлы, за исключением некоторых
Удаляем все файлы в текущей директории, кроме некоторых, перечисленных в аргументах.
Простейшая конструкция — спасаем от удаления один файл fileX
:
find . -type f -not -name "fileX" -print0 | xargs -0 rm
Из расстрельного списка можно исключить сразу несколько файлов:
find . -type f -not -name "file1" -not -name "file2" -print0 | xargs -0 rm