Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
linux:overall:over [2022/05/31 04:34] admin |
linux:overall:over [2024/05/16 08:01] (текущий) admin |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
====== Общее ====== | ====== Общее ====== | ||
- | ==== Дата/ | + | ===== Дата/ |
Текущая дата/ | Текущая дата/ | ||
Строка 9: | Строка 9: | ||
- | ==== Host ==== | + | **Синхронизация времени**\\ |
+ | NTP (Network Time Protocol), популярная утилита **chrony** это его реализация\\ | ||
+ | * **chronyc** — интерфейс командной строки для хрони | ||
+ | * **chronyd** — демон, который можно запустить во время загрузки | ||
+ | * **tracking / sources** - аргументы cmd | ||
+ | |||
+ | |||
+ | ===== Host ===== | ||
<code bash> | <code bash> | ||
# Сменить имя хоста (но нужен ребут видимо) | # Сменить имя хоста (но нужен ребут видимо) | ||
Строка 19: | Строка 26: | ||
- | ==== Подстановка команд ==== | + | |
+ | ===== Копирование ===== | ||
+ | ==== rsync ==== | ||
+ | [[https:// | ||
+ | |||
+ | <code bash> | ||
+ | rsync ключи исходный_каталог пользователь@хост:/ | ||
+ | </ | ||
+ | |||
+ | Синхронизирует указанные каталоги. | ||
+ | * **-a, –archive** - позволяет выполнять рекурсивную синхронизацию, | ||
+ | * **-z, –compress** - сжимает все передаваемые данные файлов | ||
+ | * **-P, -progress** - показать % выполнения во время передачи | ||
+ | * **-R, --relative** - использовать относительные пути (чтобы сохранялся путь расположения) | ||
+ | * **–delete (..-before, ..-after)** - удалять файлы, которых нет на передающей стороне | ||
+ | |||
+ | **Синхронизация указанного каталога** | ||
+ | <code bash># rsync -azP source destination (user@host: | ||
+ | |||
+ | :!: **Пропускать каталоги**, | ||
+ | таким же фокусом можно регулировать глубину вложенности рекурсивного копирования, | ||
+ | <code bash> | ||
+ | rsync --exclude=' | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | * find -type d выводит имена всех директорий. | ||
+ | * xargs -I ' | ||
+ | |||
+ | <code bash> | ||
+ | find -type d | xargs -I ' | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | [[https:// | ||
+ | |||
+ | Для CentOS ставим и запускаем **rsync-daemon**\\ | ||
+ | |||
+ | Концепция: | ||
+ | * на источнике определяем директории доступные для синхронизации, | ||
+ | * пользователь здесь **условный**, | ||
+ | * на приемнике делаем скрипт для единичной синхронизации, | ||
+ | |||
+ | Клиент (источник): | ||
+ | <code bash> | ||
+ | # / | ||
+ | max connections = 10 | ||
+ | exclude = lost+found/ | ||
+ | dont compress = *.gz *.tgz *.zip | ||
+ | # use chroot = false - ??? | ||
+ | |||
+ | [service1] | ||
+ | path = / | ||
+ | comment = My service 1 | ||
+ | read only = yes | ||
+ | list = yes | ||
+ | auth users = synuser | ||
+ | secrets file = / | ||
+ | hosts allow = 192.168.0.100 | ||
+ | hosts deny = * | ||
+ | </ | ||
+ | |||
+ | Сервер (приемник): | ||
+ | <code bash> | ||
+ | # | ||
+ | |||
+ | password_file='/ | ||
+ | user=' | ||
+ | ip=' | ||
+ | source=' | ||
+ | destination='/ | ||
+ | |||
+ | rsync -a --delete-after --password-file=$password_file $user@$ip:: | ||
+ | </ | ||
+ | В файле кредлов сохранен только пароль\\ | ||
+ | |||
+ | * Возможны траблы с SELinux, его надо настроить либо отключить\\ | ||
+ | * Права на файлы кредлов 600\\ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ==== scp ==== | ||
+ | Передать файл по ssh можно либо перенаправив вывод: | ||
+ | <code bash># cat .ssh/ | ||
+ | |||
+ | Копирование **с удаленной машины**, | ||
+ | <code bash># scp [-P 22] user@host: | ||
+ | |||
+ | Копирование **на удаленную машину**, | ||
+ | <code bash># scp [-P 22] source_file user@host: | ||
+ | |||
+ | Для копирования открытого ключа есть специальная утилита **ssh-copy-id**, | ||
+ | <code bash># ssh-copu-id user@host</ | ||
+ | |||
+ | |||
+ | |||
+ | ===== xarg ===== | ||
+ | Выполнение команды для каждого элемента\\ | ||
+ | Программа берет данные из стандартного ввода или из файла, разбивает их в соответствии с указанными параметрами, | ||
+ | |||
+ | **[команда_генератор_списка] | xargs [опции_xargs] [команда]** | ||
+ | |||
+ | * **-I** - выполнить для каждого элемента, | ||
+ | * **-P (num)** - кол-во потоков для выполнения | ||
+ | * **-i** - для замены аргумента в нужном месте | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | <code bash> | ||
+ | # Аргументы передаются в конце команды | ||
+ | find. -name *.png -type f -print | xargs tar -cvzf images.tar.gz | ||
+ | |||
+ | # Так в указанное место (скобки похоже по умолчанию используются) | ||
+ | ls /etc/*.conf | xargs -i cp {} / | ||
+ | |||
+ | # Добавить строку (дату в данном случае) к каждому элементу вывода | ||
+ | ls / | xargs -I ' | ||
+ | |||
+ | tar -cvf $pathToBcps$nameArchive / | ||
+ | |||
+ | # Переименование | ||
+ | ls | sed -e " | ||
+ | |||
+ | # Смена прав доступа | ||
+ | find . -group root -print | xargs chown temp | ||
+ | |||
+ | # Удалить файлы старше 7 дней | ||
+ | find /tmp -type f -name ' | ||
+ | |||
+ | # Можно заменить циклом, | ||
+ | find . -type f -and -iname " | ||
+ | # Эквивалентно | ||
+ | for file in `find . -type f -and -iname " | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== watch ===== | ||
+ | Запуск указанной команды с периодами\\ | ||
+ | |||
+ | * **-d** - выделять измененные данные | ||
+ | * **-n** - интервал в секундах | ||
+ | * **-t (--no-title)** - | ||
+ | * **-x (--exec)** - передать выполнение в sh -c | ||
+ | |||
+ | <code bash> | ||
+ | # Выполнение нескольких команд, | ||
+ | watch -n10 -d "ls -l; echo '< | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== Подстановка команд ===== | ||
Подстановка команд в скрипте может быть в **конструкции- $()**, в КИ можно использовать **кавычки- ``**\\ | Подстановка команд в скрипте может быть в **конструкции- $()**, в КИ можно использовать **кавычки- ``**\\ | ||
В последнем случае, | В последнем случае, | ||
Строка 25: | Строка 192: | ||
- | ==== Приостановить/ | + | |
+ | ===== Приостановить/ | ||
Системные вызовы **SIGSTOP и SIGCONT** | Системные вызовы **SIGSTOP и SIGCONT** | ||
<code bash> | <code bash> | ||
Строка 33: | Строка 201: | ||
- | ==== Сбор инфы из ОС ==== | ||
+ | ===== Сбор инфы из ОС ===== | ||
< | < | ||
< | < | ||
- | |||
<code bash> | <code bash> | ||
#!/bin/bash | #!/bin/bash | ||
Строка 94: | Строка 261: | ||
var=`curl -s ipinfo.io | grep -E ' | var=`curl -s ipinfo.io | grep -E ' | ||
echo ' | echo ' | ||
- | |||
esac | esac | ||
</ | </ | ||
Строка 101: | Строка 267: | ||
- | ==== Transfer. Копирование ==== | + | ===== Oчистить кэш файловой системы в Linux ядре ===== |
+ | <code bash> | ||
+ | # Чистим pagecache: | ||
+ | echo 1 > / | ||
+ | # Чистим dentrie и inode кэши: | ||
+ | echo 2 > / | ||
- | === rsync === | + | # Чистим pagecache, dentrie и inode кэши: |
- | <code bash> | + | echo 3 > /proc/ |
- | rsync ключи исходный_каталог пользователь@хост:/каталог_назначения | + | |
</ | </ | ||
- | Синхронизирует указанные каталоги. | ||
- | * **-a, –archive** - позволяет выполнять рекурсивную синхронизацию, | ||
- | * **-z, –compress** - сжимает все передаваемые данные файлов | ||
- | * **-P, -progress** - показать % выполнения во время передачи | ||
- | * **-R, --relative** - использовать относительные пути (чтобы сохранялся путь расположения) | ||
- | * **–delete (..-before, ..-after)** - удалять файлы, которых нет на передающей стороне | ||
- | **Синхронизация указанного каталога** | ||
- | <code bash># rsync -azP source destination (user@host: | ||
+ | |||
+ | ===== Разное ===== | ||
< | < | ||
- | < | + | < |
- | * find -type d выводит имена всех директорий. | + | |
- | * xargs -I ' | + | |
<code bash> | <code bash> | ||
- | find -type d | xargs -I ' | + | apt install rpm2cpio |
+ | rpm2cpio myFile.rpm | ||
</ | </ | ||
</ | </ | ||
- | === scp === | + | Thread dump java\\ |
- | Передать файл | + | Тред дамп джава |
- | <code bash># cat .ssh/ | + | <code bash> |
+ | jstack -l 11568 > output_thread_dump.txt | ||
- | Копирование **с удаленной машины**, команда **scp** (порядок файлов мб наоборот) | + | # Для |
- | <code bash># scp [-P 22] user@host: | + | sudo -u daemon jstack |
- | Копирование **на удаленную | + | # Просмотр инфы процесса |
- | <code bash># scp [-P 22] source_file user@host: | + | cat / |
- | + | </ | |
- | Для копирования | + | |
- | <code bash># ssh-copu-id user@host</ | + | |
+ | Завершить сеанс пользователя\\ | ||
+ | Сначала посмотреть его оболочку, | ||
+ | <code bash> | ||
+ | w | ||
+ | ps -ft pts/0 -t pts/2 | ||
+ | kill -9 11111 2222 | ||
+ | </ | ||
Строка 149: | Строка 319: | ||
</ | </ | ||
+ | |||
+ | ===== Сеть ===== | ||
+ | |||
+ | < | ||
+ | < | ||
+ | Утилита **iperf3**, кроссплатформенная, | ||
+ | |||
+ | <code bash> | ||
+ | # Винда | ||
+ | https:// | ||
+ | # Linux | ||
+ | sudo dnf install iperf3 | ||
+ | |||
+ | # прослушивание сервером | ||
+ | iperf3 -s | ||
+ | |||
+ | # Запуск клиента | ||
+ | iperf3 -c host-ip | ||
+ | |||
+ | </ | ||
+ | </ | ||