Инструменты пользователя

Инструменты сайта


linux:overall:over

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
linux:overall:over [2022/04/05 11:57]
admin
linux:overall:over [2024/05/16 08:01] (текущий)
admin
Строка 1: Строка 1:
 ====== Общее ====== ====== Общее ======
  
-==== Дата/Время ====+===== Дата/Время =====
 Текущая дата/время **$ date** Текущая дата/время **$ date**
  
Строка 9: Строка 9:
  
  
-==== Host ====+**Синхронизация времени**\\ 
 +NTP (Network Time Protocol), популярная утилита **chrony** это его реализация\\ 
 +  * **chronyc** — интерфейс командной строки для хрони 
 +  * **chronyd** — демон, который можно запустить во время загрузки 
 +  * **tracking / sources** - аргументы cmd
  
 +
 +
 +===== Host =====
 <code bash> <code bash>
 # Сменить имя хоста (но нужен ребут видимо) # Сменить имя хоста (но нужен ребут видимо)
Строка 19: Строка 26:
  
  
-==== Подстановка команд ====+ 
 +===== Копирование ===== 
 +==== rsync ==== 
 +[[https://www.opennet.ru/man.shtml?topic=rsyncd.conf&category=5&russian=0|Развернутая дока]] 
 + 
 +<code bash> 
 +rsync ключи исходный_каталог пользователь@хост:/каталог_назначения 
 +</code> 
 + 
 +Синхронизирует указанные каталоги. 
 +  * **-a, –archive** -  позволяет выполнять рекурсивную синхронизацию, сохраняет символические ссылки, специальные файлы и файлы устройств, время модификации, группу, владельца и права 
 +  * **-z, –compress** - сжимает все передаваемые данные файлов 
 +  * **-P, -progress** - показать % выполнения во время передачи 
 +  * **-R, --relative** - использовать относительные пути (чтобы сохранялся путь расположения) 
 +  * **–delete (..-before, ..-after)** - удалять файлы, которых нет на передающей стороне 
 + 
 +**Синхронизация указанного каталога** 
 +<code bash># rsync -azP source destination (user@host:destination)</code> 
 + 
 +:!: **Пропускать каталоги**, скопировать только файлы 
 +таким же фокусом можно регулировать глубину вложенности рекурсивного копирования, типа "/*/*/" level 2 или что то вроде того..\\ 
 +<code bash> 
 +rsync --exclude='*/' source/ destination/ 
 +</code> 
 + 
 + 
 +<details> 
 +<summary> :!: Запуск в несколько потоков </summary> 
 +  * find -type d выводит имена всех директорий. 
 +  * xargs -I '{}' xargs запускает для каждого файла команду rsync. Ключ -P 5 утилиты xargs задает количество одновременно запущенных команд (потоков rsync), то есть одновременно будут запущена передача 5-ти файлов. Каждый файл передается отдельно. 
 + 
 +<code bash> 
 +find -type d | xargs -I '{}' -P 5 -n1 rsync -a --delete /home/old/Foto/'{}'/ /home/old/CloudDisk/'{}'/ 
 +</code> 
 +</details> 
 + 
 + 
 +<details> 
 +<summary> :!: Постоянная синхронизация каталогов </summary> 
 +[[https://www.dmosk.ru/instruktions.php?object=rsync-server|Источник]] 
 + 
 +Для CentOS ставим и запускаем **rsync-daemon**\\ 
 + 
 +Концепция:  
 +  * на источнике определяем директории доступные для синхронизации, с набором параметров для каждой 
 +  * пользователь здесь **условный**, в рамках rsync'a, можно не указывать, будет анонимус 
 +  * на приемнике делаем скрипт для единичной синхронизации, запускаем его по расписанию 
 + 
 +Клиент (источник):\\ 
 +<code bash> 
 +# /etc/rsyncd.conf 
 +max connections = 10 
 +exclude = lost+found/ 
 +dont compress = *.gz *.tgz *.zip 
 +# use chroot = false - ??? 
 + 
 +[service1] 
 +        path = /home/dn/outfolder/ 
 +        comment = My service 1 
 +        read only = yes 
 +        list = yes 
 +        auth users = synuser 
 +        secrets file = /etc/rsyncd.scrt (формат простой- логин:пароль) 
 +        hosts allow = 192.168.0.100 
 +        hosts deny = * 
 +</code> 
 + 
 +Сервер (приемник): 
 +<code bash> 
 +#!/bin/bash 
 + 
 +password_file='/etc/rsyncd.scrt' 
 +user='synuser' 
 +ip='192.168.0.101' 
 +source='service1' 
 +destination='/var/infolder/service1/' 
 + 
 +rsync -a --delete-after --password-file=$password_file $user@$ip::$source $destination 
 +</code> 
 +В файле кредлов сохранен только пароль\\ 
 + 
 +* Возможны траблы с SELinux, его надо настроить либо отключить\\ 
 +* Права на файлы кредлов 600\\ 
 +</details> 
 + 
 + 
 + 
 +==== scp ==== 
 +Передать файл по ssh можно либо перенаправив вывод: 
 +<code bash># cat .ssh/name.pub ssh user@host "cat >> .ssh/authorized_keys"</code> 
 + 
 +Копирование **с удаленной машины**, команда **scp** (порядок файлов мб наоборот) 
 +<code bash># scp [-P 22] user@host:source_file desc_file </code> 
 + 
 +Копирование **на удаленную машину**, команда **scp** 
 +<code bash># scp [-P 22] source_file user@host:desc_file </code> 
 + 
 +Для копирования открытого ключа есть специальная утилита **ssh-copy-id**, она сама скопирует нужный файл в нужное место 
 +<code bash># ssh-copu-id user@host</code> 
 + 
 + 
 + 
 +===== xarg ===== 
 +Выполнение команды для каждого элемента\\ 
 +Программа берет данные из стандартного ввода или из файла, разбивает их в соответствии с указанными параметрами, а затем передает другой программе в качестве аргумента\\ 
 + 
 +**[команда_генератор_списка] | xargs [опции_xargs] [команда]** 
 + 
 +  * **-I** - выполнить для каждого элемента, в кавычках указываем условное обозначение для найденных элементов (может быть любым) 
 +  * **-P (num)** - кол-во потоков для выполнения  
 +  * **-i** - для замены аргумента в нужном месте 
 + 
 + 
 +<details> 
 +<summary> :!: Примеры использования</summary> 
 +<code bash> 
 +  # Аргументы передаются в конце команды 
 +find. -name *.png -type f -print | xargs tar -cvzf images.tar.gz 
 + 
 +  # Так в указанное место (скобки похоже по умолчанию используются) 
 +ls /etc/*.conf | xargs -i cp {} /home/likegeeks/Desktop/out 
 + 
 +  # Добавить строку (дату в данном случае) к каждому элементу вывода 
 +ls / | xargs -I '{}' echo "$(date '+%Y-%m-%d') - {}" 
 + 
 +tar -cvf $pathToBcps$nameArchive /etc/letsencrypt /var/www /etc/apache2 | xargs -I '{}' echo "$(date '+%Y-%m-%d_%H-%M') - {}" > /usr/zxbcps/bin/logs/lastBcps.log 
 + 
 +  # Переименование 
 +ls | sed -e "p;s/.txt$/.sql/" | xargs -n2 fmv 
 + 
 +  # Смена прав доступа 
 +find . -group root -print | xargs chown temp 
 + 
 +  # Удалить файлы старше 7 дней  
 +find /tmp -type f -name '*' -mtime +7 -print0 | xargs -0 rm -f 
 + 
 +  # Можно заменить циклом, например это  
 +find . -type f -and -iname "*.deb" | xargs -n 1 dpkg -I 
 +    # Эквивалентно  
 +for file in `find . -type f -and -iname "*.deb"`; do dpkg -I "$file"; done 
 +</code> 
 +</details> 
 + 
 + 
 + 
 +===== watch ===== 
 +Запуск указанной команды с периодами\\ 
 + 
 +  * **-d** - выделять измененные данные 
 +  * **-n** - интервал в секундах 
 +  * **-t (--no-title)** - 
 +  * **-x (--exec)** - передать выполнение в sh -c 
 + 
 +<code bash> 
 +  # Выполнение нескольких команд, 10 сек и показывать разницу 
 +watch -n10 -d "ls -l; echo '<=======>' ls -l ../;" 
 +</code> 
 + 
 + 
 + 
 +===== Подстановка команд =====
 Подстановка команд в скрипте может быть в **конструкции- $()**, в КИ можно использовать **кавычки- ``**\\ Подстановка команд в скрипте может быть в **конструкции- $()**, в КИ можно использовать **кавычки- ``**\\
 В последнем случае, символы перевода строки будут удалены, что бы этого избежать, нужно заключить команду в двойные кавычки\\ В последнем случае, символы перевода строки будут удалены, что бы этого избежать, нужно заключить команду в двойные кавычки\\
Строка 25: Строка 192:
  
  
-==== Приостановить/Возобновить процесс ====+ 
 +===== Приостановить/Возобновить процесс =====
 Системные вызовы **SIGSTOP и SIGCONT** Системные вызовы **SIGSTOP и SIGCONT**
 <code bash> <code bash>
Строка 33: Строка 201:
  
  
-==== Сбор инфы из ОС ==== 
  
 +===== Сбор инфы из ОС =====
 <details> <details>
-<summary> Инфа разбита по блокам, результат в Json </summary> +<summary> :!: Инфа разбита по блокам, результат в Json </summary>
 <code bash> <code bash>
 #!/bin/bash #!/bin/bash
Строка 94: Строка 261:
         var=`curl -s ipinfo.io | grep -E 'country|region|city' | sed s/'city'/'Город'/g | sed s/'region'/'Регион'/g | sed s/'country'/'Страна'/g`         var=`curl -s ipinfo.io | grep -E 'country|region|city' | sed s/'city'/'Город'/g | sed s/'region'/'Регион'/g | sed s/'country'/'Страна'/g`
         echo '[{'${var::-1}'}]'         echo '[{'${var::-1}'}]'
- 
 esac esac
 </code> </code>
Строка 101: Строка 267:
  
  
 +===== Oчистить кэш файловой системы в Linux ядре =====
 +<code bash>
 +# Чистим pagecache:
 +   echo 1 > /proc/sys/vm/drop_caches
  
 +# Чистим dentrie и inode кэши:
 +   echo 2 > /proc/sys/vm/drop_caches
 +
 +# Чистим pagecache, dentrie и inode кэши:
 +   echo 3 > /proc/sys/vm/drop_caches
 +</code>
 +
 +
 +
 +
 +===== Разное =====
 +
 +<details>
 +<summary>:!: Распаковать RPM без установки</summary>
 +
 +<code bash>
 +apt install rpm2cpio
 +rpm2cpio myFile.rpm | cpio -idmv
 +
 +</code>
 +</details>
 +
 +
 +Thread dump java\\
 +Тред дамп джава
 +<code bash>
 +jstack -l 11568 > output_thread_dump.txt
 +
 +# Для процессов запущенных из под daemon
 +sudo -u daemon jstack -l 3346175 > output_thread_dump.txt
 +
 +# Просмотр инфы процесса
 +cat /proc/1588434/environ
 +</code>
 +
 +Завершить сеанс пользователя\\
 +Сначала посмотреть его оболочку, найти процессы этой оболочки и грохнуть, все или основной\\
 +<code bash>
 +w
 +ps -ft pts/0 -t pts/2
 +kill -9 11111 2222
 +</code>
 +
 +
 +<code bash>
 +</code>
 +
 +
 +===== Сеть =====
 +
 +<details>
 +<summary>:!: Замер скорости</summary>
 +Утилита **iperf3**, кроссплатформенная, замер пропускной способности\\
 +
 +<code bash>
 +  # Винда
 +https://iperf.fr/iperf-download.php\\
 +  # Linux
 +sudo dnf install iperf3
 +
 +  # прослушивание сервером
 +iperf3 -s
 +
 +  # Запуск клиента
 +iperf3 -c host-ip
 +
 +</code>
 +</details>
  
  
linux/overall/over.1649159827.txt.gz · Последнее изменение: 2022/04/05 11:57 — admin