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

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


linux:overall:over

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
linux:overall:over [2022/07/16 06:58]
admin
linux:overall:over [2024/05/16 08:01] (текущий)
admin
Строка 9: Строка 9:
  
  
-===== Host =====+**Синхронизация времени**\\ 
 +NTP (Network Time Protocol), популярная утилита **chrony** это его реализация\\ 
 +  * **chronyc** — интерфейс командной строки для хрони 
 +  * **chronyd** — демон, который можно запустить во время загрузки 
 +  * **tracking / sources** - аргументы cmd
  
 +
 +
 +===== Host =====
 <code bash> <code bash>
 # Сменить имя хоста (но нужен ребут видимо) # Сменить имя хоста (но нужен ребут видимо)
Строка 17: Строка 24:
 hostnamectl set-hostname "NewName" hostnamectl set-hostname "NewName"
 </code> </code>
 +
 +
 +
 +===== Копирование =====
 +==== 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>
 +
  
  
Строка 23: Строка 190:
 В последнем случае, символы перевода строки будут удалены, что бы этого избежать, нужно заключить команду в двойные кавычки\\ В последнем случае, символы перевода строки будут удалены, что бы этого избежать, нужно заключить команду в двойные кавычки\\
 <code bash>$ "`ls -l /dir`"</code> <code bash>$ "`ls -l /dir`"</code>
 +
  
  
Строка 31: Строка 199:
 kill -s CONT 16102 kill -s CONT 16102
 </code> </code>
 +
  
  
 ===== Сбор инфы из ОС ===== ===== Сбор инфы из ОС =====
- 
 <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:
  
  
-===== Transfer. Копирование =====+===== истить кэш файловой системы в Linux ядре ===== 
 +<code bash> 
 +# Чистим pagecache: 
 +   echo 1 > /proc/sys/vm/drop_caches
  
 +# Чистим dentrie и inode кэши:
 +   echo 2 > /proc/sys/vm/drop_caches
  
-==== rsync ==== +# Чистим pagecache, dentrie и inode кэши: 
-<code bash> +   echo 3 > /proc/sys/vm/drop_caches
-rsync ключи исходный_каталог пользователь@хост:/каталог_назначения+
 </code> </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> <details>
-<summary> :!: Запуск в несколько потоков </summary> +<summary>:!: Распаковать RPM без установки</summary>
-  * find -type d выводит имена всех директорий. +
-  * xargs -I '{}' xargs запускает для каждого файла команду rsync. Ключ -P 5 утилиты xargs задает количество одновременно запущенных команд (потоков rsync), то есть одновременно будут запущена передача 5-ти файлов. Каждый файл передается отдельно.+
  
 <code bash> <code bash>
-find -type d xargs -I '{}' -P 5 -n1 rsync -a --delete /home/old/Foto/'{}'/ /home/old/CloudDisk/'{}'/+apt install rpm2cpio 
 +rpm2cpio myFile.rpm cpio -idmv 
 </code> </code>
 </details> </details>
  
  
-==== scp ==== +Thread dump java\\ 
-Передать файл по ssh можно либо перенаправив вывод: +Тред дамп джава 
-<code bash># cat .ssh/name.pub ssh user@host "cat >> .ssh/authorized_keys"</code>+<code bash> 
 +jstack -l 11568 output_thread_dump.txt
  
-Копирование **с удаленной машины**, команда **scp** (порядок файлов мб наоборот) +# Для процессов запущенных из под daemon 
-<code bash># scp [-P 22] user@host:source_file desc_file </code>+sudo -u daemon jstack -l 3346175 output_thread_dump.txt
  
-Копирование **на удаленную машину**, команда **scp** +# Просмотр инфы процесса 
-<code bash># scp [-P 22] source_file user@host:desc_file </code>+cat /proc/1588434/environ 
 +</code>
  
-Для копирования открытого ключа есть специальная утилита **ssh-copy-id**, она сама скопирует нужный файл в нужное место +Завершить сеанс пользователя\\ 
-<code bash># ssh-copu-id user@host</code>+Сначала посмотреть его оболочкунайти процессы этой оболочки и грохнуть, все или основной\\ 
 +<code bash> 
 +
 +ps -ft pts/0 -t pts/2 
 +kill -9 11111 2222 
 +</code>
  
  
 +<code bash>
 +</code>
  
-===== xarg ===== 
-Выполнение команды для каждого элемента\\ 
-Программа берет данные из стандартного ввода или из файла, разбивает их в соответствии с указанными параметрами, а затем передает другой программе в качестве аргумента\\ 
  
-**[команда_генератор_списка] | xargs [опции_xargs] [команда]** +===== Сеть =====
- +
-  * **-I** - выполнить для каждого элемента, в кавычках указываем условное обозначение для найденных элементов (может быть любым) +
-  * **-P (num)** - кол-во потоков для выполнения  +
-  * ** ** -  +
-  * ** ** -  +
-  * ** ** - +
  
 <details> <details>
-<summary> :!: Примеры использования</summary> +<summary>:!: Замер скорости</summary> 
 +Утилита **iperf3**, кроссплатформенная, замер пропускной способности\\
  
 <code bash> <code bash>
-# +  Винда 
-# Добавить строку (дату в данном случае) к каждому элементу вывода +https://iperf.fr/iperf-download.php\\ 
-ls | xargs -I '{}'  echo "$(date '+%Y-%m-%d') - '{}'"'+  # Linux 
 +sudo dnf install iperf3
  
-# +  прослушивание сервером 
-# Переименование +iperf3 -s
-ls | sed -e "p;s/.txt$/.sql/" | xargs -n2 fmv+
  
-# +  Запуск клиента 
-# Смена прав доступа +iperf3 -c host-ip
-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> </code>
 </details> </details>
- 
- 
-<code bash> 
-</code> 
- 
  
  
linux/overall/over.1657954686.txt.gz · Последнее изменение: 2022/07/16 06:58 — admin