Буду здесь собирать всяческие полезные штуки и "подводные камни", на которые наткнулся в процессе работы. Поскольку сам я, скорее, пользователь Linux, то многие вещи профессионалам покажутся очевидными. Не стоит за это меня казнить :) Я хочу всего лишь собрать для себя в одном месте шпаргалку. Итак.
1. Как остановить все экземпляры программы (по маске), если killall не помогает:
kill -9 `ps -ef | grep %programm_name% | grep -v grep | awk '{print $2}'`
2. Поиск информации в файлах (аналоги ORDER BY / GROUP BY в SQL):
cat access.log | sort | uniq -c | sort > access.1.log
(sort - сортирует, с ключем -r сортирует в обратном направлении; uniq -c - выполняет "группировку", удаляет дубликаты и пишет количество вхождений)
3. Не запускается последний скрипт в cron
Это связано с тем, что каждая строчка в crontab'е должна заканчиваться символом новой строки (т.е. последняя строчка должна быть пустой), что в свою очередь сделано для безопасности (чтобы исключить запуск битых команд, если вдруг файл записался не полностью)
4. Как увеличить счётчик в bash-скрипте:
i=0
i=`expr $i + 1`
Пробелы значат - нужно расставлять их именно в таком порядке. В конструкциях for, while и if, кстати, тоже.
5. Всякие разные команды анти-ддос:
tail -n 100000 nginx_access.log | grep "GET / HTTP" | cut -f 6 -d \" | sort | uniq -c | sort > uagent.log Браузеры по кол-ву запросов на главную страницу
tail -n 100000 nginx_access.log | grep "GET / HTTP" | cut -f 1 -d " " | sort | uniq -c | sort > ip.log IP по кол-ву запросов на главную страницу
tail -n 100000 nginx_error.log | grep prematurely | cut -f 22 -d " " | sort | uniq -c | sort > ip.log IP по кол-ву прерванных запросов
cat nginx_access.log | cut -f 1 -d " " | uniq > ip.log Уникальные IP
iptables -A INPUT -s 127.127.127.127 -p tcp -m tcp --dport 80 -j DROP Добавить IP в iptables
iptables -A INPUT -p tcp --dport 80 -m iplimit --iplimit-above 10 -j REJECT Ограничение кол-ва одновременных соединений (у нас не работает)
iptables -L --line-numbers Посмотреть, что сейчас прописано в iptables
iptables -D INPUT %номер% Удалить соответствующую строку из iptables
netstat -nt | grep ESTAB | wc -l Общее количество текущих подключений к серверу
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n Посмотреть количество текущих соединений с каждого IP