Last active
April 27, 2024 11:44
-
-
Save mikkabond/6beec2809c525905eb8c204271e45d5b to your computer and use it in GitHub Desktop.
different linux snippets
This file contains hidden or 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
#версия системы | |
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' [email protected]:/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 [email protected]:/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