====== Типовые задачи ======
===== Проверка примонтированных дисков без исправления =====
fsck -nf /
===== tail с подсветкой строк =====
Вывод файла почтового лога с подсветкой строк содержащих слово "sent". I в вонце sed-команды 's/.../.../I' делает поиск независящим от регистра.
tail -f /var/log/mail.log | sed --unbuffered -e 's/\(.*sent.*\)/\o033[32m\1\o033[39m/I'
То же с помощью awk
tail -f /var/log/mail.log | awk '{if ($0 ~ /sent/) print "\033[32m" $0 "\033[39m"; else print $0}'
Подсветка только совпадающих слов с помощью sed
tail -f /var/log/mail.log | sed --unbuffered -e 's/\(.*\)\(sent\)\(.*\)/\1\o033[32m\2\o033[39m\3/I'
Подсветка только совпадающих слов с помощью grep
tail -f /var/log/mail.log| grep --color=always -iE 'sent|$'
===== Генерация пароля =====
openssl rand -base64 15
openssl rand -base64 24
===== Замеры скорости =====
Замер скорости чтения большого количества мелких файлов (на примере папки /usr)
tar c /usr |pv -s $(du -sb /usr | awk '{print $1}')>/dev/null
Замеры скорости диска командой dd
Запись
dd if=/dev/zero of=/dev/sdb status=progress bs=8M
Чтение
dd of=/dev/null if=/dev/sdb status=progress bs=8M
===== Telnet с передачей команд из строки/файла =====
Команда telnet не умеет принимать команды для выполнения кроме как с клавиатуры. Вариантом решения может быть использование expect, либо вместо телнета можно использовать netcat.
Пример получения статистических данных от сервиса memcached:
echo stats|nc 127.0.0.1 11211|egrep "evict|get_hit|get_miss"
===== Пинг нефрагментированными пакетами =====
Пинг нефрагментированными пакетами размером 9000 байт:
ping -M do -s 9000 192.168.1.1
для стандартного джамбо-фрейма(MTU=9000) следует указывать ''-s 8972''
===== Ping нескольких хостов одновременно =====
Данный функционал отсутствует в программе ping, но есть в fping, которую можно установить.
fping -c 9999 -i 1000 192.168.0.1 192.168.0.2 ya.ru
-c - сколько раз пинговать
-i - интервал между пингами в милисекундах
===== Тюнинг производительности с помощью tuned =====
tuned использует провфили для задания параметров системы, связанных с производительностью.
Посмотреть какие профили доступны:
tuned-adm list
Текущий профиль:
tuned-adm active
Задать новый профиль производительности:
tuned-adm profile throughput-performance
===== Отключение IPv6 =====
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.eth0.disable_ipv6 = 1
sysctl --system
===== Запуск фоновой программы по SSH =====
ssh login@host 'nohup /path/to/program >/dev/null 2>&1
===== Выполнение серии команд по SSH =====
Делаем переменную с текстом скрипта
script="
if [ Condition_1 ]; then
command1
elif [ Condition_2 ]; then
command2
command3
fi"
И затем
ssh login@host "$script"
или
ssh login@host 'bash -s' <<< "$script"
===== самодельный VPN через SSH =====
ssh -L 127.0.0.1:2222:127.0.0.1:2222 server
socat -d -d TCP4-LISTEN:2222,reuseaddr TUN:192.168.255.1/24,up
iptables -t nat -A POSTROUTING -o tun0 -s 192.168.255.0/24 -j MASQUERADE
socat TCP:localhost:2222 TUN:192.168.255.2/24,up
ip r add 0.0.0.0/0 via 192.168.255.1 metric 10
===== Поиск имен файлов больше 255 символов =====
Это может быть полезно при переносе файлов с NTFS/CIFS дисков на диски линукс сервера (где ограничение на длину имен в 256 байт, что для русских букв в UTF-8 будет означать 127 символов)
find . -type f -print| while read line; do len=$(basename "$line"|wc -c); if [[ $len -ge 255 ]]; then echo "$line"; fi done
{{tag>linux unix shell scripts}}