Перейти к содержанию

▍Топ полезных команд

Работа с awk

awk '/pattern/' file # Вывести строки с pattern
awk '/pattern/ {action; action;}' file # Выполнить действия в строках с pattern, например,
awk '/apple/ {print $2" "$3;}' file # если строка содержит "apple", вывести 2-ю и 3-ю колонку через пробел
awk '!/apple/ {print $0;}' file # если строка НЕ содержит "apple", вывести строку полностью
awk '{print NF;}' file # вывести кол-во столбцов в каждой строке. $NF вывел бы значение в последнем столбце
awk 'length > 10' file # вывести строки длиной > 10 символов
awk -F ':' '{print $1;}' /etc/passwd # вывести имена пользователей (разделитель ":")

cat permissions
File1   User1   Read    3000
Dir1    Grp2    Modify  2000
File3   User2   Modify  1000
Dir3    Grp1    Read    4000
Dir3    Grp3    Modify  6000
File1   User4   FullControl     10000

# Блок BEGIN - действия до обработки данных, END - после
# Вывести "Starting script" и задать счётчик в 0. Если 3-й столбец match "[Mm]odify", то увеличить счётчик. В конце вывести строку и счётчик, обработать файл permissions
awk 'BEGIN {print "Starting script"; count=0;} $3 ~/[Mm]odify/ {count++;} END {print "People with modify permissions:",count;}' permissions
Starting script
People with modify permissions: 3

# Изначально i=0, если i<кол-ва столбцов в строке, то прибавить к t значение 4-го столбца, затем увеличить i на единицу.
# Когда будут обработаны все строки файла permissions, вывести полученное значение t.
awk '{for(i=0;i<NF;i++) t+=$NF} END {print t;}' permissions
# 3000*4=12000
# 12000+2000*4=20000
# 20000+1000*4=24000
# 24000+4000*4=40000
# 40000+6000*4=64000
# 64000+10000*4=104000
104000

# Если 2-я колонка match [Uu]ser, а значение последней меньше 2000, то вывести строку
awk '$2 ~/[Uu]ser/ {if($NF>2000) print "User", $2, "has", $NF, "number which more than 2000";}' permissions
User User1 has 3000 number which more than 2000
User User4 has 10000 number which more than 2000

Работа с date

# Последнее воскресенье месяца
if [[ $(date -d "$date + 1week" +%d%a) =~ 0[1-7]Sun ]]
then
    echo "$date is the last Sunday of the month!"
fi

date -d yesterday +'%b %d' # Вчера (мая 25)
date -d yesterday +%F # 2022-04-25
date -r file1 # дата изменения файла
date -u # время в UTC
date +%T -s "10:50:9" # изменить системное время на 10:50:09
date -s "15 aug 2022 14:00:00" # изменить дату и время
date -d@$(echo $SECONDS) -u +%T # время работы сессии bash - конвертировать из секунд в hh:mm:ss
# Время работы сессии bash полезно для подсчёта времени работы скрипта (конец - начало = время работы)

# Форматирование даты
%F - yy-MM-dd (2022-05-26)
%D – Display date as mm/dd/yy
%Y – Year (e.g., 2020)
%m – Month (01-12)
%B – Long month name (e.g., November)
%b – Short month name (e.g., Nov)
%d – Day of month (e.g., 01)
%j – Day of year (001-366)
%u – Day of week (1-7)
%A – Full weekday name (e.g., Friday)
%a – Short weekday name (e.g., Fri)
%T - Время в формате 10:20:30
%H – Hour (00-23)
%I – Hour (01-12)
%M – Minute (00-59)
%S – Second (00-60)

Работа с find

find /etc -name 'cron*' # найти в /etc всё, начинающееся с "cron"
find /etc -type f -name 'cron*' # только файлы (-type d - только каталоги)
find . -perm 777 # найти в текущем каталоге файлы с правами доступа 777
find . -perm 777 -exec chmod 555 {} \; # изменить им разрешения на 555
find ./ -type d -exec chmod 775 {} +
find ./ -type f -exec chmod 664 {} +
find / -mtime +1 # найти файлы с датой изменения старше суток
find / -atime +1 # найти файлы с датой доступа старше суток
find / -group www-data # файлы с владельцем-группой
find / -size 1MB # найти файлы размером 1 МБ
find /var/www -name *bxu* -exec rm -rf {} +

Работа с grep

grep ^hello file1 # обычный grep понимает регулярки
grep [1-9] file1 # найти цифры с 1 по 9
grep [a-f] file1 # буквы с a до f
grep -f expression1 file1 # взять запрос из файла expression1
grep -lr cron /etc # вывести имена файлов, содержащих в себе слово "cron" (-r - recursive)
grep -sIroE 'text' . # вывести все файлы, в которых есть слово text

Работа с lsof

Вывод списка открытых файлов, сокетов и каналов.

COMMAND       PID     TID TASKCMD               USER   FD      TYPE             DEVICE    SIZE/OFF       NODE NAME
systemd         1                               root  cwd       DIR                8,2        4096          2 /
systemd         1                               root  rtd       DIR                8,2        4096          2 /
systemd         1                               root  txt       REG                8,2       92544    2103315 /usr/lib/systemd/systemd
COMMAND - процесс
PID - идентификатор процесса
USER - пользователь
FD - дескриптор файла
 cwd — рабочий каталог
 rtd — каталог /root
 txt — исполняемый файл
 mem — область памяти
 число — номер дескриптора файла, используемого процессом
 u — файл открыт с правами RW
 r — файл открыт с правами R
 w — файл открыт с правами W с частичной блокировкой файла
 W — файл открыт с правами W с блокировкой всего файла
TYPE — тип файла
 REG — файл
 DIR — каталог
 FIFO — именованные каналы
DEVICE — номер устройства, на котором находится файл
SIZE/OFF — размер
NODE — номер inode, индексного дескриптора
NAME — имя файла
# Процессы, использующие каталог /tmp/test
lsof +D /tmp/test
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
vi      4570 root    3u   REG  253,0    12288 2621462 /tmp/test/.test.txt.swp
# Информация о процессе
lsof -p 4570

Если файл /tmp/test/.test.txt.swp удалить при работающем процессе, то lsof всё равно будет показывать файл с пометкой deleted. Если процесс завершить, то удалится дескриптор в /proc и файл исчезнет из вывода.

# Вывести удалённые файлы, занимающие память из-за того, что процесс не отпустил дескрипторы
lsof -a +L1 /tmp/test

Работа с printf

printf - format and print data

printf "Name:\t%s\nID:\t%04d\n" "User" "67"
Name:   User
ID:     0067

today=$(date +%F)
time=$(date +%T)
printf -v d "Current user:\t%s\nDate:\t\t%s @ %s\n" $USER $today $time # d - задаваемая переменная
echo "$d"
Current user:   user
Date:           2022-05-27 @ 14:35:20

Работа с read

read -r < log.txt # Читает первую строку из файла
echo "$REPLY" # If no NAMEs are supplied, the line read is stored in the REPLY variable.
Jun  5 00:00:29 srv-mail1 postfix/smtpd[217187]: disconnect from unknown[192.168.5.3] ehlo=1 auth=0/1 rset=1 quit=1 commands=3/4
read -r month day time server id message  < log.txt
echo "$message" # any leftover words assigned to the last NAME.
disconnect from unknown[192.168.5.3] ehlo=1 auth=0/1 rset=1 quit=1 commands=3/4
echo "$server"
srv-mail1

Работа с sed

# Заменить test на another test
echo "This is a test" | sed 's/test/another test/'
# Заменить в файле (файл не перезаписывается)
sed 's/test/another test' ./myfile
# Ключ -e - несколько действий
sed -e 's/This/That/; s/test/another test/' ./myfile
# Ключ -f - чтение команд из файла. Содержимое файла mycommands:
s/This/That/
s/test/another test/
# команда:
sed -f mycommands myfile

# Флаги, пишутся в конце команды (s/pattern/replacement/flags). Без флагов обрабатывается только первое совпадение.
# g - заменить все совпадения, число - обработать именно это совпадение,
# p - вывести исходную строку, w outputfile - записать результат в outputfile.
sed 's/test/another test/g' myfile
sed 's/test/another test/2' myfile
sed -n 's/test/another test/p' myfile # -n - вывести только совпадения
sed 's/test/another test/w output' myfile

# Можно заменить разделитель для более удобного чтения
sed 's/\/bin\/bash/\/bin\/csh/' /etc/passwd
sed 's!/bin/bash!/bin/csh!' /etc/passwd

# Фильтр, обработка диапазона строк (с 10 по 20)
sed '10,20s/test/another test/' myfile
# с 10 до конца (можно использовать регулярку)
sed '2,$s/test/another test/' myfile
# заменить только в строке, где встречается слово user
sed '/user/s/bash/csh/' /etc/passwd

# удалить 3-ю строку
sed '3d' myfile
# удалить с 10 по 20
sed '10,20d' myfile
# с 10 до конца
sed '10,$d' myfile
# удаление строк по шаблону
sed '/test/d' myfile
# При удалении можно указывать несколько шаблонов.
# удалятся строки, где есть second и fourth и всё между ними
sed '/second/,/fourth/d' myfile

# вставка текста до
echo "Another test" | sed 'i\First test'
# вставка текста после
echo "Another test" | sed 'a\First test' 
# перед 2-й строкой
sed '2i\This is the inserted line.' myfile

# заменить целиком всю 3-ю строку
sed '3c\This is a modified line.' myfile
# заменить целиком все строки, где есть This is
sed '/This is/c This is a changed line of text.' myfile

# замена отдельных символов на соответствующие (1 на 5 и т. д.)
# применяется ко всему потоку, ограничить нельзя
sed 'y/123/567/' myfile

# вывести строки с их номерами
sed '=' myfile
# вывести номера строк, соответствующих шаблону
sed -n '/test/=' myfile

# вставить содержимое newfile после 3-й строки myfile
sed '3r newfile' myfile
# вставлять содержимое newfile каждый раз после строки, соответствующей шаблону
sed '/test/r newfile' myfile

# Заменить строки в myfile, где есть DATA, на содержимое newfile, удалить исходную строку 
sed '/DATA/ {
r newfile
d}' myfile

# Заменить foo на too.
sed -i 's/foo/too/'
# Удалить 14ю строку.
sed -i '14d' /file
# Удалить строку содержащую Network или network.
sed -i '/[Nn]etwork/d' /file
# Добавить в конец файла "[mounts]" затем перенос на новую строку и "user root".
sed -i '$ a \\n[mounts]\nuser root' /etc/munin/config 
# После 14ой строки добавить "echo "graph_category logger"".
sed '14a\ echo \"graph_category logger\"' /etc/munin/plugins/command 
# Вставить в начало файла '# vim: ft=ruby' и перенос строки.
sed '1i # vim: ft=ruby\n'  
# Заменить повторяющиеся пустые строки на одну пустую строку
sed -e ':a;/^$/N;/\n$/{D;ba}' file.txt
# Конвертация переносов строк DOS (CR/LF) в Unix (LF)
sed 's/.$//' dosfile.txt > unixfile.txt
# Заменить строку string1 строкой string2
sed 's/string1/string2/g'
# Изменить строку anystring1 на anystring2
sed 's/\(.*\)1/\12/g'
# Убрать комментарии и пустые строки
sed '/ *#/d; /^ *$/d'
# Соединить строки (линии) с предшествующим \
sed ':a; /\\$/N; s/\\\n//; ta'
# Удалить предшествующие пробелы строк
sed 's/[ \t]*$//'
# Закомментировать активные метасимволы оболочки двумя кавычками
sed 's/\([\\`\\"$\\\\]\)/\\\1/g'
# Выровнять числа по правой границе
seq 10 | sed "s/^/      /; s/ *\(.\{7,\}\)/\1/"
# Напечатать 1000-ную строку
sed -n '1000p;1000q'
# Напечатать строки с 10 по 20-ую
sed -n '10,20p;20q'
# Получить title из HTML страницы
sed -n 's/.*<title>\(.*\)<\/title>.*/\1/ip;T;q'
# Убрать пустые строки из файла
sed '/^$/d' input.txt > output.txt
# Удаляем из всех .html файлов начало до тэга <pre>
# и от </pre> до конца файла, включая и сами тэги
cat *.html | sed '1,/<pre>/d; /<\/pre>/,$d' > final.file

Работа с su, sudo

# войти от учётки vasya
su vasya
# войти от учётки vasya + его переменные окружения
su - vasya
# войти под рутом
su
# запустить одну команду без полноценного входа
su -c 'id'
#Проверить, какие команды разрешены юзеру vasya от рута
sudo -l

Отправить тестовое письмо:

echo "test" | mail -s "Test Subject" [email protected]

Выполнить PHP функцию в консоли:

php -r "echo phpinfo();" | grep date.timezone

Отключить спящий режим на ubuntu server:

sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

Для проверки набора переменных BASH_ENV:

$ env | grep BASH_ENV

Замер скорости диска:

dd if=/dev/zero of=testfile bs=4k count=1310720
dd if=testfile of=/dev/null bs=4k count=1310720
или
fio --filename=testfile --size=10G --rw=write --bs=1m --eta-newline=1 --direct=1 --name=write
--filename нужно указать путь к файлу на диске, размер по желанию но лучше не менее гигабайта (чтобы обойти кэш самого диска, если он назойливый). Параметр --direct=1 не даст системе кэшировать операции. Для теста на чтение соответственно использовать --rw=read.

Полная очистка диска

$ sudo shred -vfz -n 10 /dev/sdf
shred: /dev/sdf: проход 1/11 (random)shred: /dev/sdf: проход 1/11 (random)…351MiB/56GiB 0%
shred: /dev/sdf: проход 1/11 (random)…702MiB/56GiB 1%
shred: /dev/sdf: проход 1/11 (random)…1,0GiB/56GiB 1%
shred: /dev/sdf: проход 1/11 (random)…1,3GiB/56GiB 2%
...
-n 10 - сколько раз будут перезаписаны данные

Обновить locate:

/usr/libexec/locate.updatedb

Подключить UDF ISO образ

sudo mount -t udf /mnt/iso/Win10_21H2_Russian_x64.iso /cdrom

Конвертировать HEIC в JPG:

ls *.HEIC -1 | sed -e 's/\.HEIC$//' | xargs -I {} convert {}.HEIC {}.JPG

Изменить текстовый редактор для конкретного случая:

export EDITOR=ee; crontab -e

Удалить snapd в Ubuntu Server:

$ sudo apt purge snapd
$ sudo apt-mark hold snapd
snapd помечен как зафиксированный.

Удалить старые данные telegraf в Influxdb 1.8:

$ docker exec -ti influxdb influx 
Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10
> use telegraf;
Using database telegraf
> DELETE WHERE time < '2022-06-01'

будут удалены все записи до 2022-06-01

Перенос почты между серверами

imapsync.bat
imapsync.exe --host1 "imap.yandex.ru"  --user1 "mail1" --password1  "password1"  ^
             --host2 "imap.mail.ru"  --user2 "mail1" --password2  "password2"  ^
             --useheader "Message-Id" --automap 
useheader нужен для того, чтобы дубликаты не копировались.

Послать минимально валидный HTTP GET запрос:

echo -e 'GET /maintenance/start HTTP/1.0\r\n\r\n' > /dev/tcp/127.0.0.1/80

Прочитать из сокета, что нам скажет GitHub.com с SSH порта:

$ cat < /dev/tcp/github.com/22
SSH-2.0-babeld-30e2af52

Работа с сетью

Изменение маршрута по умолчанию:

route change default 192.168.1.1
или
ip route add default via 192.168.1.1

Добавить роут:

ip route add 192.168.122.239 via 192.168.0.10

Выключаем IPv6:

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=1
или добавить в файл sysctl.conf, чтобы настройки сохранились:
sudo nano /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Работа с архивами

Создать .tar.gz:

tar -czvf file.tar.gz /full/path — создать .tar.gz (архив)
tar -cjvf file.tar.bz2 /full/path — создать .tar.bz2 (архив)

Распаковать .tar:

tar -xvf file.tar.gz

Распаковать gz:

gunzip yourfile.gz

Распаковать многотомный архив:

7za x arch.7z.001

Получить листинг файлов в архиве:

tar -tf <path_to_tarfile>

Извлечь конкретный файл из архива:

tar -xf <path_to_tarfile> [<file_1_in_archive> <file_2_in_archive> ..]

Скопировать файл на сервер:

scp -P 12345 file.tar [email protected]:/home/user

Скопировать содержимое директории home на сервер:

scp -P 12345 -r /home/ [email protected]:/home2/

Запуск программ от супер пользователя:

ee /usr/local/etc/super.tab
jexec              /usr/sbin/jexec                  имяпользователя, пользователь
asterisk           /usr/local/sbin/asterisk         имяпользователя
Запускать:
super asterisk -rvvv

Работа с fail2ban

Вывести список джейлов:

sudo fail2ban-client status
Status
|- Number of jail:      2
`- Jail list:   nextcloud, sshd

Вывести статистику по конкретному джейлу nextcloud:

sudo fail2ban-client status nextcloud
Status for the jail: nextcloud
|- Filter
|  |- Currently failed: 1
|  |- Total failed:     51
|  `- File list:        /путь/до/лога/nextcloud.log
`- Actions
   |- Currently banned: 1
   |- Total banned:     19
   `- Banned IP list:   XX.XX.XX.XX

Вывести статистику по всем джейлам:

sudo fail2ban-client status | sed -n 's/,//g;s/.*Jail list://p' | xargs -n1 sudo fail2ban-client status

Принудительно забанить IP в джейле nextcloud:

sudo fail2ban-client set nextcloud banip XX.XX.XX.XX

Принудительно разбанить IP в джейле nextcloud:

sudo fail2ban-client set nextcloud unbanip XX.XX.XX.XX

Отладка фильтра:

в файл /tmp/filter вставить нужную строку из лога и запустить парсер:

fail2ban-regex --print-all-match /tmp/filter  /etc/fail2ban/filter.d/sshd.conf

Работа с пользователями

Добавить пользователя:

sudo adduser testuser

или задать пользователя с конкретными gid и uid:

sudo groupadd asterisk -g 8000
sudo useradd asterisk -u 8000 -g 8000 -m -s /usr/sbin/nologin

Добавить пользователя testuser в существующую группу asterisk:

sudo usermod -aG asterisk testuser

Работа с wget

Скачать сайт целиком

wget -r -erobots=off -k -l 7 -p -E -nc http://site.com/

После выполнения данной команды в директорию site.com будет загружена локальная копия сайта site.com. Чтобы открыть главную страницу сайта нужно открыть файл index.html. Рассмотрим используемые параметры:

-r — указывает на то, что нужно рекурсивно переходить по ссылкам на сайте, чтобы скачивать страницы.

-erobots=off — игнорировать правила в файле robots.txt

-k — используется для того, чтобы wget преобразовал все ссылки в скаченных файлах таким образом, чтобы по ним можно было переходить на локальном компьютере (в автономном режиме).

-p — указывает на то, что нужно загрузить все файлы, которые требуются для отображения страниц (изображения, css и т.д.).

-l — определяет максимальную глубину вложенности страниц, которые wget должен скачать (по умолчанию значение равно 5, в примере мы установили 7). В большинстве случаев сайты имеют страницы с большой степенью вложенности и wget может просто «закопаться», скачивая новые страницы. Чтобы этого не произошло можно использовать параметр -l.

-E — добавлять к загруженным файлам расширение .html.

-nc — при использовании данного параметра существующие файлы не будут перезаписаны. Это удобно, когда нужно продолжить загрузку сайта, прерванную в предыдущий раз.

Работа с Rsync

rsync -va -P -p --delete /home/user/project /media/backup

Формат команды options source-location destination-location

Полезные опции команды Rsync

-r Используется для рекурсивной синхронизации данных без сохранения каких-либо прав доступа к файлам.

-a Используется для рекурсивной синхронизации данных с сохранением всех прав доступа к файлам.

-b Используется для сохранения резервной копии данных во время передачи.

-v Используется для отображения вывода в подробном формате.

-p Используется для отображения хода передачи.

-n Используется для проверки того, работает ли синхронизация перед передачей файлов или папок.

--delete опция указывает rsync для удаления файлов и каталогов в назначение каталог, который не находится в исходном каталоге. Это означает, что целевой каталог будет точной копией исходного каталога.

--include="*.c" --include="*.csv" --exclude="*" с этими опциями будут скопированы только файлы исходного кода C и файлы данных CSV.

Freebsd

Добавить нового пользователя vasya в систему и добавить этого пользователя в группу clients.

pw useradd vasya -G clients

Удалить пользователя:

rmuser

Руссификация консоли

ee ~/.login_conf
me:\
        :charset=UTF-8:\
        :lang=ru_RU.UTF-8:

Показать превышение дисковой коты по jail:

df | grep -v devfs | grep "/jails/" | awk '{if($5>90) print $6,$5}' | sed 's/\/Zjails\///g' | column -t

Задать переменную для запуска скриптов из "/root/bin":

ee ~/.cshrc
set path=($path /root/bin)

Примонтировать бакет в Яндекс облаке (для дебаг режима можно использовать ключи "-d -f"):

s3fs namebucket /srv/namebucket -o passwd_file=/root/.passwd-s3fs -o url=http://storage.yandexcloud.net -o use_path_request_style

Если при монтировании бакета выводится ошибка:

fuse: failed to open fuse device: No such file or directory

Значит не загружен модуль fuse, проверить вывод:

# kldstat
Id Refs Address            Size     Name
 1   17 0xffffffff80200000 20647c8  kernel
 2    1 0xffffffff82266000 381130   zfs.ko
 3    2 0xffffffff825e8000 a380     opensolaris.ko
 4    1 0xffffffff82821000 2328     ums.ko
 5    1 0xffffffff82824000 2e4a8    pf.ko

Загружаем модуль:

kldload fuse

Полезные утилиты

  • expr: для выполнения арифметических и булевых операций, а так же регулярных выражений

  • m4: простенький макро-процессор

  • yes: вывод строки в бесконечном цикле

  • cal: классный календарь

  • env: для того, чтобы выполнить команду (полезно в Bash-скриптах)

  • printenv: print out environment variables (useful in debugging and scripts)

  • look: найти английские слова (или строки) в файле

  • cut:, paste и join: манипуляция данными

  • fmt: форматировка параграфов в тексте

  • pr: отформатировать текст в страницы/колонки

  • fold: (обернуть) ограничить длину строк в файле

  • column: форматировать текст в колонки или таблицы

  • expand: и unexpand: конвертация между табами и пробелами

  • nl: добавить номера строк

  • seq: вывести числа

  • bc: калькулятор

  • factor: возвести числа в степень

  • gpg: зашифровать и подписать файлы

  • toe: таблица терминалов terminfo с описанием

  • nc: дебаггинг сети и передачи данных

  • socat: переключатель сокетов и перенаправление tcp-портов (похоже на netcat)

  • slurm: визуализация трафика сети

  • dd: перенос информации между файлами и девайсами

  • file: узнать тип файла

  • tree: показать директории и сабдиректории в виде дерева; как ls, но рекурсивно

  • stat: информация о файле

  • tac: вывести файл наоборот (ласипан)

  • shuf: случайная выборка строк из файла

  • comm: построчно сравнить отсортированные файлы

  • pv: мониторинг прогресса прохождения информации через пайп

  • hd: и bvi: дамп и редактирование бинарников

  • strings: найти текст в бинарникх

  • tr: манипуляция с char (символьным типом)

  • iconv: и uconv: конвертация кодировок

  • split: и csplit: разбить файлы

  • sponge: прочитать весь инпут перед тем, как его записать, полезно когда читаешь из того же файла, куда записываешь, например вот так: grep -v something some-file | sponge some-file

  • units: конвертер, метры в келометры, версты в пяди (смотрите /usr/share/units/definitions.units)

  • 7z: архиватор с высокой степенью сжатия

  • ldd: показывает зависимости программы от системных библиотек

  • nm: получаем названия всех функций, которые определены в .o или .a

  • ab: бенчмаркинг веб-серверов

  • strace: дебаг системных вызовов

  • mtr: лучшей трассировка для дебаггинга сети

  • cssh: несколько терминалов в одном UI

  • rsync: синхронизация файлов и папок через SSH

  • wireshark: и tshark: перехват пакетов и дебаг сети

  • ngrep: grep для слоя сети (network layer)

  • host: и dig: узнать DNS

  • lsof: процессинг дискрипторов и информация о сокетах

  • dstat: полезная статистика системы

  • glances: высокоуровневая, многосистемная статистика

  • iostat: статистика CPU и использования жесткого диска

  • htop: улучшенная версия top

  • last: история логинов в систему

  • w: под каким пользователем вы сидите

  • id: информация о пользователе/группе

  • sar: история системной статистики

  • iftop: или nethogs: использование сети конкретным сокетом или процессом

  • ss: статистика сокетов

  • dmesg: ошибки бута и ошибки системы

  • hdparm: манипуляция с SATA/ATA

  • lsb_release: информация о дистрибутиве Linux

  • lsblk: cписок блочных устройств компьютера: древо ваших дисков и логических дисков

  • lshw:, lscpu, lspci, lsusb, dmidecode: информация о железе включая, CPU, BIOS, RAID, графику, девайсы, и т.д.

  • fortune:, ddate, и sl: хм, не знаю будут ли вам “полезны” веселые цитатки и поезда, пересекающие ваш терминал :)

К началу