cs:linux:linux_commands
This is an old revision of the document!
Table of Contents
Сборник команд
General
Info
- free - объем памяти и объем ее использования, а также использование swap
- uptime - состояние системы в данный момент, степень ее загруженности и время без перезагрузок
- ps - efx - все процессы в виде дерева подробно
- who / w - информация о пользователях находящихся в системе
- htop - более продвинутый аналог top
- smem -t -k -P code -c pss | tail -n 1 - память занимаемая программой “code”
Disks
- iostat - статистика процессора и системы ввода.вывода (iostat -x - подробно)
- hdparm - информация о жестком диске (hdparm -I /dev/sda)
- df - информация о дисках
- du - размер каталогов (du -sh)
- fdisk -l - просмотреть диски
- cfdisk - разметка диска
- dd - копирование и конвертация файлов
dd if=/dev/zero of=src/file3 bs=1M count=3
- создание файла заданного размераsync; dd if=/dev/zero of=/tmp/tempfile bs=1M count=1024; sync
dd if=/tmp/tempfile of=/dev/null bs=1M count=1024
- тестирование скорости диска
- bonnie++ - тестирование дисков
Network
- vnstat - a console-based network traffic monitor
- bmon - bandwidth monitor and rate estimator
- netstat [-A inet ][-ntalp] - только интернет сокеты
- netstat -a - состояние TCP-соединений (как входящих, так и исходящих), таблицы маршрутизации, число сетевых интерфейсов и сетевую статистику по протоколам
netstat -an|awk '/tcp/ {print $6}'|sort|uniq -c
- route or netstat -r - таблица маршрутизации
- host, dig, nslookup, whois - информация о DNS и IP
- dig +trace - вывести трассу DNS
- netcat(nc) - передача данных через TCP/UDP
(echo -e “HTTP/1.1 200 OK\nContent-Type: text/html\n\n Hello World”;) | nc -vv -l -p 8080
- nmap - сканирование портов
- ufw - фаервол (ufw allow 22, ufw deny 8080)
- curl - взаимодействие с серверами, POST, GET
- route add -net 10.252.208.0 netmask 255.255.255.224 gw 10.0.10.145 - добавление пути
- iftop -n -i enp5s0 - top сети
- Узнаем свой Ip и получаем информацию по Ip:
curl ipinfo.io / curl ifconfig.co / curl ifconfig.co/json
curl ipinfo.io/188.120.242.62
geoiplookup 188.120.242.62 (sudo apt install geoip-bin)
Окружение
- pushd, popd - команда pushd изменяет каталог на указанный, запоминается в стек и потом может быть использована для быстрой обратной навигации
- jobs, fg, bg - управление фоновыми процессами (Ctrl+Z - приостанавливается и сворачивается в фон)
- at, crontab - планирование заданий
- tail -f - слежение за файлом
- lsof - процессы работающие с портом/сокетом (lsof -i - сетевые)
- set, unset, env, export - работа с переменными окружения
- trap - установка действий на прерывания в bash скрипте (trap 'список команд' сигналы)
- exec “команда” - передает управление из bash комадне “команда”
- dmidecode - информация о железе
- xargs basename -a - имя файла из пути
- useradd - низкоуровневое добавление пользователя
- adduser - продвинутое добавление пользователя, домашний каталог, настройки и т.д.
- Ctrl+R - поиск по истории команд
- stat - подробная информация о файле
- eval - выполнение команд записанных с троке
Other
- rsync - репликация, бекап, копирование (rsync -vvaz –delete [–progress][-P])
- lsb_release -a - узнать версию Ubuntu
- watch [-n sec] command [args] - запускает и следит за программой через определенный промежутки времени
- ps -o lstart 1/uptime - время запуска машины
- :w !sudo tee % - сохранить в vim если забыл sudo
- siege - нагрузочное тестирование веб сервера
- ls | wc -l - подсчет количества файлов
- find foldername -mtime 1 - поиск файлов старше 24 часов
- cut -d “” -f 1 - выборка первого столбика, делитель пробел
- ldconfig - настраивает привязку динамических ссылок
- cat /proc/sys/vm/swappiness - просмотр процентного соотношения SWAP
- sudo sysctl vm.swappiness=5 - изменение процентного соотношения SWAP
- sudo su -c 'sync; echo 1 > /proc/sys/vm/drop_caches' - очистка дискового кэша
- convert -delay 20 -loop 0 *.png animation.gif - создание гифки
- ffmpeg -i frame%03d.png output.gif - создание гифки
- tee - читатет из intput и выводит в output и записывает в файл
- tr - подменить одни символы другими, удалить или сжать
- column - позволяет выровнять вывод по колонкам
Useful combinations
sudo cat /var/log/nginx/wiki/access.log | grep -o '^.* -' | grep -o '[0-9\.]*' | sort | uniq -c
sudo grep -o 'Ban [0-9\.]*' /var/log/fail2ban.log | grep -o '[0-9\.]*' | sort | uniq -c | sort
Tmux
Tmux - это терминальный мультиплексор, позволяет на один экран выводить несколько окон, можно отключаться и подключаться к ним не теряя прогресс.
# Sessions tmux # Создать новую сессию 0 tmux new -s hello # Создать новую сессию hello tmux detach # (Ctr-b + d) Отключиться от сессии tmux attach (или a) # Подключиться к последней работающей сессии tmux attach -t hello # Подключиться к сессии по имени tmux ls # Список сессий (Ctr-b + s) # Выбрать сессию tmux kill-server # Завершить все сессии tmux kill-session -t hello # Завершить сессию hello # Wndows (Ctr-b + c) # Создать новое окно (Ctr-b + w) # Список окон (Ctr-b + n) # Следующее окно (Ctr-b + p) # Предыдущее окно (Ctr-b + 0) # Окно по номеру # Panes (Панели) (Ctr-b + \") # Поделить горизонтально (Ctr-b + %) # Поделить вертикально (Ctr-b + стрелки) # Переход между панелей (Ctr-b + Ctrl-стрелки) # Изменение размеров панелей (Ctr-b + q-<n>) # Подсветить все панели и перейти на панель n (Ctr-b + z) # Развернуть панель во все окно или сжать # Copy paste Shift + Mouse left button double-click # Copies the double-clicked word Shift + Select using mouse # Copies the selection Shift + Mouse middle button click # Pastes the copied text using above method in the tmux pane
Tmux Plugins
# TPM Plugin (Ctr-b + I) # install new plugins and refresh Tmux environment (Ctr-b + U) # update plugins (Ctr-b + alt-u) # remove plugins not in plugin list # Resurrect Plugin (Ctr-b + ctrl-s) # Save environment (Ctr-b + ctrl-r) # Restore environment # Continuum Plugin # Continuous saving tmux environment, automatic start tmux, automatic restore
Awk
ll | awk 'BEGIN {print "Hello!"} {print} END {print "Bye!"}' ll | awk -f command.awk awk -v name=Diego 'BEGIN {printf "Name - %s\n", name}' # Шаблоны ll | awk '/git/' # одно ll | awk '/git/ {print}' # и ll | awk '/git/ {print $0}' # тоже (авнозначные комманды)
Пример программы на awk
#!/usr/bin/awk -f BEGIN { print "type a number"; } { print "The square of ", $1, " is ", $1*$1; print "type another number"; } END { print "Done" }
Sed
sed OPTIONS... [SCRIPT] [INPUTFILE...] Options: -e -i -f # read script form file -n # produces output when explicitly told to via the p command # A sed script is a sequence of commands: [ADDR]X[OPTIONS] where, [ADDR] is an optional address specification X is a single-letter command [OPTIONS] are optional options (or flags) accepted by the command.
Commands
a TEXT # Append text after a line c TEXT # Replace (change) lines with text d # Delete the pattern space; immediately start next cycle i TEXT # Insert text before a line p # Print the pattern space s/REGEXP/REPLACEMENT/[FLAGS] # Match the regular expression REGEXP, if found, replace with REPLACEMENT. y/SRC/DST/ # Transliterate characters which match any of the SRC # with the corresponding character in DST.
Substitute flags
s/REGEXP/REPLACEMENT/[FLAGS] g # Apply the replacement to all matches to the regexp, not just the first NUMBER #Only replace the NUMBERth match of the regexp
Example 1
sed -i s/alexander/alex/g /etc/passwd where, [ADDR] = '' X = 's///' [OPTIONS] = 'g'
Example 2
sed -i 1,1000d /var/log/messages where, [ADDR] = '1,1000' X = 'd' [OPTIONS] = ''
Example 3
sed -n '/roo/{p;p;q;}' /etc/passwd where, [ADDR] = '/roo/' X = '{p;p;q}' - block [OPTIONS] = ''
Grep
grep [options] pattern [files] Options Description -B : Lines before -A : Lines after -c : This prints only a count of the lines that match a pattern -h : Display the matched lines, but do not display the filenames. -i : Ignores, case for matching -l : Displays list of a filenames only. -n : Display the matched lines and their line numbers. -v : This prints out all the lines that do not matches the pattern -e exp : Specifies expression with this option. Can use multiple times. -f file : Takes patterns from file, one per line. -E : Treats pattern as an extended regular expression (ERE) -w : Match whole word -o : Print only the matched parts of a matching line, with each such part on a separate output line.
Find
find [папка] [параметры] критерий шаблон [действие] параметры: -type {f,d, b,c,p,l,f} -maxdepth N критерий: -name "file_name" -perm # поиск по правам доступа, например 755 -o # or -and # and (expr1 expr2 / expr1 -a expr2 / expr1 -and expr2) -prune # остановить поиск на текущей директории действие: -exec <command> {} \; Example: find . \( -name "\.git" -o -name "\.mypy_cache" -o -name ".tox" \) -prune -o -print
jq
Code examples:
jq '.[0:2] | .[] | {requested_at: .requested_at, respond_at: .respond_at}' test.json jq 'map(select(has("respond_at"))) | length' test.json jq 'map(select(.respond_at == "2022-03-16")) | length' test.json jq 'map(select(.requested_at > "2022-03-15")) | length' test.json jq 'map(select(.requested_at > "2022-03-16")) | map(select(has("respond_at"))) | length' test.json jq 'map(select(.requested_at > "2022-03-15")) | map(select(has("respond_at")|not)) | .[0]' test.json jq '.[] | {start_time: (.start_time/1000 | todate), duration: (.end_time - .start_time)}' test.json jq 'map({start_time: (.start_time/1000 | todate), duration: (.end_time - .start_time)})' test.json
cs/linux/linux_commands.1671210130.txt.gz · Last modified: 2023/08/31 19:46 (external edit)