Contents
- FreeBSD, Linux - Подсказки, Линки
- Линки
- VIMkeys
- SED
- AWK
- MySQL
- SSH
- Поменять репозиторий при установке пакетов(FreeBSD)
- Посмотреть какие процессы грузят диск.(FreeBSD)
- Сгенерировать SSL сертификат для тестирования
- Проверка телнетом smtp
- SHELL
- CISCO
- Настройка сетевых интерфейсов (FreeBSD)
- Передернуть named
- Информация о файловой системе. (FreeBSD)
- Статистика загрузки дисков в gmirror. (FreeBSD)
- Полноэкранный вывод содержимого с периодичностью в n сек. (Linux)
- Поставить задание на выполнение в определенное время
- HTTP
- Ребилд паролей (FreeBSD)
- Чтобы проверить валидность ssl ключа и сетификата
- Проверить целостность RPM у VPS (Virtuozzo)
- Размер баз данных в postgresql
- Список баз данных в postgresql
- Использование nc
- Проброс портов с помощью nc
- Посмотреть кто жрет шаред мемори
- Заменяем виндовый символ перевода строки на юниксовый:
- Проверить работу сетевых интерфейсов (FreeBSD)
- Посмотреть железо (FreeBSD)
- Посмотреть какой сокет какая программа держит (Linux)
- Верификация пароля
- Сделать подсветку в ldapvi
- hping
- Статистика интерфейса(linux)
- Сетевая загрузка(FreeBSD)
- Активизировать ipfw
- Кто грузит процессор
- Наиболее частые команды управления exim
- SCREEN
- Packet Filter (pf, FreeBSD)
- .htaccess, Сделать редирект с корня на index.php
- x509, Посмотреть Subject
- iproute2 (Linux)
- Unixtime <--> человеческий вид
- Распаковать rpm
- ip2hex, hex2ip
- NFS(FreeBSD 6.X)
- Трассировка ввода/вывода в Linux
FreeBSD, Linux - Подсказки, Линки
Сюда будут складываться всякого рода мелкие подсказки, чтобы далеко не ходить.
Линки
VIMkeys
^ - начало строки, $ - конец строки, w - начало след слова, e - конец слова gg - начало файла, G - конец файла, Ctrl-g - информация <NN>G перейти на строку NN, <NN>d<^,w,e,$,d> - удаление R,r - замена, I,i - вставка, c<^,w,e,$> - замена в режиме вставки % - поиск парных скобок, o,O - создать пустую строку под,над курсором a,A - append - за курсором, строкой. поиск-замена :s/old/new - первое вхождение в строке :s/old/new/g - все вхождения в строке :#,#s/old/new/g - все вхождения между строками :%s/old/new/g - все вхождения в файле :%s/old/new/gc - с подтверждением каждой замены :!<внешняя команда>, :#,# w <имя файла> - записать в файл фрагмент :r FILENAME - считать с диска файл Автодополнение - CTRL+n, CTRL+p Свернуть текст (подробней см. :help zf) zf12 - свернуть 13 строк, начиная со строки под курсором. 12zf - свернуть 13 строк, начиная со строки под курсором. :0,fo[ld] - свернуть все от начала файла до текущей позиции курсора Развернуть текст - zo Показать все доступные опции - :set all
Многооконный режим редактирования файлов в Vim
Открытие двух или трех файлов в разных окнах vim.
С горизонтальной разбивкой окон на экране: vim -o /etc/passwd /etc/hosts vim -o /etc/passwd -o /etc/group /etc/hosts С вертикальной разбивкой окон на экране: vim -O /etc/passwd /etc/hosts vim -O /etc/passwd -O /etc/group /etc/hosts Наглядный просмотр отличий нескольких файлов vim -d файл1 файл2 vim -d файл1 -d файл2 файл3 Команды переключения между окнами: "CTRL-w w" - быстрое переключение на следующее окно "CTRL-w влево" - активация левого окна "CTRL-w вправо" - активация правого окна "CTRL-w вверх" - активация верхнего окна "CTRL-w вниз" - активация нижнего окна "CTRL-w n" - создать новое окно (":new файл" - открыть заданный файл) "CTRL-w q" - закрыть текущее окно (":qall" - закрыть все окна разом, ":qall!" - без сохранения, ":write" - записать данные во всех окнах) "CTRL-w s" - разбить текущее окно на 2 части для синхронного редактирования разных частей (в каждом окне будет содержимое одного и того же файла). "CTRL-w +", "CTRL-w -" - увеличение или уменьшение текущего размера окна "ESC 5 CTRL-w -", "ESC 5 CTRL-w +" - изменение размера сразу на 5 строк/столбцов "CTRL-w h" - переместить окно влево "CTRL-w j" - переместить окно ниже "CTRL-w k" - переместить окно выше "CTRL-w l" - переместить окно вправо "CTRL-w t" - переместить окно на самый верх "CTRL-w b" - переместить окно в самый низ
Табы
vim -p [filelist] - Открыть файлы в табах(вкладках). :tabnew [filename] OR :tabe [filename] - открыть файл в новом табе(вкладке). :tabnext/tabprev/tablast/tabfirst -Перемещение между вкладками.
См. также http://boombick.org/blog/posts/84
SED
Напечатать строки в которые паттерн входит: w | sed -n '/aabp/p' Напечатать строки в которые паттерн не входит: w | sed -n '/aabp/!p' Напечатать 5 первых строк: w | sed -n '1,5p' Напечатать все кроме первых пяти строк: w | sed -n '1,5!p' Удалить первую и последнюю строки: w | sed -e '1d' -e '$d' Вывести первую и последнюю строки: w | sed -n -e '1p' -e '$p' Удалить из потока строки из паттерна: w | sed '/aabp/d' Оставить в потоке строки из паттерна: w | sed '/aabp/!d' Добавить после строки с паттерном: w | sed '/aabp/aдополнительная строка' Заменить строку с паттерном: w | sed '/aabp/cстрока на замену' Вставить перед строкой с паттерном: w | sed '/aabp/iдополнительная строка'
AWK
AWK - Суммирование по полям
$ cat testawk pole1 12 pole2 12 pole1 10 pole2 90 $ cat testawk | awk '{sum[$1] +=$2} END {for(i in sum) {print i, sum[i]}}' pole1 22 pole2 102 $ cat testawk | awk '{sum[$1] +=$2; sum1 += $2 } END {for(i in sum) {print i, sum[i]} {print "Итого:", sum1}}' pole1 22 pole2 102 Итого: 124 $ cat testawk | awk '{sum[$1] +=$2} END {for(i in sum) {print i, sum[i]; sum1 +=sum[i]} {print "Итого:", sum1}}'
Суммируем с помощью awk
ls -la *.dat | awk '{SUM+=$5} END {print SUM}'
MySQL
Вычисление размера таблиц MySQL
use information_schema; SELECT concat(table_schema,'.',table_name),concat(round(table_rows/1000000,2),'M') rows, concat(round(data_length/(1024*1024*1024),2),'G') DATA, concat(round(index_length/(1024*1024*1024),2),'G') idx, concat(round((data_length+index_length)/(1024*1024*1024),2),'G') total_size, round(index_length/data_length,2) idxfrac FROM TABLES ORDER BY data_length+index_length DESC LIMIT 10;
Узнать не разъехалась ли реплика mysql
mysql> show slave status; на слейве mysql> show master status; на мастере
проверяем цифры и файлы - цифры не должны сильно расходиться если слейв встал надо сказать: start slave;
Если mysql уходит в своп
- В my.cnf key_buffer - уменьшить, query_cache_size - увеличить
анализ: mysqladmin ext | grep -i cache параметр Qcache_lowmem_prunes - если растет увеличиваем query_cache_size
Чекалка больших баз myisam (MySQL)
myisamchk --silent --force --fast --update-state --key_buffer_size=64M --sort_buffer_size=64M \ --read_buffer_size=1M --write_buffer_size=1M *.MYI
SSH
Openssh, директива ProxyCommand
ssh-клиент openssh позволяет в настройках указывать директиву ProxyCommand, описывающую как можно получить канал для связи с удаленным концом соединения. Например
~$ cat .ssh/config Host far-far-away ProxyCommand ssh -q -A -X my-jumphost 'nc -w1 final-target 22'
- Такой сниппет заставит по команде ssh far-far-away клиента зайти на хост my-jumphost и выполнить там команду nc -w1 final-target 22, которая организует pipe до 22 порта хоста final-target. Этот канал и будет использоваться как канал связи. Т.е. мы избавляемся от двойного ssh и попадаем куда надо за одну команду.
Ссылки: http://blog.ganneff.de/blog/2007/12/15#ssh_jumphost, http://zulu.in.ua/ssh-jumphost/ru/#more-148
SSH-тунель
ssh -2 -4 -N -f -L 6033:otherhostname:3306 user@hostname ssh -D bindingaddress:9999 username@hostname # socks proxy ssh -R 22299:localaddress:22 username@hostname # from hostname command "ssh -p 22299 127.0.0.1" дает возможность попасть на ssh-порт "localaddress"
Для автовнесения хостов в known_hosts
ssh -o "StrictHostKeyChecking no"
Поменять репозиторий при установке пакетов(FreeBSD)
export PACKAGEROOT=http://user:pass@rep.local pkg_add -r package
Посмотреть какие процессы грузят диск.(FreeBSD)
ps auxwwww -O inblk,oublk | more top -mio -o total
Сгенерировать SSL сертификат для тестирования
http://httpd.apache.org/docs/2.0/ssl/ssl_faq.html#selfcert
openssl req -new -x509 -nodes -out server.crt -keyout server.key
Проверка телнетом smtp
telnet mx.domain.tld 25
HELO dgfsdfg MAIL FROM: hgf@bar.ru RCPT TO: kjhk@mail.ru DATA тело письма . QUIT
SHELL
Итеративный цикл в sh (FreeBSD)
for i in `jot 14 2 15`; do echo $i; done
Итеративный цикл в sh (Linux)
for i in `seq 4 12`; do echo $i; done
Итеративный цикл в bash
for i in {1..15}; do echo $i; done for ((i=1;i<12;i++)) do echo $i; done
Как послать письмо с аттачем из shell
$ metasend -b -s "$SUBJECT" -f $TXTFILE -m text/plain -e none -n \ -f $ATTFILE -m application/octet-stream -e base64 -t $MAILTO $ mpack -s "$SUBJECT" -c application/octet-stream $ATTFILE $MAILTO $ mutt -a $ATTFILE -s "$SUBJECT" $MAILTO < $TXTFILE
CISCO
Посмотреть роутинг на кошке (Cisco)
rsh cisco-host sh ip route 12.1.23.5
Посмотреть статистику по порту (Cisco)
rsh cisco-host sh int Gi3/10
Посмотреть настройки порта (Cisco)
rsh cisco-host sh running int Gi3/10
Посмотреть статус (Cisco)
rsh cisco-host sh int status
Посмотреть соответствие мак-адресов и ip-адресов (Cisco)
rsh cisco-host sh ip arp
Настройка сетевых интерфейсов (FreeBSD)
/etc/start_if.$1, где $1 - имя сетевого интерфейса - это добавочный файл настроек, который вызывается из /etc/network.subr - практически нигде не задокументирован.
=== cut /etc/network.subr === ifscript_up() { if [ -r /etc/start_if.$1 ]; then . /etc/start_if.$1 return 0 fi return 1 }
Передернуть named
rndc reload
Информация о файловой системе. (FreeBSD)
- dumpfs - информация о файловой системе. (FreeBSD)
Статистика загрузки дисков в gmirror. (FreeBSD)
- gstat - статистика загрузки дисков в gmirror. (FreeBSD)
Полноэкранный вывод содержимого с периодичностью в n сек. (Linux)
watch -n1 cat /proc/meminfo
Поставить задание на выполнение в определенное время
echo "sutdown -p now " | at -t 10140100 echo "ls -la / | mail mypostbox@mydomain.tld" | at 1am Oct 14
HTTP
Проверка HTTP телнетом
telnet www.mail.ru 80 Trying 194.67.57.226... Connected to www.mail.ru. Escape character is '^]'. GET http://www.mail.ru HTTP/1.0
- Enter жать два раза
Проверка HTTP
printf "GET / HTTP/1.0\r\n\r\n" | netcat ya.ru 80 printf "HEAD / HTTP/1.0\r\n\r\n" | netcat ya.ru 80 HEAD ya.ru GET ya.ru lwp-request -m GET ya.ru lwp-request -m HEAD ya.ru
HTTP коды
coWiki status and error codes - HTTP коды
Ребилд паролей (FreeBSD)
pwd_mkdb -p -s 128 /etc/master.passwd
Чтобы проверить валидность ssl ключа и сетификата
нужно выполнить следующие команды:
openssl x509 -noout -text -in server.crt openssl rsa -noout -text -in server.key
У валидного ключа и сетификата должны совпадать Public Modulus и Exponent. Так же стоит обратить внимание на дату валидности сертификата.
Проверить целостность RPM у VPS (Virtuozzo)
/usr/share/vzpkgtools/vzrpm/bin/rpm --root=/vz/root/3042 --veid 3042 -Va | egrep '^..5|missing'
Размер баз данных в postgresql
echo "select pg_size_pretty(pg_database_size('template1'));" | sudo -u pgsql psql template1
Список баз данных в postgresql
echo "\encoding KOI8-R\l" | sudo -u pgsql psql template1
Использование nc
хост-приемник - $ nc -l 2222 > otrs.data.20070712.sql хост-источник - $ nc dst-host 2222 < otrs.data.20070712.sql
Проброс портов с помощью nc
В ined.conf прописать
FreeBSD
127.0.0.1:5000 stream tcp nowait nobody /usr/bin/nc nc -w 20 192.168.1.10 80
Linux
127.0.0.1:5000 stream tcp nowait nobody /usr/sbin/tcpd /bin/nc -w 20 192.168.24.203 22
Посмотреть кто жрет шаред мемори
# ipcs -a
Заменяем виндовый символ перевода строки на юниксовый:
perl -pi -e 's/\r\n/\n/'
Проверить работу сетевых интерфейсов (FreeBSD)
netstat -ni (колонка Ierrs, Oerrs) netstat -Lan - посмотреть очередь обработки сетевых запросов sockstat - посмотреть кто из программ держит порт ifstat - статистика загрузки интерфейса или netstat -w 1 -d
Посмотреть железо (FreeBSD)
dmidecode pciconf -l
Посмотреть какой сокет какая программа держит (Linux)
netstat -pvlA inet lsof -i -U
Верификация пароля
USERNAME=username; PASSWORDOFUSER=passwordofuser; openssl passwd -1 -salt `sudo cat /etc/master.passwd | grep $USERNAME | cut -f 3 -d '$'` $PASSWORDOFUSER
Сделать подсветку в ldapvi
:set ft=ldif
hping
hping -p 80 -S -c 25 amazon.com
Статистика интерфейса(linux)
- bmon -p eth0.100
Сетевая загрузка(FreeBSD)
systat -ifstat 1 systat -tcp 1 systat -ip 1
Активизировать ipfw
kldload ipfw && ipfw add 32000 allow ip from any to any
Кто грузит процессор
LINUX: ps -eo user,pcpu,pid,cmd | sort -r -k2 | head -6 FREEBSD: ps -eo user,pcpu,pid,command | sort -r -k2 | head -6
Наиболее частые команды управления exim
- Количество сообщений в очереди: exim -bpc
- Просмотр сообщений в очереди:
- всего: exim -bp
- недоставленных: exim -bpu
- табличный вариант: exim -bp |exiqsumm
- Просмотр конкретного сообщения по ID:
- лог сообщения: exim -Mvl message_id
- тело сообщения: exim -Mvb message_id
- заголовки: exim -Mvh message_id
- Форсировать процессинг очереди: exim -qff
- Форсировать доставку конкретного сообщения: exim -M message_id
- Удалить сообщение из очереди
- без баунса: exim -Mrm message_id
- с баунсом: exim -Mg message_id
- Интересная статистика по работе exim: eximstats -nr /var/log/exim/mainlog
SCREEN
ctrl-a S - добавить еще одно горизонтальное окно ctrl-a TAB - переключится в следующее окно
Packet Filter (pf, FreeBSD)
- Перезапустить pf
pfctl -nf /etc/pf.conf pfctl -f /etc/pf.conf
- Посмотреть правила: pfctl -sr
- Посмотреть статистику pfctl -sa
.htaccess, Сделать редирект с корня на index.php
- помогает при некоторых DDos-атаках
RewriteEngine On RewriteRule ^$ /index.php [R=permanent,L]
x509, Посмотреть Subject
openssl x509 -in <crtNAME>.crt -noout -subject
iproute2 (Linux)
Просмотр списка IP-адресов с помощью утилиты ip ip a ip a s ip address show Просмотр списка сетевых интерфейсов с помощью утилиты ip ip l ip l l ip link list Просмотр списка IP-адресов с помощью утилиты ip ip r ip r s ip route show Содержимое ARP-кэша ip n ip ns ip neigh show Удалить из ARP-кэша ip neigh delete 9.3.76.43 dev eth0
Unixtime <--> человеческий вид
FreeBSD date -j -f "%Y%m%d %T " "20080616 08:00:00" "+%s" date -r 1213873906 +"%Y%m%d %T" Linux date -d 22:00 +%s date -u -d "1970-01-01 1191939254 sec GMT" date -u -d "1970-01-01 1191939254 sec GMT" +"%Y%m%d %T"
echo 1213873906 | perl -pe 's/\d+/localtime($&)/e'
Распаковать rpm
rpm2cpio file.rpm | cpio -idmuv --no-absolute-filenames
ip2hex, hex2ip
echo 192.168.0.58 | (export IFS=.; read -a ip; printf "%02X%02X%02X%02X" ${ip[*]}) i=ffffffc0; echo $((0x${i:0:2})).$((0x${i:2:2})).$((0x${i:4:2})).$((0x${i:6:2}))
NFS(FreeBSD 6.X)
- Общий прорядок перезапуска всех nfs сервисов:
/etc/rc.d/rpcbind restart /etc/rc.d/nfsclient restart /etc/rc.d/nfsd restart /etc/rc.d/nfslocking restart /etc/rc.d/nfsserver restart /etc/rc.d/mountd restart
- Проверить, что все сервисы подхватились:
/usr/bin/rpcinfo -p showmount -ae
Трассировка ввода/вывода в Linux
Источник: http://www.opennet.ru/tips/info/1952.shtml
Утилита blktrace (присутствует в репозиториях Ubuntu и Debian) позволяет проконтролировать какие именно данные передаются для заданного блочного устройства.
Например, посмотреть общую статистику и детали обмена данными с /dev/sda можно выполнив команду:
blktrace -d /dev/sda -o - | blkparse -i -
где, blkparse фильтр для наглядного представления результатов.
В качестве альтернативы можно предложить задействование механизма /proc/sys/vm/block_dump, при записи 1 в этот файл начнется сбор данных, при записи 0 - результаты будут выведены в буфер dmesg. Скрипт для упрощения разбора данных можно загрузить здесь: http://www.digitalprognosis.com/opensource/scripts/top-disk-users
Мониторинг ввода/вывода не на уровне планировщика, а на уровне конечных процессов удобно проводить при помощи утилиты iotop (http://guichaz.free.fr/iotop/)