---
title: "Маленькие хитрости Linux"
description: "Буду здесь собирать всяческие полезные штуки и \"подводные камни\", на которые наткнулся в процессе ра..."
author: "iborodikhin"
published: "2011-10-11T05:55:16+00:00"
modified: "2011-10-31T22:08:07+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/malenkie-hitrosti-linux-198030"
markdown_url: "https://yvision.kz/post/malenkie-hitrosti-linux-198030/markdown"
site_name: "Yvision.kz"
---

# Маленькие хитрости Linux

> Буду здесь собирать всяческие полезные штуки и "подводные камни", на которые наткнулся в процессе ра...

Буду здесь собирать всяческие полезные штуки и "подводные камни", на которые наткнулся в процессе работы. Поскольку сам я, скорее, пользователь 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

---

Source: [https://yvision.kz/post/malenkie-hitrosti-linux-198030](https://yvision.kz/post/malenkie-hitrosti-linux-198030)