Skip to content

Instantly share code, notes, and snippets.

@mikkabond
Last active April 27, 2024 11:44
Show Gist options
  • Save mikkabond/6beec2809c525905eb8c204271e45d5b to your computer and use it in GitHub Desktop.
Save mikkabond/6beec2809c525905eb8c204271e45d5b to your computer and use it in GitHub Desktop.
different linux snippets
#версия системы
lsb_release -a
cat /etc/os-release
hostnamectl
#создать ссылку для приложения на рабочем столе
gnome-desktop-item-edit ~/Desktop/ --create-new
#пофиксить проблему с монтированием флешки
sudo ntfsfix /dev/partitionName
#Type the following command to see IPv4 port(s), enter:
lsof -Pnl +M -i4
#Type the following command to see IPv6 listing port(s), enter:
lsof -Pnl +M -i6
#обнаружение принтеров HP в локальной сети
hp-probe -bnet
#изменить значение переменной ядра
#1) добавить или изменить переменую в файле sysctl.conf в виде <переменная>=<значение>
#принять изменения
sysctl -p
#перезагрузить сервис сети
sudo /etc/init.d/networking stop
sudo /etc/init.d/networking start
#печать переменных окружения
env
#remote copy from comp to comp
##To copy a file from B to A while logged into B:
scp /path/to/file username@a:/path/to/destination
##To copy a file from B to A while logged into A:
scp username@b:/path/to/file /path/to/destination
##
scp -rp sourcedirectory user@dest:/path
# -r means recursive
# -p preserves modification times, access times, and modes from the original file.
#показать IP адрес интерфейсов
##всех
ip addr show
##указанного
ip addr show eth0
#распаковка tar
tar -zxvf <file_name>
#упаковка папки dir в текущую диреторию с именем file
tar -zcvf <file> <dir>
#remote connection from Dolphin
fish://mikka@dorgissrv/
#remote file transfer connection from Dolphin
sftp://mikka@dorgissrv/
#узнать расположение команды
which command_name
#использование curl для тестирования веб сервиса
##варианты послать POST
curl --request POST 'http://localhost/Service' --data "path=/xyz/pqr/test/&fileName=1.doc"
curl --request POST 'http://localhost/Service' --data "path=/xyz/pqr/test/" --data "fileName=1.doc"
curl --request POST 'http://localhost/Service' --data-binary "path=/xyz/pqr/test/" --data-binary "fileName=1.doc"
curl --request POST 'http://localhost/Service' --data-urlencode "path=/xyz/pqr/test/" --data-urlencode "fileName=1.doc"
#поиск файлов по содержимому (например слово server) в файлах по указанной маске (файлы с расширенем py в текущей директории),
#результат с подцветкой и выводом номеров строк
grep --color=auto -nH 'server' *.py
#поиск файлов с расширением txt в текщей и вложенных директориях, содержащих строку gumen. выводить номер строки в файле, если строка найдена
grep -n gumen `find . -name '*.txt'`
#добавить существующего пользователя в группу
usermod -a -G sudo mikhail
#информация о процессоре
less /proc/cpuinfo
lscpu
#добавить архитекуру для устанавливаемых пакетов
sudo dpkg --add-architecture i386
#зависимости необходиымые для Skype
sudo apt-get install libxss1:i386 libqtcore4:i386 libqt4-dbus:i386 install libqtgui4:i386 libqtwebkit4:i386
#проверка статуса сервиса в centos
/sbin/service <srv_name> status
#просмотр устройст PCI шины
lspci
#отключить автозапуск сервиса
sudo update-rc.d <service name> disable
#скрипт для исполнения стандартных системных скриптов
invoke-rc.d
#вывод данных о размере файлов в текущей директории с сортировкой по убыванию
du -h .|sort -h -r
#запуск оконного приложения из консоли ($your_username - имя учетки обычного пользователя)
export XAUTHORITY=/home/$your_username/.Xauthority
export DISPLAY=':0'
приложение
#запуск графического приложения из коммандной строки с правами суперпользователя
kdesu приложение
# trace system calls and signals
strace -p PID
-t человеческое время
-T длительность вызова
-r время команды
-с статистика
-o файл для вывода
-f трассировка дочернпх процессов
-ff -o трассировка каждого процесса в отдельный файл
#утилита для управления процессами (демонами) системного уровня
start-stop-daemon
#вывести все процессы по аналогии с top
ps aux
#определить какой процесс ипользует тот или иной порт
fuser
#вывести зависимости от библиотек для программы или модуля
ldd <имя программы или модуля>
#добавить нестандартный путь к списку зависимостей динамического линкера
ldconfig /path/to/custom/lib
#мониторинг событий
journalctl --since='2016-06-07 21:00:00' --until='2016-06-07 23:00:00'
#вызывать команду с определенной периодичностью
watch
#раскрытие символических ссылок (полный путь к файлу)
readlink -f <filename>
#полный путь к файлу/имя файла без пути
realpath/basename
#сложный поиск (с исключением директории)
find / -name '*.sh' -o -path '/var/cache/limetaxi_map/route' -prune
#узнать PID по имени команды
pidof cmd_name
#узнать параметры системы, касающиеся межпроцессного взаимодействия
ipcs -l
#получить значения конфигурационных параметров системы
getconf
#получить ссылку на скачивание пакета для последующей инсталяции вручную
apt-get --print-uris install <prog_name>
#монтирование раздела
mount -t ext4 -o rw,relatime,errors=remount-ro,data=ordered /dev/sdb1 /mnt/storage/
#настройка пользователя с ограниченным доступом к файловой системе
You should also be able to do it with OpenSSH 4.9 and up, with which you can additionally chroot the user for increased security.
In your /etc/ssh/sshd_config:
Match User user
ChrootDirectory /home/user
ForceCommand internal-sftp
AllowTcpForwarding no
Then run:
chsh -s /bin/false user
chown root:root /home/user
mkdir /home/user/uploads
chown user /home/user/uploads
The user will only be able to write in /home/user/uploads.
http://www.debian-administration.org/articles/590
#туннель SSH типа точка-точка (-f запуск в фоновом режиме) для следующей схемы соединения:
#
#[localhost:my_local_port]==INTERNET==>[user@outer_host:outer_port]==LOCAL_NET==>[targret_host:target_port]
#
#чтобы соединиться с targret_host на порт target_port, нужно соединиться с localhost:my_local_port, приэтом потребуется указать пароль для user
ssh -f -N -L my_local_port:target_host:target_port user@outer_host
#если [targret_host:target_port] это FTP сервер с двумя каналами, один из которых с динамическим портом:
ssh -f -N -D my_local_host:my_local_port user@outer_server
#конвертация файлов из cp1251 в utf8 с перезаписью исходного файла
iconv -f cp1251 -t utf8 dispatcher.csv -o dispatcher_new.csv
#сделать авторизацию по ключу
#1 генерируем ключ длиной 4096 бит (стойкий), по желанию указать уникальное имя ключа для каждого сервера (по умолчанию id_rsa)
ssh-keygen -b 4096
#2 копируем ПУБЛИЧНЫЙ ключ на удаленный сервер, куда нужен доступ (ключ добавляется в ~/.ssh/authorized_keys на удаленном сервере)
ssh-copy-id -i ~/.ssh/id_rsa.pub -p <remote_ssh_port> <remote_user>@<remote_host>
#3 пробуем подключиться (должно пустить без пароля)
ssh -p <remote_ssh_port> <remote_user>@<remote_host>
#Пример копирования с удаленного хоста по протоколу ssh:
rsync -avv --delete-during -compress-level=9 -e "ssh -p remote_ssh_port" user@host:/dir/to/foobar_src/ foobar_dst/
#ограничение скорости, показывать прогресс, сжимать при передаче, исключить папку db, исключить файлы *.gbk
rsync --bwlimit=5000 -avv -P --delete-during --compress-level=9 --exclude='db/' --exclude='*.gbk' bondarchuk@10.23.100.31:/dwh/373/ .
#При этом, на стороне источника нужно иметь установленную утилиту rsync.
#настройка sshfs + autofs
#1 sudo apt-get install sshfs
#2 создать ssh ключ и перекинуть на удаленный сервер (если нужен беспарольный доступ)
#3 в /etc/fuse.conf раскомментировать user_allow_other, чтобы разрешить указание опций allow_root или allow_other при монтировании из под обычного пользователя
#4 единоразово примонтироваться:
sudo -u postgres /usr/bin/sshfs -o idmap=user -o uid=112,gid=119,allow_root,IdentityFile=/var/lib/postgresql/.ssh/pgreplicator postgres@10.34.100.91:/dwh/masterwals /dwh/bkpwals
для постоянной монтировки прописать команду в /etc/rc.local
#default_permissions попробовать
#замена слова в файле
sed -i -- 's/foo/bar/g' *
#установка обновлений (Debian-based distros) только для списка пакетов
apt-get --only-upgrade install $(apt list --upgradable|grep 'postgres'|sed 's/\/.*$//')
#добавить пользователя в существующую группу без создания домашней директории и возможности заходить в систему
adduser --ingroup <имя группы> --no-create-home --disabled-login <имя пользователя>
# объем директории
watch -n 1 -d 'du -d 1 2>/dev/null|sort -h'
#дать контекст безопасности SELinux на файлы .ssh/* для подключения по ssh ключам
chcon -Rv -t ssh_home_t ~/.ssh
# открыть оболочку под другим пользователем и использовать его домашнее окружение
sudo -u <username> -i -H
# печать нескольких документов сразу https://daredevel.com/2015/12/print-multiple-files-in-linux/
lpstat -a #получить список доступных принтеров
lp -d <printer name> <path to file> #печать
# печать опеноффис документов в текущей директории на принтер IT-floor-6
soffice --pt IT-floor-6 *.odt
# конвертирование опеноффис документов в текущей директории в pdf
soffice --headless --convert-to pdf *.odt
# бывает, что команды не выполняются и выдают какую то дичь после обновления... данный способ сбрасывает кэш оболочки bash со старыми путями
hash -d <имя команды>
#добавить маршрут по-умолчанию (metric 1 что то вроде приоритета использования)
ip r add default via 10.23.96.1 dev eth0 proto static metric 1
# centos установка неподписанных пакетов
yum install <имя пакета> --nogpgcheck
#поднять socks proxy на proxy_host для remote_host
ssh -f -N -D <proxy_host>:<proxy_port> <remote_login>@<remote_host>
#увеличить производительность по чтению http://ashok-linux-tips.blogspot.com/2012/08/improving-read-performance-of-disks.html
blockdev --report
blockdev --setra 8142 /dev/sdb
#статистика по дискам
iostat -d -x
dstat -tdD total,sdb,sdc 10
iotop
#вырезать текст, найденный по шаблону
awk '/шаблон/{for(i=1;i<=NF;++i)if($i~/шаблон/)print $i}' файл_источник >файл_результат
#список активных сервисов деревом
systemctl list-units --type=service --state=running
systemctl status
pstree
#инфо по RAID контроллеру HP
hpacucli ctrl slot=0 pd all show status
## с выводом %
hpacucli ctrl all show config
# связано с настройкой raid (предварительно нужно создать разделы на sdc, sdd)
mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 /dev/sdc1 /dev/sdd1
#подключить диски (/dev/sdb для примера)
parted -l
parted /dev/sdb mklabel gpt
parted -a optimal /dev/sdb mkpart primary ext4 0% 100%
mkfs.ext4 -L datapartition /dev/sdb1
#mkfs.ext4 -L datapartition -m 1 /dev/sdb1
lsblk --fs
mount -o defaults /dev/sdb1 /mnt/datapartition
# найти файл с названием, содержащим result и применить к нему grep. Если grep вернет 0, то выполнить следующую команду в exec
find . -name '*result' -exec grep -q 'FAIL' {} \; -exec echo {} \;
#статистика по сети
speedometer -r ens4
nload
iftop
bmon
#мониторинг различных системых ресурсов
nmon
#jq легкий консольный JSON processor
yum install jq
#добавить альтернативные варианты для приложения командной строки (например для питона), где последний параметр - это порядок, и автоматически будет вызываться приложение с высшим порядком
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
update-alternatives --install /usr/bin/python python /usr/bin/python3.4 2
#узнать dns server текущей тачки
cat /etc/resolv.conf
# узнать размер файлов, заданных pattern1..patternX, начиная поиск с текущей директории с рекурсивным обходом вложенных директорий
du -c -h `find . -name *.csv|grep -i -E 'pattern|pattern2|pattern3'`
# настройка oom рейтинга для сервиса в *.service файле для systemd.
# Указанное значение применяется при подсчете рейтинга перед убийством самого ресурсоемкого процесса
OOMScoreAdjust=-1000
#информация о памяти процесса
pmap -d <PID>
#мониторинг скоростей соединение
iptraf-ng
nethogs
ss
#интерактивно отобразить скорости соединений
iftop -i ens3 -f 'host (ip1 or ip2 or ...)' -t -B -n
# топ-10 процессов по потреблению резидентной памяти
watch -n 1 'ps aux --sort -rss|head -n 10'
#centos 7 подключиться к windows 2012 шаре (https://www.serverlab.ca/tutorials/linux/storage-file-systems-linux/mounting-smb-shares-centos-7/)
mount.cifs //qlick.int.vezet.ru/D /mnt/datapartition/qlik_src -o uid=5000,gid=6000,credentials=/root/smb_library_core_credentials,vers=3.0
#создать простой скрипт автозагрузки
##1 создать сервисный файл в папке /lib/systemd/system/<имя файла>.service , содержащий необходимые разделы и вызов нашего скрипта autorun.sh:
[Unit]
Description=Simple commands and scripts which need to be run once after system reboot (author - Bondarchuk M.)
After=multi-user.target
[Service]
Type=idle
ExecStart=/home/bondarchuk/scripts/autorun.sh
[Install]
WantedBy=multi-user.target
##2 подгрузка нового файла в systemd: systemctl daemon-reload
##3 активировать сервис: systemctl enable <имя файла>.service
#yum список установленных пакетов из указанного репозитория (в примере pgdg96)
yum repo-pkgs pgdg96 list installed
#список доступных IO планировщиков
dmesg | grep schedule
#производительность диска
##Use the dd command to measure server throughput (write speed):
dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync
##Use the dd command to measure server latency:
dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync
#время работы команды
time <команда>
#сбросить кэш linux
echo 3 | sudo tee /proc/sys/vm/drop_caches
#show network connections from PID (полезно в случаях когда некая программа генерирует/принимает какой-то трафик и нужно получить адреса источника и рецепиента)
netstat -taucp | grep <pid or process name>
#посмотреть какие порты слушает процесс
netstat -lptu
netstat -lptun
#параметры беспроводных интерфейсов (аналог ifconfig)
iwconfig
#параметры сетевого интерфейса
iwlist
# монитор для pipe с возможностью ограничения пропускной способности
pv -q --rate-limit 6m
# узнать свой внешний IP
curl -4 ifconfig.co
# конфигурация /etc/sudoers
visudo
# беспарольный вход в sudo -i
# добавить в конец файла sudoers следующее:
someuser ALL=(ALL) NOPASSWD: ALL
# рекомендованные настройки ssh (поменять порт, авторизация только по ключу, запрет доступа для root)
Port 4422
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
SyslogFacility AUTHPRIV
LoginGraceTime 2m
PermitRootLogin no
StrictModes yes
MaxAuthTries 3
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem sftp /usr/libexec/openssh/sftp-server
#определить тип аппаратного RAID в операционной системе
for f in `ls -1d /sys/class/scsi_disk/*/device/`; do echo `ls -1 ${f}block` `cat ${f}raid_level` ; done;
#информация о точках монтирования с нужными колонками
df -h --output=source,target,size --type=ext4|tail -n +2|sort
#определить тип блочного устройства (HDD или что-то другое...SSD например), где 1 значит HDD
for f in `ls -1 /sys/block/sd{b..f}/queue/rotational`; do echo $f '==' `cat $f`; done;
# открыть порт для постгреса в родном файрволе centos
firewall-cmd --zone=public --permanent --add-service=postgresql
firewall-cmd --reload
# склеить несколько pdf в один
qpdf --empty --pages *.pdf -- out.pdf
# список пользователей
cut -d: -f1 /etc/passwd
# список групп пользователей
cut -d: -f1 /etc/group
# создать пользователя username с привязкой к группе users
useradd -g users username
# сменить пароль пользователя vivek
passwd vivek
# информация по идентификатору пользователя
id
# получить список файлов текущей директории с абсолютным путем
ls -d "$PWD/"*
# конвертировать кодировку из cp1251 в utf8 файла file с перезаписью (альтернатива iconv)
recode cp1251..utf8 file
# если после установки epel и последующих операциях с пакетами выдается ошибка
# Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again
yum makecache --disablerepo=epel
yum upgrade --disablerepo=epel ca-certificates nss nss-tools nss-utils
# какие файлы установлены в рамках пакета (CentOS, RHEL)
rpm -ql package_name
# упаковать jpg файлы в один
img2pdf --output file.pdf $(ls -1 *.jpg)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment