Начинаю новую рубрику FAQ. Записи будут постепенно добавляться и обновляться. Идея — собрать различные полезные короткие команды или приемы для разных продуктов в одном посте. Данный раздел посвящен Linux.
chcon -R -h -t postgresql_db_t /var/lib/pgsql/data
netstat -apn | awk '$1=="tcp"{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | awk 'BEGIN {print "NN IP Count"} {n=n+$1; print FNR, $2, $1} END {print "-" "TOTAL",n}' | column -t # Аналогично, но с портами: netstat -apn | awk '$1=="tcp"{print $5}' | awk -F: '{print $1, $2}' | sort | uniq -c | sort -nr | awk 'BEGIN {print "NN IP Port Count"} {n=n+$1; print FNR, $2, $3, $1} END {print "-" "TOTAL",n}' | column -t
Генерируем ключ SSH для Jenkins, исключающий ошибку: jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey] ssh-keygen -t rsa -b 4096 -m PEM
netstat -nputw lists all UDP (u), TCP (t) and RAW (w) outgoing connections (not using l or a) in a numeric form (n, prevents possible long-running DNS queries) and includes the program (p) associated with that. Consider adding the c option to get output being updated continuously.
ss -lnptu | sort netstat -tulpen
du -s *|sort -nr|cut -f 2-|while read a;do du -hs $a;done
dig @ns.name zone.name axfr
netstat -n -p | grep SYN_REC| awk '{print $5}'|awk -F: '{print $1}' | sort -n | uniq -c | sort -nr | head -n10
grep ' 404 ' /var/log/apache2/site/access.log | cut -d ' ' -f 7 |sort |uniq -c |sort -n awk '$9 == 404{urls[$7]++}END{for (url in urls) print urls[url] "\t" url}' /var/log/apache2/site/access.log | sort -n
find . -type l -ls find . -maxdepth 1 -type l -ls
iptables -I INPUT 1 -p tcp --dport 10050 -j ACCEPT
iptables -L -v -n
CIFS и fstab — после перезапуска сервера не монтируется ресурс
Добавьте в строку параметр: _netdev
timedatectl set-timezone Europe/Moscow
cat /var/lib/libvirt/dnsmasq/virbr0.status
curl icanhazip.com
rpm -qa --qf '%{NAME} ; %{VERSION} ; %{VENDOR} ; %{SUMMARY}\n' | sort
lid -g wheel
compgen -u getent passwd | awk -F: '{ print $1}'
sudo nmtui or sudo nmcli connection sudo nmcli con mod connection_name ipv4.dns "ip1 ip2" or vim /etc/sysconfig/network-scripts/ifcfg-ens192 sudo systemctl restart NetworkManager.service
grep -rl 'pam_winbind.so' /etc/ | xargs sed -i 's/pam_winbind.so/pam_sss.so/g'
ps aux | awk '{ print $1 }' | sed '1 d' | sort | uniq ps -e -o ruser=WIDE-RUSER-COLUMN | awk '{ print $1 }' | sed '1 d' | sort | uniq
Не стартует oddjobd:
Error binding to service name «com.redhat.oddjob_mkhomedir»!
Error initializing service «com.redhat.oddjob_mkhomedir»!
Error registering with D-Bus layer!
service messagebus restart systemctl restart oddjobd
lsattr chattr
yum history list all yum history info (number)
smbclient '\\server\share' mask "" recurse ON prompt OFF cd 'path\to\remote\dir' lcd '~/path/to/download/to/' mget *
authconfig-tui
ldd /usr/bin/whoami
lsns #посмотреть namespaces systemd-cgls #список cgroups
sudo dnf update --exclude=kmod-kvdo,kernel* # CentOS sudo apt-mark hold linux-image-generic linux-headers-generic && sudo apt-get update && sleep 1 && sudo apt-get upgrade -y && sudo apt-mark unhold linux-image-generic linux-headers-generic # Ubuntu
passwd --status username #проверка статуса пользователя L - учётная запись заблокирована P - учётная запись использует пароль PS - пароль установлен NP - пустой пароль
swapoff -a && sed -i '/swap/d' /etc/fstab # отключение Swap grep Swap /proc/meminfo # просмотр Swap
touch /etc/tmux.conf set -g mouse on
echo 1 > /proc/sys/kernel/sysrq echo b > /proc/sysrq-trigger
for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done # поиск заданий CRONTAB по всем пользователям crontab -u root -l # посмотреть задания пользователя, например root find /dir/* -mtime +1 -exec gzip -9 {} \; # найти файлы и архивировать
while sleep 5; do curl -o /dev/null -s -w "%{http_code}\n" http://site; done >> ~/code.log xargs -I % -P 5 curl -I "api.telegram.org" < <(printf '%s\n' {1..10}) # запрос 10 раз в 5 потоков
vim /etc/sysconfig/network-scripts/ifcfg-ens160 #тут пишем свой адаптер systemctl restart NetworkManager.service
awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg # смотрим список kernel, первый по списку является нулевым к конфиге grub2-set-default 0 # загрузка с первого по списоку kernel grub2-mkconfig -o /boot/grub2/grub.cfg # переконфигация Grub reboot
dpkg -l | grep postgres # Поиск установленных пакетов sudo apt-get --purge remove postgresql-client-10 # Удаление установленого пакета
watch -n 5 ls -la # запускает ls -la каждые 5 секунд, выводит на экоран изменения в выводе
# vim /etc/sysctl.conf [...] fs.file-max = 500000 [...] sysctl -p # Чтобы настройки вступили в силу # vim /etc/security/limits.conf Настройка лимитов для каждого пользователя * hard nofile 500000 * soft nofile 500000 root hard nofile 500000 root soft nofile 500000
free -m -h #чтобы узнать, сколько оперативной памяти в настоящее время используется в качестве кэша страниц for file in /proc/*/status ; do awk '/VmSwap|Name/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 2 -n -r | less # посмотреть кто потребляет SWAP iostat -z -d -h -p sdb -x # статистика по диску sdb
Поиск
find . -name \*.log.gz -print0 | xargs -0 zgrep -i "text" # Поиск в сжатых файлах GZ вхождения по всем файлам в каталоге. Регистронезависимо. find /var/lib/postgresql/14/main/pg_log -name "*.csv" | xargs rm # Найти всё .csv и удалить find /var/lib/pgsql/11/data/log/* -mtime +1 -exec gzip -9 {} \; # найти и сжать grep -r -i "recovey" /var/log/ # Поиск по всем файлам в каталоге. Регистронезависимо. grep "^[^#*/;]" /opt/kafka/config/server.properties # Показать файл без закоментированных строк. ls /usr/local/kafka/bin/ | grep -E "console-producer|console-consumer" # Показать файла с указанным вхождением. du -Sh /var | sort -rh | head -5 # Показать 5 самых больших каталога find /var/logs -name '*.txt' -ls | awk '{sum+=$7} END {print sum}' # размер в байтах файлов по маске
Вывод без закоментированных строк, без пробелов:
grep -v '^#' имя_файла | grep -v '^$' или egrep -v '^#|^$' имя_файла :g/^$/d # Удаляет пустые строки в VIM
Оптимизация
Если ОС работает в среде виртуализации, желательно изменить планировщик ввода-вывода. Например VMware рекомендует NOOP
Для установки NOOP в Ubuntu, меняем /etc/default/grub, добавив elevator=noop
GRUB_CMDLINE_LINUX_DEFAULT=" security=default elevator=noop" update-grub reboot
Процессы
echo $? #Просмотр кода завершения последнего процесса
Сеть
tcpdump src port 5002 -n # посмотреть активность на порту 5002, отображать IP, а не DNS имена
nc -zv hostname port traceroute -p port hostname curl -v telnet://127.0.0.1:22 echo -e '\x1dclose\x0d' | telnet 10.76.191.51 22 mtr -n # ping & traceroute tracepath -p port ip -m number #аналог traceroute
Разное
systemctl start name.service # запуск сервиса, systemctl stop name.service — остановка сервиса, systemctl restart name.service — перезапуск сервиса, systemctl try-restart name.service — перезапуск сервиса только, если он запущен, systemctl reload name.service — перезагрузка конфигурации сервиса, systemctl status name.service — проверка, запущен ли сервис с детальным выводом состояния сервиса, systemctl is-active name.service — проверка, запущен ли сервис с простым ответом: active или inactive, systemctl list-units --type service --all # отображение статуса всех сервисов, systemctl --failed # отображение списка юнитов, которые не удалось запустить, systemctl enable name.service # активирует сервис (позволяет стартовать во время запуска системы), systemctl disable name.service # деактивирует сервис, systemctl reenable name.service # деактивирует сервис и сразу активирует его, systemctl is #enabled name.service # проверяет, активирован ли сервис, systemctl list-unit-files --type service # отображает все сервисы и проверяет, какие из них активированы, systemctl mask name.service # заменяет файл сервиса симлинком на /dev/null, делая юнит недоступным для systemd, systemctl unmask name.service # возвращает файл сервиса, делая юнит доступным для systemd. systemctl restart rsyslog.service # для освобождения места при удалении логов
ssh -f -N -L target_port:remote_host:remote_port root@target_vm
Диски
udevadm info --query=all --name=/dev/sdf | grep ID_SCSI_SERIAL
mount -o rw,remount / fsck /dev/vg/root -fy