Полезные мелочи, которые бывают часто нужны
...и о которых часто забываешь
Копирование Web-сайта со структурой (grabbing)
Непрерывное копирование (высокая скорость): wget —no-parent -r -l 0 -k http://www.geocities.com/airfly/
Копирование с паузами 1 сек (меньше нагрузка на сайт)
wget -w 1 —no-parent -r -l 0 -k http://www.geocities.com/airfly/
Если добавить ключ -b
копирование будет выполняться в фоне, а итоги выполнения выводиться в файл wget-log
Работа YUM через прокси
Есть разные способы организовать работу YUM через прокси – задать переменные окружения и т.п.
Но самый удобный – прописать параметры в /etc/yum.conf
:
proxy=http://192.168.1.2:3128 proxy_username=root proxy_password=блаблабла
Очень удобный «Web-построитель команды ‘find‘»
Его страница находится здесь
MySQL: забыт рутовский пароль
Решение простое – сбросить забытый пароль:
1). В /etc/mycnf
в секцию [mysqld]
вставляем строку
skip-grant-tables
2). Перезапустить mysqld
После этого пароль будут сброшен и можно ввести любой другой.
Тестирование скорости веб-сервера
Используется консольная утилита mq
Для своей установки требует пакета httpd-tools и runtime-библиотеку Апача.
mq-c100-n1000http://mysite.com
где
c – число множественных запросов к серверу в секунду
n – число множественных запросов к серверу в секунду
MySQL: чиним битые таблицы
Бывает, что после длительной работы дедика или при его сбоях “бьются” таблицы типа MyISAM(в отличие от более медленных таблиц InnoDB, которые этим недостатком не обладают). Косвенный признак этого – резкое замедление работы сайта и перегруженность процесса mysqld – 200-300% и более.
Для “починки” всех таблиц всех баз данных на сервере необходимо выполнить следующую команду:
mysqlrepair-auto-repair all-databases user=root -password
Здесь mysqlrepair – лишь линк на исполняемый файл mysqlcheck, обычно расположенный в /usr/bin/
Вначале программа запросит рутовский пароль MySQL.
Перед починкой таблиц программа сначала анализирует их состояние и выводит на экран их состояние.
Корректные таблицы будут отмечены словом Ok.
Настоятельно рекомендуется эту команду дополнить логгированием в текстовый файл, например, > log.txt
Иначе, если не хватит буфера консоли, вся история восстановления в него не поместится.
Для просмотра всех возможностей программы следует выполнить команду mysqlrepair —help
или mysqlrepair -?
Загрузка Linux мелким шрифтом
В современных дистрибутивов Linux загрузка системы на экране и работа в ее консоли обычно отображается удобным небольшим шрифтом, позволяющим разместить на экране больше информации. Но иногда это не так, и шрифт выглядит крупным, 80×25
Чтобы исправить это, необходимо в /boot/grub/grub.conf
в строку kernel…
добавить параметр режима экрана vga=
Например, для режима 1024×768
данный параметр будет равен 0×314
и строка может выглядеть так:
kernel/vmlinuz-2.6.18-194.26.1.el5 roroot=/dev/System/Rootelevator=deadlinevga=0×314
Кстати, установка мелкого шрифта помогает избежать в Федоре крякозябриков в системных сообщениях при ее ребуте или выключении.
PS. При использовании технологии виртуализации Xen из-за особенности ее ядра указанный метод не работает.
Сетевая установка CentOS
Среди различных вариантов установки продуктов Red Hat есть сетевой вариант, когда локальная загрузка производится с небольшого загрузочного дистрибутива объемом порядка 10 Mb, а остальное все дотягивается с репозитариев. Удобно, если есть скоростной канал.
Но вот за что хочется дать пинка радхатовским разработчикам – так это за извращенный синтаксис такой установки. Дело вот в чем.
Когда процесс установки доходит до указания источника с дистрибутивом, возникает окошко для ввода его адреса, необходимо вводить:
http://mirror.centos.org/centos/5/os/x86_64/
вместо
http://mirror.centos.org/centos/5/os/x86_64/images
Т.е. без указания каталога /image с образом. Почему именно так – подержите арбуз…
Подсчет контрольной суммы файлов
Иногда требуется подсчитать контрольную сумму файлов, лежащих в каталогах и подкаталогах. Всего несколько команд, требуемых для выполнения этой задачи, демонстрируют мощь Linux, в частности, интерпретатора bash:
1 2 3 4 5 | #!/bin/sh cd "$1" PathName=$(basename $(pwd)) cd .. find "$PathName" -type f -print0 | xargs -0 md5sum > "$PathName".md5 |
Для удобства помещаем эти команды в исполняемый скрипт, например, csumm.sh
, и запускаем его с аргументом, равным пути подсчитываемого каталога, например:
./csumm.sh /boot
При этом, если не хотим, чтобы файл скрипта тоже попал в подсчет, размещаем его в каталоге выше, чем подсчитываемый каталог.
Данный скрипт рекурсивно обходит все папки и файлы и выдает результат в файле с именем, совпадающим с именем подсчитываемого каталога, примерно в таком виде:
29127f2917ab5da409cf96d2f85f51ce boot/grub/jfs_stage1_5 3a470d923dea5de8d6547c7431a476dd boot/grub/splash.xpm.gz f94a0824e7862bdab090b0a9dbb26384 boot/grub/vstafs_stage1_5 1f143a653df3c6961259e181cb84236c boot/grub/fat_stage1_5 c1e7a72a73b5db02653a8d4e2d760c07 boot/grub/ffs_stage1_5 48c2edef9527d3fb1259b74dbaab9dd8 boot/grub/stage1 c775729f11f1d3ef288482927a2ae2bb boot/grub/minix_stage1_5
Исключение обновления некоторых пакетов в YUM
Чтобы отключить обновление некоторых пакетов, производимое с помощью YUM, необходимо в конфиге /etc/yum.conf
дописать параметр exclude=
и после него перечислить через запятую исключаемые пакеты,
Например:
exclude=isdn4k-utils,ql2200-firmware,irda-utils,bluez-utils,wvdial,php*,rp-pppoe
Очень полезная команда, когда необходимо предупредить пользователей, зашедших на сервер, что он, например, будет перезагружаться:
wall Who can hide - the server will reboot!
Результат работы команды wall:
Broadcast message from abdula@1c-server.local (pts/0) (Fri May 13 00:52:44 2011)Who can hide - the server will reboot!
Выдаваться она может любым пользователем.
Директивы сокрытия сигнатуры сервера и Апача
Чтобы скрыть от браузеров пользователей наименование ОС и веб-сервера Apache, нужно в конфиг-файл Апача /etc/httpd/conf/httpd.conf
поместить две директивы:
ServerSignature Off ServerTokens Prod
Быстрый скан локальной сети
Чтобы быстро просканировать сеть класса “C”, достаточно запустить утилиту nmap
в следующем формате:
nmap 192.168.1.0/24
После нескольких секунд работы она выдаст примерно следующее:
............................... Nmap scan report for 192.168.1.10 Host is up (0.00028s latency). Not shown: 997 filtered ports PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 23/tcp open telnet 80/tcp open http 10000/tcp open snet-sensor-mgmt ...............................
Конвертация русскоязычных доменов
Конвертация домена русский -> punycode
idn -a --quiet "Энергоагентство.рф"
Конвертация домена punycode -> русский
idn -s --quiet "xn--80aebbhd5cfffosmb7m.xn--p1ai" | idn -u --quiet
Онлайн:
Есть масса онлайн-перекодировщиков, например на сайте http://www.reg.ru
Установить часовой пояс в CentOS без использования утилит.
В папке /usr/share/zoneinfo
находим нужный файл зоны.
Удаляем файл /etc/localtime
, вместо него делаем символическую сылку на найденный файл зоны:
mv /etc/localtime /etc/localtime_bkp ln -s /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
Для Новосибирска:
ln -s /usr/share/zoneinfo/Asia/Novosibirsk /etc/localtime
Узнать список файлов которые содержит пакет (или какие файлы установлены при установке пакета)
RedHat:
rpm -qa | grep <часть имени пакета> rpm -ql <имя пакета> rpm -qf <полный путь к файлу>
Debian:
dpkg --list | grep <часть имени пакета> dpkg -L <имя пакета>
Ключи монтирования NFS
строка в /etc/fsatb
192.168.1.53:Images /mnt/NAS3_192.168.1.53 nfs defaults,soft,timeo=20,retrans=2,nolock 0 0
ключи:
soft / hard Determines the recovery behavior of the NFS client after an NFS request times out. If neither option is specified (or if the hard option is specified), NFS requests are retried indefinitely. If the soft option is specified, then the NFS client fails an NFS request after retrans retransmissions have been sent, causing the NFS client to return an error to the calling application.
NB: A so-called “soft” timeout can cause silent data corruption in certain cases. As such, use the soft option only when client respon‐ siveness is more important than data integrity. Using NFS over TCP or increasing the value of the retrans option may mitigate some of the risks of using the soft option. timeo=n The time in deciseconds (tenths of a second) the NFS client waits for a response before it retries an NFS request.
retrans=n The number of times the NFS client retries a request before it attempts further recovery action. If the retrans option is not spec‐ ified, the NFS client tries each request three times. The NFS client generates a “server not responding” message after retrans retries, then attempts further recovery (depending on whether the hard mount option is in effect).
lock / nolock Selects whether to use the NLM sideband protocol to lock files on the server. If neither option is specified (or if lock is speci‐ fied), NLM locking is used for this mount point. When using the nolock option, applications can lock files, but such locks provide exclusion only against other applications running on the same client. Remote applications are not affected by these locks.
Настройка сети в CentOs
/etc/sysconfig/network-scripts/ifcfg-eth0:
DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=none IPADDR=192.168.1.86 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 NETWORKING_IPV6=no IPV6INIT=no
Проделать действия над всеми файлами в папке в Linux
for file in *.jpg do convert -resize x800 "$file" x576/"$file" done
Состояние, уровень и качество сигнала wifi
iwconfig wlan0 iwlist scan
Многократный запуск команды
команда watch
по умолчанию запускает команду с периодичностью 2 сек
watch "iwconfig wlan0 | grep Qual"
Вывести содержимое каталога в два столбца
ls | paste - -
Узнать свой внешний IP в консоли Linux
curl https://showip.net/
Add Static route in Ubuntu (Добавить статический маршрут в Ubuntu)
В файле /etc/network/interfaces
в раздел к интерфейсу дописать примерно это:
up ip route replace 172.16.0.0/24 via 192.168.10.1
Cron: /etc/cron.d/backup
PATH=/sbin:/usr/sbin:/bin:/usr/bin #m h dom mon dow user command 10 23 * * 7 root /root/bin/full-code-backup.sh */10 * * * * root date +%Y-%m-%d\ %H\:%M >> /var/log/csync2.log; /sbin/csync2 -xv >> /var/log/csync2.log 2>&1
Установка репозитория epel в CentOS
yum install epel-release
Вывод результатов работы команд в виде таблицы
mount | column –t
Сортировка процессов
По используемой памяти:
ps aux | sort -nk 4
По использованию CPU:
ps aux | sort -nk 3
Сетевые утилиты в CentOS7
yum install net-tools
Настройка bash
/root/bash.rc:
# не сохранять в истории дубликаты команд и команды начинающиеся с пробела HISTCONTROL=ignoreboth # добавлять в историю команды со всех открытых терминалов shopt -s histappend # длина истории HISTSIZE=10000 HISTFILESIZE=20000
Узнать какой процесс кушает своп
for file in /proc/*/status ; do awk '/VmSwap|Name|^Pid:/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 3 -n -r | less
или:
smem -t -p
Определить каталог, в котором больше всех файлов (бывает нужно, когда высокий inode usage на файловой системе):
find / -xdev -printf '%h\n' | sort | uniq -c | sort -k 1 -n
fstab
Сделать монтирование диска не обязательным
/dev/usb0 /mount/usb ext4 auto,nofail,x-systemd.device-timeout=5s 0 0
Автомонтирование диска при обращении (удобно делать для сетевых фс)
/dev/usb0 /mount/usb ext4 x-systemd.automount 0 0
Монтирование диска после монтирования предыдущего
/dev/sdb /mount/data ext4 auto,nofail,x-systemd.device-timeout=5s 0 0 /dev/sdb1 /mount/data/logs ext4 auto,x-systemd.requires-mounts-for=/mount/data 0 0
Монтирование сетевой фс после того, как поднимется сеть
nfsmount /mnt/nfs fuse _netdev 0 0
Проверить целостность файлов, установленных из пакетов debian
sudo debsums -a | grep -v OK
Enjoy!