Полезные команды Linux. Манипуляции с текстом
#
Вывести содержимое файла, нумеруя выводимые строки
#
Вывести только не четные строки файла
#
Вывести первую и третью колонки. Разделение, по-умолчанию, по пробельным символам или символу табуляции
#
Вывести первую колонку содержимого файла. Разделение, по-умолчанию, по пробельным символам или символу табуляции
#
Сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах
#
Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу file1
#
Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу file2
#
Отобрать и вывести строки содержащие цифровые символы из файла /var/log/messages
#
Отобрать и вывести строки, начинающиеся с сочетания символов "Aug", из файла /var/log/messages
#
Отобрать и вывести строки, содержащие сочетание символов "Aug" из файла /var/log/messages
#
Отобрать и вывести строки, содержащие сочетание символов "Aug", из всех файлов, расположенных в директории /var/log и ниже
#
Объединить содержимое file1 и file2 в виде таблицы с разделителем "+"
#
Объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m
#
Сравнить содержимое двух файлов
#
Заменить string1 на string2 в файле example.txt и вывести содержимое
#
Удалить пустые строки и комментарии из файла example.txt
#
Удалить пустые строки и комментарии из файла example.txt
#
Удалить первую строку из файла example.txt
#
Отобразить только строки содержащие string1
#
Удалить строку string1 из текста файла example.txt не изменяя всего остального
#
Удалить пустые символы в конце каждой строки файла example.txt
#
Вывести пятую строку
#
Вывести строки со второй по пятую
#
Заменить последовательность из любого количества нулей одним нулём
#
Вывести отсортированное содержимое двух файлов
#
Вывести отсортированное содержимое двух файлов исключая повторные значения
#
Вывести уникальные значения из отсортированного содержимого двух файлов
#
Вывести только повторяющиеся значения из отсортированного содержимого двух файлов
#
Перевести символы нижнего регистра в верхний
#
cat -n file1Вывести содержимое файла, нумеруя выводимые строки
#
cat example.txt | awk 'NR%2==1'Вывести только не четные строки файла
#
echo a b c | awk '{print $1,$3}'Вывести первую и третью колонки. Разделение, по-умолчанию, по пробельным символам или символу табуляции
#
echo a b c | awk '{print $1}'Вывести первую колонку содержимого файла. Разделение, по-умолчанию, по пробельным символам или символу табуляции
#
comm -3 file1 file2Сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах
#
comm -1 file1 file2Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу file1
#
comm -2 file1 file2Сравнить содержимое двух файлов, не отображая строки принадлежащие файлу file2
#
grep [0-9] /var/log/messagesОтобрать и вывести строки содержащие цифровые символы из файла /var/log/messages
#
grep ^Aug /var/log/messagesОтобрать и вывести строки, начинающиеся с сочетания символов "Aug", из файла /var/log/messages
#
grep Aug /var/log/messagesОтобрать и вывести строки, содержащие сочетание символов "Aug" из файла /var/log/messages
#
grep Aug -R /var/log/*Отобрать и вывести строки, содержащие сочетание символов "Aug", из всех файлов, расположенных в директории /var/log и ниже
#
paste -d '+' file1 file2Объединить содержимое file1 и file2 в виде таблицы с разделителем "+"
#
paste file1 file2Объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m
#
sdiff file1 file2Сравнить содержимое двух файлов
#
sed 's/string1/string2/g' example.txtЗаменить string1 на string2 в файле example.txt и вывести содержимое
#
sed '/ *#/d; /^$/d' example.txtУдалить пустые строки и комментарии из файла example.txt
#
sed '/^$/d' example.txtУдалить пустые строки и комментарии из файла example.txt
#
sed -e '1d' exampe.txtУдалить первую строку из файла example.txt
#
sed -n '/string1/p'Отобразить только строки содержащие string1
#
sed -e 's/string//g' example.txtУдалить строку string1 из текста файла example.txt не изменяя всего остального
#
sed -e 's/ *$//' example.txtУдалить пустые символы в конце каждой строки файла example.txt
#
sed -n '5p;5q' example.txtВывести пятую строку
#
sed -n '2,5p' example.txtВывести строки со второй по пятую
#
sed -e 's/00*/0/g' example.txtЗаменить последовательность из любого количества нулей одним нулём
#
sort file1 file2Вывести отсортированное содержимое двух файлов
#
sort file1 file2 | uniqВывести отсортированное содержимое двух файлов исключая повторные значения
#
sort file1 file2 | uniq -uВывести уникальные значения из отсортированного содержимого двух файлов
#
sort file1 file2 | uniq -dВывести только повторяющиеся значения из отсортированного содержимого двух файлов
#
echo 'word' | tr '[:lower:]' '[:upper:]'Перевести символы нижнего регистра в верхний
❤3👍1
Полезный bash-скрипт: Уведомление на почту при переполнении диска
Как использовать:
1. Установите
2. Поместите скрипт, например, в
3. Добавьте в
#!/bin/bash
# Порог в процентах
THRESHOLD=90
# Email для уведомлений
EMAIL="[email protected]"
df -H | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output; do
usage=$(echo "$output" | awk '{ print $1}' | sed 's/%//')
partition=$(echo "$output" | awk '{ print $2 }')
if [ "$usage" -ge "$THRESHOLD" ]; then
echo "Внимание! На разделе $partition занято $usage% диска." | mail -s "⚠️ Мало места на сервере" $EMAIL
fi
done
Как использовать:
1. Установите
mailutils или mailx, если ещё не установлен.2. Поместите скрипт, например, в
/usr/local/bin/disk_check.sh.3. Добавьте в
cron, чтобы запускать регулярно, например, каждые 30 минут:
*/30 * * * * /usr/local/bin/disk_check.sh
❤3
20 команд мониторинга Linux, которые вы должны знать
Если вы работаете системным администратором / администратором Linux / DevOps / SRE, то, скорее всего, вам придется решать проблемы, связанные с производительностью, в среде Linux.
Давайте рассмотрим некоторые из наиболее часто используемых утилит командной строки Linux для диагностики проблем, связанных с сетью и производительностью.
1. Top
2. vmstat
3. iostat
4. iostat-d
5. lsof
6. tcpdump
8. netstat-s
9. ps -ef |grep PID
10. nethogs
11. mpstat
12. free-m
13. uptime
14. ps -e
15. ac
16. ac-d
17. ac -p
18. vmstat-m
19. vmstat–d
20. pstree
Статья
Если вы работаете системным администратором / администратором Linux / DevOps / SRE, то, скорее всего, вам придется решать проблемы, связанные с производительностью, в среде Linux.
Давайте рассмотрим некоторые из наиболее часто используемых утилит командной строки Linux для диагностики проблем, связанных с сетью и производительностью.
1. Top
2. vmstat
3. iostat
4. iostat-d
5. lsof
6. tcpdump
8. netstat-s
9. ps -ef |grep PID
10. nethogs
11. mpstat
12. free-m
13. uptime
14. ps -e
15. ac
16. ac-d
17. ac -p
18. vmstat-m
19. vmstat–d
20. pstree
Статья
❤4👍2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
duf - дисковая утилита для Linux, BSD, macOS и Windows
Мы используем команду
https://www.cyberciti.biz/open-source/command-line-hacks/duf-disk-usage-free-utility-for-linux-bsd-macos-windows/
Мы используем команду
df, чтобы показать, сколько свободного места на диске доступно на смонтированных файловых системах в Linux, macOS и подобных Unix системах. Также у нас есть команда du для оценки использования дискового пространства файлами. Теперь у нас появился новый, стильный и функциональный инструмент под названием duf, который отображает статистику свободного дискового пространства в Unix, Linux, macOS, *BSD, Android и Windows. Этот инструмент написан на языке Go.https://www.cyberciti.biz/open-source/command-line-hacks/duf-disk-usage-free-utility-for-linux-bsd-macos-windows/
👍2❤1
Утилиты linux
rsync
Примеры:
ss
Примеры:
ps
mpstat
Показывает статистику загрузки процессора. Команды:
free
Показывает потребление ОЗУ на текущий момент:
top
Что-то наподобие диспетчера задач, только для линукс, показывает попроцессное потребление озу
dpkg
Пакетный менеджер для debian систем (не путать с системой управления пакетами — apt/apt-get)
netstat
rsync
-v — выводит подробную информацию о процессе копирования;[-a] — сохраняет все атрибуты оригинальных файлов;-u — не перезаписывать более новые файлы;-l — копирует символьные ссылки;-L — копирует содержимое ссылок;-p — сохраняет права для файлов;-t — сохраняет время модификации;-e — использовать другой транспорт, например, ssh;[-z] — cжимает файлы перед передачей;—recursive — перебирать директории рекурсивно;—exclude — Исключить файлы по шаблону;Примеры:
rsync -avz skillproject/data/ . — из подкаталога в текущий каталогrsync -avz skillproject/data/ aaa/ — из подпапки в подпапку aaa/rsync -avz skillproject/data/ [email protected]:/home/d/digita6d/code-skills.ru/public_html/sources/skillproject/data/ — передача на удаленный серверrsync -avze ssh skillproject/data/ [email protected]:/home/d/digita6d/code-skills.ru/public_html/sources/skillproject/data/ — то же самое м явным указанием sshss
-l или —listening — посмотреть только прослушиваемые порты;-p или —program — показать имя программы и ее PID;-t или —tcp — показать tcp порты;-u или —udp показать udp порты;-n или —numeric показывать ip адреса в числовом виде.Примеры:
ss -tlpn — проверить все прослушивающие tcp-портыss -tulpn | grep :80 — показать все процессы, работающие на 80-м портуps
ps -e — показать все процессыps -ef — показать подробную информацию о каждом процессеps -ef | grep phantom — найти все процессы с именем phantommpstat
Показывает статистику загрузки процессора. Команды:
mpstat — показывает общую информациюmpstat -P ALL — по каждому ядруfree
Показывает потребление ОЗУ на текущий момент:
free -h — показывает информацию в гигабайтах (более человеко читаемо, чем в байтах)top
Что-то наподобие диспетчера задач, только для линукс, показывает попроцессное потребление озу
dpkg
Пакетный менеджер для debian систем (не путать с системой управления пакетами — apt/apt-get)
dpkg -s <packname> — проверить, установлен ли пакетdpkg -l — список всех пакетовdpkg -l | grep apache2 — проверить, установлен ли конкретный пакетdpkg -i <package.deb> — установить пакетnetstat
netstat -pnltu — посмотреть список используемых портов❤2
Iptables-tracer
Утилита, позволяющая отследить путь прохождения пакетов через цепочки iptables на сервере.
Инструмент пришёл на помощь в ситуации, когда появилась необходимость увидеть, проходит ли трафик через нужные цепочки iptables.
Установка и сборка.
Здесь ничего сложного. Нам потребуются git и go в системе. Устанавливаем всё необходимое и собираем.
Результатом сборки будет бинарный файл iptables-tracer в директории.
Использование.
Важно понимать, что при остановке iptables-tracer (запущенного с параметрами или без), созданные правила удалены не будут, это нужно сделать самостоятельно, выполнив команду с аргументом -с:
Будучи запущенным без каких-либо аргументов, трейсер будет выводить информацию о udp трафике имеющем dport 53.
При этом, в списке правил iptables можно увидеть следующее:
При необходимости, мы можем отфильтровать только нужный нам трафик с помощью параметра -f и уже знакомого нам iptables синтаксиса. Например, отобразить информацию о трафике, поступающем с IP адреса 5.189.221.98 на порт 22. С помощью параметра -t мы указываем время в течение которого информация будет проверяться:
https://github.com/x-way/iptables-tracer
Утилита, позволяющая отследить путь прохождения пакетов через цепочки iptables на сервере.
Инструмент пришёл на помощь в ситуации, когда появилась необходимость увидеть, проходит ли трафик через нужные цепочки iptables.
Установка и сборка.
Здесь ничего сложного. Нам потребуются git и go в системе. Устанавливаем всё необходимое и собираем.
Результатом сборки будет бинарный файл iptables-tracer в директории.
# dnf install git go
# git clone https://github.com/x-way/iptables-tracer
# cd ./iptables-tracer/
# go build
Использование.
Важно понимать, что при остановке iptables-tracer (запущенного с параметрами или без), созданные правила удалены не будут, это нужно сделать самостоятельно, выполнив команду с аргументом -с:
# ./iptables-tracer -c
Будучи запущенным без каких-либо аргументов, трейсер будет выводить информацию о udp трафике имеющем dport 53.
# ./iptables-tracer
12:36:02.455805 raw OUTPUT 0x00000000 0x00000000 IP 95.216.163.224.33873 > 185.12.64.1.53: 21597+ A? sysadmin.pm. (29) [In: Out:eth0]
...
12:36:02.456483 raw OUTPUT 0x00000000 0x00000000 IP 95.216.163.224.33873 > 185.12.64.1.53: 61055+ AAAA? sysadmin.pm. (29) [In: Out:eth0]При этом, в списке правил iptables можно увидеть следующее:
# iptables-save | grep nflog
-A PREROUTING -p udp -m udp --dport 53 -j NFLOG --nflog-prefix "iptr:4701:0" --nflog-group 22
-A INPUT -p udp -m udp --dport 53 -j NFLOG --nflog-prefix "iptr:4701:1" --nflog-group 22
-A OUTPUT -p udp -m udp --dport 53 -j NFLOG --nflog-prefix "iptr:4701:2" --nflog-group 22
...
-A OUTPUT -p udp -m udp --dport 53 -j NFLOG --nflog-prefix "iptr:4701:13" --nflog-group 22При необходимости, мы можем отфильтровать только нужный нам трафик с помощью параметра -f и уже знакомого нам iptables синтаксиса. Например, отобразить информацию о трафике, поступающем с IP адреса 5.189.221.98 на порт 22. С помощью параметра -t мы указываем время в течение которого информация будет проверяться:
# ./iptables-tracer -f "-s 5.189.221.98 -p tcp --dport 22" -t 90s
12:50:27.599117 raw PREROUTING 0x00000000 0x00000000 IP 5.189.221.98.59996 > 95.216.163.224.22: Flags [S], seq 446722502, win 64240, options [mss 1203,sackOK,TS val 2477044911 ecr 0,nop,wscale 7], length 0 [In:eth0 Out:]
12:50:27.599259 mangle PREROUTING 0x00000000 0x00000000 IP 5.189.221.98.59996 > 95.216.163.224.22: Flags [S], seq 446722502, win 64240, options [mss 1203,sackOK,TS val 2477044911 ecr 0,nop,wscale 7], length 0 [In:eth0 Out:]
12:50:27.599870 mangle INPUT 0x00000000 0x00000000 IP 5.189.221.98.59996 > 95.216.163.224.22: Flags [S], seq 446722502, win 64240, options [mss 1203,sackOK,TS val 2477044911 ecr 0,nop,wscale 7], length 0 [In:eth0 Out:]
12:50:27.600005 filter INPUT 0x00000000 0x00000000 IP 5.189.221.98.59996 > 95.216.163.224.22: Flags [S], seq 446722502, win 64240, options [mss 1203,sackOK,TS val 2477044911 ecr 0,nop,wscale 7], length 0 [In:eth0 Out:]https://github.com/x-way/iptables-tracer
❤2👍1
Подборка Linux утилит для системного администратора
Nezha - Легкий и элегантный аналог Zabbix
Plow - Этот инструмент был разработан для проведения нагрузочного тестирования HTTP
Hunt - Утилита для поиска файлов на локальном компьютере
AutoRegex - Регулярные выражения — это мощный инструмент для преобразования текстовых данных.
ContainerSSH - Утилита, которая позволяет вам незаметно направлять SSH-клиентов в изолированные контейнеры
Krunvm - Это инструмент, который позволяет создавать простые виртуальные машины на основе образов OCI.
Zellij - Это интересный мультиплексор, который может быть использован в качестве альтернативы tmux
https://bookflow.ru/podborka-linux-utilit-dlya-sistemnogo-administratora/
Nezha - Легкий и элегантный аналог Zabbix
Plow - Этот инструмент был разработан для проведения нагрузочного тестирования HTTP
Hunt - Утилита для поиска файлов на локальном компьютере
AutoRegex - Регулярные выражения — это мощный инструмент для преобразования текстовых данных.
ContainerSSH - Утилита, которая позволяет вам незаметно направлять SSH-клиентов в изолированные контейнеры
Krunvm - Это инструмент, который позволяет создавать простые виртуальные машины на основе образов OCI.
Zellij - Это интересный мультиплексор, который может быть использован в качестве альтернативы tmux
https://bookflow.ru/podborka-linux-utilit-dlya-sistemnogo-administratora/
❤2🔥2
Шпаргалка по Linux systemd
Systemd - это набор основных строительных блоков для системы Linux
Systemd - это набор основных строительных блоков для системы Linux
❤4