Last active
November 15, 2023 16:06
-
-
Save avtobys/9d8a15fc6a4da8846dcc0f2d3933daad to your computer and use it in GitHub Desktop.
linux commands cli
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ---------------------------------------- файловая система | |
du -s -b [dirname] # Занимаемый директорией dirname размер в байтах | |
du -s -b [dirname] | awk '{print $1}' # Отобразить только цифры без названия директории | |
du -h [dirname] # Размеры директории и всех подкаталогов | |
du -h [dirname] | sort -r -n # Тоже с сортировкой | |
du -sh [dirname] # Общий размер директории в удобочитаемом виде | |
du -sh ./* # Вес каталогов текущей директории | |
df -h # Информация о смонтированных разделах с отображением общего, доступного и используемого пространства | |
df -i # количество использованных inode | |
ls -laR | grep "^-" | wc # Количество файлов в текущей директории включая поддиректории | |
ls -laR | grep "^-" | wc | awk '{print $1}' # Отобразить только интересующие цифры размера в байтах awk '{print $1}' - дергает 1 столбец вывода (варианты $1, $2, $N) | |
ls -laRh --sort=size /var/log # рекурсивный вывод файлов и папок с сортировкой по размеру | |
find ./ -type f | xargs ls -alt # вывести все файлы в текущем каталоге включая подкаталоги, отсортированные по времени изменения | |
find . -xdev | wc -l # количество файлов и каталогов в директории(количество inode занимаемых этой директорией) | |
for i in /*; do echo $i; find $i -xdev | wc -l; done # количество inode занимаемых каждой директорией | |
tail -f filename # Просмотр последних 10 строк файла в реальном времени | |
tailf filename # Просмотр последних строк файла в реальном времени | |
e4defrag -c /dev/xxx # Проверка необходимости дефрагментации, где xxx - название раздела, который требуется дефрагментировать. | |
e4defrag /dev/xxx # запуск дефрагментации, где xxx - название раздела, который требуется дефрагментировать. Например, sda4. | |
smartctl -a /dev/nvme1 # проверка смарт состояния диска | |
cat /proc/mdstat # посмотреть состояние raid массива | |
cat /sys/block/md0/md/mismatch_cnt # количество ошибок в процессе проверки массива md0 | |
cat /sys/block/md*/md/mismatch_cnt # просмотр всех ошибок всех массивов | |
cat /sys/block/md*/md/sync_action # Просмотр состояния рейдов | |
echo 'repair' >/sys/block/md0/md/sync_action # ресинхронизация массива md0 | |
echo 'check' >/sys/block/md0/md/sync_action # проверка массива md0 | |
echo 'idle' > /sys/block/md0/md/sync_action # остановить проверку | |
cat /proc/sys/dev/raid/speed_limit_max # макс скорость проверки | |
cat /proc/sys/dev/raid/speed_limit_min # минимальная скорость провреки | |
mdadm -D /dev/md0 # вывести детально состояние массива | |
ln -s элемент ссылка # создание символической ссылки | |
mv path{,.bak} # быстрое переименование файла или директории | |
mount | column -t # вывести все смонтированные фс и устройства в табличном виде | |
# ---------------------------------------- работа с файлами | |
touch file1 file2 # создает пустые файлы | |
fallocate -l 2G /swapfile # создаем пустой файл необходимого размера | |
mkdir dir1 dir2 # создает директории | |
rm -r dirname # удалить директорию | |
rm filename # удалить файл | |
rm *.log # удалить файлы по маске | |
rm -rf * .[!.]* # очистить текущий каталог включая скрытые файлы и каталоги в нем | |
find /path/to/dir/ -mindepth 1 -delete # очистить папку | |
find pathname -type f -name "*.txt" -delete # удалить файлы по маске в директории pathname | |
find . -type f -exec chmod 644 {} \; # выставить всем файлам в текущем каталоге права 644 | |
find . -type d -exec chmod 755 {} \; # выставить всем директориям в текущем каталоге 755 | |
find /home/dir -type f -mtime +365 -exec rm -rf {} \; # найти и удалить файлы старше 365 дней | |
find /root -type f -name "*.sql" -exec ls -als {} \; | sort -nr | awk 'BEGIN{s=0}{s+=$6;printf "size: %3sMB %s\n", int(($6/1024)/1024), $10}END{print int(((s/1024)/1024)/1024)" GB"}' # рекурсивно вывести с сортировкой по размеру файлы определённого типа | |
cp -R dir1/ dir2/ # скопировать директорию dir1 в dir2 со всем содержимым | |
mv dir1/ dir2/ # переместить/переименовать директорию dir1 в dir2 | |
chown user:group filename # изменение владельца файла и группы | |
which command # Поиск файлов в каталогах, перечисленных в переменной среды PATH | |
ln -s элемент ссылка # создать символическую ссылку на элемент | |
# ---------------------------------------- пользователи | |
whoami # вывести текщего пользователя | |
cat /etc/passwd # показать всех пользователей | |
w # активность пользователей в данный момент | |
who # список подключенных пользователей | |
last -a # история входов в систему | |
lastlog # последние входы в систему | |
useradd -m newusername # добавление нового пользователя | |
passwd newusername # установка пароля пользователю | |
deluser --remove-home --remove-all-files username # удаление пользователя со всеми папками и файлами | |
apt install sudo # установка sudo | |
usermod -aG sudo newusername # добавить юзера в группу sudo | |
id # вывод идентификатора пользователя и группы. Если пользователь не указан, выдается информация о пользователе, вызвавшем команду. | |
less /etc/group # посмотреть все группы | |
groups # посмотреть группы текущего юзера | |
groups username # посмотреть группы username | |
# ---------------------------------------- процессы и система | |
uname -a # информация о системе | |
lsb_release -cs # возвращает имя дистрибутива Debian | |
lsb_release -a # вся инфа по дистрибутиву | |
top # процессы | |
atop # инфа по нагрузке системы | |
atop -r /var/log/atop/atop_20191024 # логи нагрузки системы | |
iotop # статистика использования ввода вывода диска | |
uptime # сист. время, время работы, сколько пользователей подключено, средняя нагрузка за последние одну, пять и пятнадцать минут | |
cat /proc/loadavg # средняя нагрузка за последние одну, пять и пятнадцать минут | |
lscpu # инфа о цпу | |
lsblk # инфа о всех блочных устройствах(жд, флешки, опт приводы) | |
lsblk -a # более полная инфа о блочных устройствах | |
fdisk -l # список всех разделов на дисках | |
lshw # инфа об устройствах | |
lshw -class network # инфа о конкретном устройстве | |
lsof # список всех открытых файлов | |
lsof -u mysql # список открытых файлов пользователем | |
lsof | awk '{ print $2; }' | sort | uniq -c | sort -rn | head # топ процессов по количеству открытых файлов | |
ls -l /proc/28841/fd # файлы открытые процессом PID = 28841 | |
lsof -p 28841 | wc -l # файлы открытые процессом PID = 28841 | |
cat /proc/cpuinfo # инфа о цпу | |
cat /proc/cpuinfo | grep processor | wc -l # количество процессоров | |
nproc # количество доступных процессоров | |
pgrep -c process_name # посмотреть количество процессов по имени process_name | |
ps -C process_name --no-headers | wc -l # тоже самое - посмотреть количество процессов по имени process_name | |
ps -Af # посмотреть процессы и максимум данных о них | |
ps axu # вывести список всех процессов | |
ps auxf # вывести дерево процессов | |
ps -eo pid,ppid,user,cmd,%mem,%cpu --sort=-%cpu | head # список процессов наиболее нагружающих систему отсортированный по нарузке цп | |
pstree # вывести дерево процессов | |
pstree -a # вывести дерево процессов | |
kill -l # показать список возможных сигналов | |
pidof tor # получить pid по названию процесса | |
kill -HUP $(pidof tor) # дает процессу отбой (меняем тор ip) | |
kill 1234 # программное завершение процесса с PID = 1234, то же что и kill -15 1234 | |
kill -9 1234 # безусловное завершение(только если программное и другие способы не помогают!) | |
killall proccessname # убить все процессы с именем proccessname | |
ps aux | grep 'condition' | awk '{print $2}' | xargs kill # убить процессы по определенному найденному условию | |
cat /proc/<pid потомка>/status|grep PPid # узнать pid родителя процесса | |
which php # путь к исполняемому файлу указанной команды | |
cat /proc/$(pgrep mysqld)/limits # mysql лимиты | |
nice -n 19 ionice -c2 -n7 command # команда с низким приоритетом цп и диска | |
nice -n 19 ionice -c3 command # команда с самым низким приоритетом цп и диска | |
journalctl -p err..alert # быстрый поиск ошибок в системе | |
journalctl -f # слежение за ллогами системы в реальном времени | |
swapon -s # информация по подключенным swap | |
cat /proc/swaps # информация по подключенным swap | |
# ---------------------------------------- docker контейнеризация | |
docker stats -a --no-stream | (read -r header; echo "$header"; sort -k3 -rn) # вывести статистику использования ресурсов отсортировав по cpu | |
# ---------------------------------------- крон задания | |
crontab -l # просмотр заданий cron | |
crontab -e # редактирование заданий cron | |
for user in $(cut -d':' -f1 /etc/passwd); do echo "=== $user ==="; crontab -u $user -l; done # список всех задач крон для всех юзеров | |
cat /var/spool/cron/crontabs/* # список всех задач крон для всех юзеров | |
for file in /var/spool/cron/crontabs/* ; do us=`echo $file | cut -d'/' -f6` ; if [ "$us" != "root" ] ; then printf 'User: '; echo -e $us'\n' ; cat $file | grep wget ; echo -e '\n------------------------------------------------\n' ; fi ; done | tee list.txt # список wget задач без root | |
for us in $(ls /var/spool/cron/crontabs/[!root]* | cut -d'/' -f6) ; do crontab -e -u $us ; done # редактировать крон задачи кроме юзера root | |
cat /var/spool/cron/crontabs/[!root]* | less # просмотр списка крон задач кроме root | |
# ---------------------------------------- сеть | |
traceroute -I google.com # трассировка icmp пакетами вместо udp пакетов | |
ifconfig # информация о сетевых интерфейсах | |
ip a # информация о сетевых интерфейсах | |
ip l # информация о сетевых интерфейсах кратко | |
ip rout show # посмотреть маршруты в таблице маршрутизации | |
ip link set интерфейс down # выключение определенного интерфейса пример ip link set eth0 down | |
ip link set интерфейс up # включение определенного интерфейса | |
ip a add 10.0.2.15/24 brd 10.0.2.255 dev enp0s3 # устанавливаем ip и broadcast на интерфейсе enp0s3 | |
hostname # показать имя хоста | |
hostname -f # показать полное имя хоста машины | |
netstat -i # состояние сетевых интерфейсов и данные счетчиков трафика | |
netstat # список процессов для которых установлены сетевые соединения | |
netstat -lpn # список процессов с более подробными данными о соединениях | |
netstat -r # информация о таблице маршрутизации по каждому интерфейсу | |
netstat -ntulp # список процессов с сетевой активностью и портами | |
netstat -anp |grep 'tcp\|udp' | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n # список всех tcp/udp соединений отсортированный по количеству | |
lsof -i # просмотр всех открытых соединений в сисетме | |
nethogs # просмотр процессов с сетевой активностью | |
iptarf-ng # мониторинг сетевых интерфейсов | |
iftop # мониторинг пропускной способности сети | |
tcpdump -i any # мониторинг всего сетевого трафика | |
tcpdump -i eth0 # прослушивание определенного интерфейса | |
tcpdump -ttttnnvvS # подробный вывод без разрешения имен хостов или номеров портов, абсолютных порядковых номеров и удобочитаемых временных меток | |
tcpdump host 1.2.3.4 # отфильтровать трафик по ip или хосту источника или ip назначения | |
tcpdump -c 100 port 80 -w dump.pcap # фильтр по порту и запись в файл 100 пакетов | |
tcpdump -c 50000 -i enp8s0 ip dst 192.168.1.100 and port 80 and 'tcp[32:4] = 0x47455420' -w dump.pcap # записать 50к GET запросов к серверу по порту 80 | |
tcpdump -X host 1.2.3.4 # просмотреть содержимое пакетов | |
nslookup example.com # выдает сервер днс хоста и ip хоста | |
nslookup <IP adress> # преобразует ip в хост | |
nslookup -type=ns example.com # просмотр NS записей домена | |
nslookup example.com ns.example.com # выдает ip хоста из авторитетного источника | |
nslookup -type=mx example.com # получить MX запись домена | |
nslookup -type=soa example.com # Start Of Authority предоставляет техническую информацию о домене | |
dig google.com +short # ip A записей хоста кратко | |
dig NS google.com +short # NS записи хоста кратко | |
dig google.com @ns1.google.com +short # спросить у NS какие ip хоста ему известны | |
iptables -L # просмотр правил iptables | |
iptables -F # очистить все правила | |
iptables -I INPUT -p tcp --dport 7890 -j ACCEPT # добавить правило (открываем порт 7890) | |
iptables -D INPUT -p tcp --dport 7890 -j ACCEPT # удалить правило | |
iptables-save > /etc/iptables.conf # сохранить правила iptables в файл | |
iptables-restore < /etc/iptables.conf # восстановить настройки из файла после перезагрузки | |
wget -qO- eth0.me # проверить свой IP | |
wget -SO- eth0.me # посмотреть заголовки ответа сервера | |
curl -i eth0.me # посмотреть ответ и заголовки сервера | |
scp -P 2202 user@192.168.56.100:/home/user/backup.sql.gz /root/ # скопирвоать с удаленного сервера с портом 2202 на локальный | |
scp -P 2202 /root/backup.sql.gz user@192.168.56.100:/home/user/ # отправить с локального на удаленный с портом 2202 | |
rsync -avzhP -e 'ssh -p 2483' root@192.168.56.100:/root/backup.tar.gz /root/ # скопирвоать с удаленного сервера с портом 2202 на локальный | |
rsync -avzhP /root/backup.tar.gz root@192.168.56.100:/root/ # отправить с локального на удаленный | |
rsync --include='/_*/' --include='/new.php' --exclude='*' -avzhP -e 'ssh -p 2222' root@111.111.111.111:/var/www/ /home/path/ # скачать с удалённого только определённые каталоги и файлы | |
ssh -D 1111 -p 22 root@192.168.1.100 # поднять локальный socks прокси на порту 1111 | |
nmap -sn 192.168.1.0/24 # пинг сети на предмет доступных доступных целей | |
systemctl is-active systemd-resolved.service # посмотреть запущено ли кеширование днс | |
systemd-resolve --flush-caches # очистить кеш DNS | |
# ------------------------------------------ архивация | |
tar -xvzf archive.tar.gz # распаковать tar архив в текущую папку | |
gunzip # распаковать gz архив в текущую папку | |
unzip -l file.zip # просмотреть список файлов архива | |
tar -cvzf dir.tar.gz /home/dir # создать сжатый tar архив папки | |
tar -cvzf backup_`date '+%Y-%m-%d-%H-%M-%S'`.tar.gz /usr/share/phpmyadmin # сделать сжатый бекап папки phpmydmin с меткой времени в имени файла | |
tar --exclude='dir1/subdir' -cvzf 2dir.tar.gz dir1/ dir2/ # архивировать два кактолога исключив подкаталог | |
tar -xvf backup_2019-10-05-13-45-52.tar.gz -C / # развернуть бекап | |
tar -tvf file.tar.gz # просмотр содержимого архива | |
zip -r archive.zip /path/to/files/* # упаковать содержимое папки в архив zip | |
# ------------------------------------------ работа с БД | |
mysqladmin -uroot password '12345' # установить пароль пользователя mysql | |
mysqladmin -u root -ppassword -P 3310 -h 127.0.0.1 processlist # посмотреть процесслист на нестандартном порту | |
mysqldump -u db_user -ppassword db_name > db.sql # сделать дамп бд | |
mysqldump -u db_user -ppassword db_name table1 table2 > tables.sql # сдалать дамп ондной или нескольких таблиц | |
mysqldump --skip-lock-tables --insert-ignore db_name > # сдклать дамп бд без блокировки таблиц | |
mysqldump -u db_user -ppassword db_name | gzip > db.sql.gz # сделать дамп и архивировать его | |
gunzip -c db.sql.gz | mysql -u db_user -ppassword db_name # восстановить дамп из gz архива | |
unzip -p dump.sql.zip | mysql -u root -p%pass% database% # восстановить дамп из zip архива | |
mysql -uroot -p dbname1 < dump.sql # импорт дампа бд из обычного sql файла | |
mysqlcheck -o --all-databases # оптимизация всех таблиц | |
mysql -Nse 'show tables' DATABASE_NAME | while read table; do mysql DATABASE_NAME -e "drop table \`$table\`"; done # очистка бд от всех таблиц(удаление таблиц одной командой) | |
mysqldump -uuser -ppassword --add-drop-table --no-data databasename | grep ^DROP | mysql -uuser -ppassword databasename # аналогчно очистка бд от всех таблиц | |
mysql -Nse "show databases;" | while read db; do mysqldump --skip-lock-tables --insert-ignore $db > $db.sql; done # сделать дампы всех бд | |
for file in ./*.sql; do db=$(echo -n $file | cut -d/ -f2 | cut -d. -f1); mysql $db < $file; done # развернуть дампы из текущего каталога | |
# ----------------------------------------- рандомизация | |
shuf -i 2000-65000 -n 1 # случайное значение из диапозона | |
ls | shuf -n1 # случайный файл | |
cat spisok.txt | shuf -n1 # случайная строка из файла | |
pwgen 12 1 # генерация 1-го 12 значного пароля | |
# ----------------------------------------- обработка строк и файлов | |
sed 's/root/Admin/' # заменить подстроку в первом совпадении и вывести stdout | |
sed 's/root/Admin/g' # заменить все подстроки с выводом в stdout | |
sed '/games/d' # удалить все строки с данной подстрокой и вывести в stdout | |
sed '/^$/d' # удалить все пустые строки | |
sed -i '/^$/d' filename # удалить все пустые строки отредактировав файл на месте(ключ -i) | |
sed -e 1b -e '$!d' # вывести первую и последнюю строку | |
sed -n 8p # вывести 8 строку | |
sed -n 8,20p # вывести с 8 по 20 строки | |
sed '/John/,$d' # удалить все строки после совпадения с данным шаблоном | |
sed '1,/James/d' # удалить все строки до совпадения с шаблоном, включая строку с совпадением | |
sed -n '/от/,/до/p' # вырезать и отобразить оставшееся | |
sed '4,$d' # вырезать с 4 по последнюю строку | |
sed -n 's/.*\(successful installation marker\).*/\1/ip;T;q' # найти подстроку | |
cut -d':' -f1 /etc/passwd # вывести первый столбец файла по разделителю : | |
awk -F: '{ print $1 }' /etc/passwd # вывести первый столбец файла по разделителю : | |
awk '!a[$0]++' filename # удаление дубликатов строк | |
grep -rna "example text" / 2> /dev/null # рукурсивный поиск текста в файлах по серверу | |
while read LINE; do COMMAND; done < FILE # чтение файла посторочно | |
----------------------------------------- | |
sleep .5 # спать пол секунды | |
sleep 5 # спать 5 сек | |
sleep 5m # спать 5 минут | |
sleep 5h # спать 5 часов | |
# ----------------------------------------- терминал | |
fg # вернуться к фоновой задаче в терминале | |
jobs # посмотреть список заданий | |
bg # восстановить выполнение фоновых заданий | |
# ----------------------------------------- php | |
php -m # посмотреть все установленные модули php | |
# ----------------------------------------- apache | |
apache2ctl -V | grep -i 'Server MPM' # посмотреть версию apache | |
apachectl -V | grep -i mpm # посмотреть версию apache | |
# ----------------------------------------- nginx | |
nginx -T # вывести в терминал дамп всех конфигов nginx | |
nginx -t # проверить синтаксис конфигов | |
nginx -s reload # перезагрузка конфигов | |
# ----------------------------------------- разное | |
cat access.log | cut -d'"' -f 6 | grep bot | sort | uniq # посмотреть юзерагенты ботов | |
grep -E 'bot[^"]*"$' access.log # просмотр логов чисто ботов | |
find / -name *.conf | grep nginx | grep -v fail2ban | while read line; do echo -e \\n\\n------- "$line" ---------\\n\\n; cat "$line"; done # посмотреть все конфиги nginx | |
find / -name *.log | xargs grep -n "failed to login" # поиск подстроки в определенных типах файлов на сервере | |
for file in ./*.jpg;do nn=`echo $file | sed 's/prefix/new_prefix/'`; mv $file $nn;done # меняем префикс названий определенных типов файлов(jpg) в текущей папке | |
while true;do kill -HUP $(pidof tor); echo $(date '+%H:%M:%S') $(wget -qO- eth0.me); sleep 10;done # меняем ip tor раз в 10 сек и выводим в консоль время и ip | |
wget --mirror -p --convert-links -P /home/dan xyz.com # выкачиваем локальную копию сайта | |
wget --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.6045.163 Safari/537.36" --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows --domains xyz.com --no-parent https://xyz.com/html/blog-single.html # выкачиваем локальную копию сайта | |
for file in $(find ./ -name "*\?*"); do newfile=`echo $file | sed 's/\?.*//';`; mv $file $newfile; done; # избавляемся от вопросов в именах выкачанных файлов | |
[ -z "${IP:=$(curl -s -m1 checkip.amazonaws.com)}" ] && [ -z "${IP:=$(curl -s -m1 ident.me)}" ] && [ -z "${IP:=$(curl -s -m1 ipinfo.io/ip)}" ];\ | |
nginx -T 2>/dev/null | grep -E "^[[:space:]]+server_name" | cut -d\ -f2- | rev | cut -d\; -f2- | rev | tr ' ' '\n' | sort | uniq | awk -v ip=$IP '{print ip " " $0}' # формируем hosts из nginx конфигов | |
KEY=`pwgen 16 1`; IP=`ip route get 8.8.8.8 | grep src | awk '{print $NF}'`; `find /usr/local/mgr5 /usr/local/ispmgr -prune 2>/dev/null | head -1`/sbin/mgrctl -m ispmgr session.newkey username=root key=$KEY sok=ok && echo "https://${IP}:1500/manager/ispmgr?func=auth&username=root&key=$KEY&checkcookie=no"; # получаем одноразовую ссылку для авторизации в ispmanager | |
for item in $(seq 9060 9070); do echo "SocksPort $item" >> /etc/tor/torrc ; done # дописать в torrc пул портов | |
curl wttr.in/Москва > прогноз погоды | |
# координаты wifi роутера по его mac адресу | |
# mobile.maps.yandex.net/cellid_location/?clid=1866854&lac=-1&cellid=-1&operatorid=null&countrycode=null&signalstrength=-1&wifinetworks=BSSID:-65&ymetro | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment