Утилиты linux
rsync
Примеры:
ss
Примеры:
ps
mpstat
Показывает статистику загрузки процессора. Команды:
free
Показывает потребление ОЗУ на текущий момент:
top
Что-то наподобие диспетчера задач, только для линукс, показывает попроцессное потребление озу
dpkg
Пакетный менеджер для debian систем (не путать с системой управления пакетами — apt/apt-get)
netstat
rsync
-v — выводит подробную информацию о процессе копирования;[-a] — сохраняет все атрибуты оригинальных файлов;-u — не перезаписывать более новые файлы;-l — копирует символьные ссылки;-L — копирует содержимое ссылок;-p — сохраняет права для файлов;-t — сохраняет время модификации;-e — использовать другой транспорт, например, ssh;[-z] — cжимает файлы перед передачей;—recursive — перебирать директории рекурсивно;—exclude — Исключить файлы по шаблону;Примеры:
rsync -avz skillproject/data/ . — из подкаталога в текущий каталогrsync -avz skillproject/data/ aaa/ — из подпапки в подпапку aaa/rsync -avz skillproject/data/ [email protected]:/home/d/digita6d/code-skills.ru/public_html/sources/skillproject/data/ — передача на удаленный серверrsync -avze ssh skillproject/data/ [email protected]:/home/d/digita6d/code-skills.ru/public_html/sources/skillproject/data/ — то же самое м явным указанием sshss
-l или —listening — посмотреть только прослушиваемые порты;-p или —program — показать имя программы и ее PID;-t или —tcp — показать tcp порты;-u или —udp показать udp порты;-n или —numeric показывать ip адреса в числовом виде.Примеры:
ss -tlpn — проверить все прослушивающие tcp-портыss -tulpn | grep :80 — показать все процессы, работающие на 80-м портуps
ps -e — показать все процессыps -ef — показать подробную информацию о каждом процессеps -ef | grep phantom — найти все процессы с именем phantommpstat
Показывает статистику загрузки процессора. Команды:
mpstat — показывает общую информациюmpstat -P ALL — по каждому ядруfree
Показывает потребление ОЗУ на текущий момент:
free -h — показывает информацию в гигабайтах (более человеко читаемо, чем в байтах)top
Что-то наподобие диспетчера задач, только для линукс, показывает попроцессное потребление озу
dpkg
Пакетный менеджер для debian систем (не путать с системой управления пакетами — apt/apt-get)
dpkg -s <packname> — проверить, установлен ли пакетdpkg -l — список всех пакетовdpkg -l | grep apache2 — проверить, установлен ли конкретный пакетdpkg -i <package.deb> — установить пакетnetstat
netstat -pnltu — посмотреть список используемых портов👍3❤🔥2❤1🔥1👏1
Шпаргалка по systemd
Основные команды systemctl:
1. Проверка статуса службы:
2. Запуск службы:
3. Остановка службы:
4. Перезапуск службы:
5. Перезагрузка, только если служба работает:
6. Включить автозапуск службы при загрузке:
7. Отключить автозапуск службы:
8. Показать все запущенные службы:
9. Просмотр всех служб (включая остановленные):
10. Показать все активные сервисы, включая другие юниты (mount, timer и т.д.):
11. Маскировка службы (запрет её запуска):
12. Демаскировка службы:
Основные команды systemctl:
1. Проверка статуса службы:
systemctl status <имя_сервиса>
2. Запуск службы:
systemctl start <имя_сервиса>
3. Остановка службы:
systemctl stop <имя_сервиса>
4. Перезапуск службы:
systemctl restart <имя_сервиса>
5. Перезагрузка, только если служба работает:
systemctl reload <имя_сервиса>
6. Включить автозапуск службы при загрузке:
systemctl enable <имя_сервиса>
7. Отключить автозапуск службы:
systemctl disable <имя_сервиса>
8. Показать все запущенные службы:
systemctl list-units --type=service
9. Просмотр всех служб (включая остановленные):
systemctl list-units --all --type=service
10. Показать все активные сервисы, включая другие юниты (mount, timer и т.д.):
systemctl list-units --state=active
11. Маскировка службы (запрет её запуска):
systemctl mask <имя_сервиса>
12. Демаскировка службы:
systemctl unmask <имя_сервиса>
👍3❤2
Libtree
Утилита, позволяющая получить список разделяемых библиотек (shared libraries) в виде дерева, либо в виде путей до этих библиотек в системе.
1. Скачиваем libtree:
2. Проверяем нужный нам файл:
При необходимости углубиться и получить зависимости для отображаемых библиотек просто добавляем
Отобразить полный путь до файла на сервере можно с помощью опции
По умолчанию, информация о некоторых библиотеках не выводится в libtree. Подробнее об этом в выводе команды:
https://github.com/haampie/libtree
Утилита, позволяющая получить список разделяемых библиотек (shared libraries) в виде дерева, либо в виде путей до этих библиотек в системе.
1. Скачиваем libtree:
$ wget https://github.com/haampie/libtree/releases/download/v3.0.1/libtree_x86_64 -O libtree
$ chmod +x libtree
2. Проверяем нужный нам файл:
$ ./libtree /bin/nano
/bin/nano
├── libmagic.so.1 [default path]
│ └── libz.so.1 [default path]
├── libtinfo.so.6 [default path]
└── libncursesw.so.6 [default path]
└── libtinfo.so.6 [default path]
При необходимости углубиться и получить зависимости для отображаемых библиотек просто добавляем
-v, -vv или -vvv соответственно.
$ ./libtree -vvv /bin/nano
/bin/nano
├── libmagic.so.1 [default path]
│ ├── libz.so.1 [default path]
│ │ └── libc.so.6 [default path]
│ │ └── ld-linux-x86-64.so.2 [default path]
│ └── libc.so.6 [default path]
│ └── ld-linux-x86-64.so.2 [default path]
├── libc.so.6 [default path]
│ └── ld-linux-x86-64.so.2 [default path]
├── libtinfo.so.6 [default path]
│ └── libc.so.6 [default path]
│ └── ld-linux-x86-64.so.2 [default path]
└── libncursesw.so.6 [default path]
├── libtinfo.so.6 [default path]
│ └── libc.so.6 [default path]
│ └── ld-linux-x86-64.so.2 [default path]
└── libc.so.6 [default path]
└── ld-linux-x86-64.so.2 [default path]
Отобразить полный путь до файла на сервере можно с помощью опции
-p:
$ ./libtree -p -vvv /bin/ping
/bin/ping
├── /lib64/libcap.so.2 [default path]
│ └── /lib64/libc.so.6 [default path]
│ └── /lib64/ld-linux-x86-64.so.2 [default path]
├── /lib64/libc.so.6 [default path]
│ └── /lib64/ld-linux-x86-64.so.2 [default path]
└── /lib64/libidn2.so.0 [default path]
├── /lib64/libunistring.so.2 [default path]
│ └── /lib64/libc.so.6 [default path]
│ └── /lib64/ld-linux-x86-64.so.2 [default path]
└── /lib64/libc.so.6 [default path]
└── /lib64/ld-linux-x86-64.so.2 [default path]
По умолчанию, информация о некоторых библиотеках не выводится в libtree. Подробнее об этом в выводе команды:
$ ./libtree --help
https://github.com/haampie/libtree
👍2❤1
Команды мониторинга и отладки
top отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (с автоматическим обновлением данных)ps -eafw отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды)ps -e -o pid,args --forest вывести PID’ы и процессы в виде дереваpstree отобразить дерево процессовkill -9 98989 kill -KILL 98989
«убить» процесс с PID 98989 «на смерть» (без соблюдения целостности данных)kill -TERM 98989 Корректно завершить процесс с PID 98989kill -1 98989
kill -HUP 98989 заставить процесс с PID 98989 перепрочитать файл конфигурацииlsof -p 98989 отобразить список файлов, открытых процессом с PID 98989lsof /home/user1 отобразить список открытых файлов из директории /home/user1strace -c ls > /dev/null вывести список системных вызовов, созданных и полученных процессом lsstrace -f -e open ls > /dev/null вывести вызовы бибилотекwatch -n1 ‘cat /proc/interrupts’ отображать прерывания в режиме реального времениlast reboot отобразить историю перезагрузок системыlast user1 отобразить историю регистрации пользователя user1 в системе и время его нахождения в нейlsmod вывести загруженные модули ядраfree -m показать состояние оперативной памяти в мегабайтахsmartctl -A /dev/hda контроль состояния жёсткого диска /dev/hda через SMARTsmartctl -i /dev/hda проверить доступность SMART на жёстком диске /dev/hdatail /var/log/dmesg вывести десять последних записей из журнала загрузки ядраtail /var/log/messages вывести десять последних записей из системного журнала❤2👍2👎1
Совет по Linux💡
Когда нужно создать сразу несколько каталогов, необязательно делать это по одному.
Команда mkdir поддерживает расширение фигурных скобок (brace expansion), позволяя создать несколько вложенных директорий за один раз.
Эта команда мгновенно создаёт папки для двух сайтов - у каждого будет свой каталог backup, monitoring и network.
Когда нужно создать сразу несколько каталогов, необязательно делать это по одному.
Команда mkdir поддерживает расширение фигурных скобок (brace expansion), позволяя создать несколько вложенных директорий за один раз.
$ mkdir -p ~/scripts/{site-01,site-02}/{backup,monitoring,network}
Эта команда мгновенно создаёт папки для двух сайтов - у каждого будет свой каталог backup, monitoring и network.
👍3❤2
📂 Быстрое создание структуры директорий в Linux
Иногда нужно быстро создать целую структуру папок. Вручную - долго. На помощь приходит
Этот однострочник создаст папки
Фишка: можно создавать вложенные структуры сразу:
Это создаст:
-
-
-
-
Иногда нужно быстро создать целую структуру папок. Вручную - долго. На помощь приходит
mkdir с флагом -p:
mkdir -p /var/www/project/{css,js,images,fonts}
Этот однострочник создаст папки
css, js, images, fonts внутри /var/www/project, даже если родительские директории ещё не существуют.Фишка: можно создавать вложенные структуры сразу:
mkdir -p /opt/data/{logs/{nginx,mysql},backups/{daily,weekly}}
Это создаст:
-
/opt/data/logs/nginx-
/opt/data/logs/mysql-
/opt/data/backups/daily-
/opt/data/backups/weekly👍3❤1
TCP vs UDP
Приведу 7 отличий, которые было бы неплохо знать.
Существует два способа установить соединение перед отправкой данных с одного устройства на другое: с установлением соединения (connection-oriented) и без установления соединения (connectionless). В первом случае создается сквозное соединение между отправителем и получателем перед передачей данных с сохранением порядка передачи пакетов. Во втором случае пакеты передаются между отправителем и получателем без создания какого-либо соединения. Пакеты проходят по разным маршрутам от отправителя к получателю, этот способ ненадежен и не гарантирует доставку пакетов.
https://habr.com/ru/articles/732794/
Приведу 7 отличий, которые было бы неплохо знать.
Существует два способа установить соединение перед отправкой данных с одного устройства на другое: с установлением соединения (connection-oriented) и без установления соединения (connectionless). В первом случае создается сквозное соединение между отправителем и получателем перед передачей данных с сохранением порядка передачи пакетов. Во втором случае пакеты передаются между отправителем и получателем без создания какого-либо соединения. Пакеты проходят по разным маршрутам от отправителя к получателю, этот способ ненадежен и не гарантирует доставку пакетов.
https://habr.com/ru/articles/732794/
❤1👍1
Совет для Linux💡
Получайте уведомления, когда ваши команды в терминале завершатся!
Замените
Получайте уведомления, когда ваши команды в терминале завершатся!
$ sudo apt update; notify-send "Обновление завершено" "Обновления получены"
Замените
apt update на любую команду, выполнение которой займет время. Не забудьте сначала установить inotify-tools:
$ sudo apt install inotify-tools
👍2❤1
Совет по Linux 💡
Если вы хотите определить, сколько времени займет выполнение определенной команды или скрипта, используйте команду time.
Вот синтаксис:
Пример:
Он также показывает использование системных ресурсов процесса, что делает его полезным инструментом для оценки эффективности конкретной команды.
Если вы хотите определить, сколько времени займет выполнение определенной команды или скрипта, используйте команду time.
Вот синтаксис:
$ time <команда>.Пример:
$ time find / -perm -u=s -type f &>/dev/nullОн также показывает использование системных ресурсов процесса, что делает его полезным инструментом для оценки эффективности конкретной команды.
❤2👍1
Полезные Bash-скрипты для повседневных задач
Ниже — два скрипта, которые могут сэкономить тебе время и нервы.
Перемещение директории
Переименование файла
Ниже — два скрипта, которые могут сэкономить тебе время и нервы.
Перемещение директории
#!/bin/bash
# Проверка существования директории-источника
if [ ! -d "$1" ]; then
echo "$1 doesn't exist"
exit 1
fi
# Проверка существования директории-назначения
if [ ! -d "$2" ]; then
echo "$2 doesn't exist"
exit 1
fi
# Копирование и удаление исходной директории
if cp -r "$1" "$2" && rm -r "$1"; then
echo "Dir $1 was moved to dir $2 successfully"
exit 0
else
echo "Something went wrong"
exit 1
fi
Переименование файла
#!/bin/bash
# Проверка количества аргументов
if [ $# -ne 2 ]; then
echo "2 args needed: file to rename and new name"
exit 1
fi
# Проверка существования файла
if [ ! -f "$1" ]; then
echo "File $1 does not exist or it's not a file"
exit 1
fi
# Переименование через копирование и удаление
if cp "$1" "$2" && rm -f "$1"; then
echo "Name of file $1 was changed to $2"
exit 0
else
echo "Something went wrong!"
exit 1
fi
✍3❤2👍2
Stress – это инструмент командной строки Linux, который позволяет нагружать процессор, память, систему ввода-вывода и диск
Установим stress на CentOS, RHEL, Fedora
Установим stress на Ubuntu и Debian
Синтаксис stress
Увеличить нагрузку на процессор
Опция -c или –cpu использует заданное количество воркеров на функции sqrt(), чтобы увеличить нагрузку на процессор и заставить его работать интенсивнее.
Следующая команда будет непрерывно загружать 4 ядра процессора
Задаем тайм-аут для стресса
Чтобы задать работу на определенное время, вы можете использовать опцию -t или –timeout.
Следующие команды будут нагружать четыре ядра процессора только в течение 10 с.
Увеличение нагрузки на память
Опция -v или --vm позволяет вам нагрузить виртуальную память.
Увеличение нагрузки ввода-вывода на диск
Вы можете увеличить нагрузку ввода-вывода с помощью опции -i или –io.
Создаем нагрузка на систему с помощью двух процессов, связанных с вводом-выводом.
Мы проверим загрузку IO диска с помощью команды iostat.
У меня на сервере доступны диски /dev/vda и /dev/vdb, вы можете проверить активный диск с помощью lsblk или fdisk или любой другой команды.
Если вы выполните эту команду без каких-либо аргументов, то она покажет дисковые IO для всех доступных дисков.
Увеличение нагрузки на диск
Опция -d или –hdd используется для создания нагрузки на диск.
Для увеличения нагрузки на диск мы используем следующую команду
Посмотрим пропускную способность диска с помощью команды vmstat
Увеличение нагрузки на несколько системных ресурсов (ЦП, память, ввод/вывод)
Команде stress можно задать несколько нагрузок.
В следующем примере используется 4 ядра ЦП, 2 виртуальных памяти и 1 процесс ввода-вывода для нагрузки на систему в течение 20 секунд.
Установим stress на CentOS, RHEL, Fedora
sudo dnf install stressУстановим stress на Ubuntu и Debian
sudo apt install stressСинтаксис stress
stress [OPTION [ARG]]Увеличить нагрузку на процессор
Опция -c или –cpu использует заданное количество воркеров на функции sqrt(), чтобы увеличить нагрузку на процессор и заставить его работать интенсивнее.
stress -c N или stress --cpu NСледующая команда будет непрерывно загружать 4 ядра процессора
stress --cpu 4Задаем тайм-аут для стресса
Чтобы задать работу на определенное время, вы можете использовать опцию -t или –timeout.
Следующие команды будут нагружать четыре ядра процессора только в течение 10 с.
stress -c 4 -t 10 или stress --cpu 4 --timeout 10Увеличение нагрузки на память
Опция -v или --vm позволяет вам нагрузить виртуальную память.
[simterm] $ stress -v NУвеличение нагрузки ввода-вывода на диск
Вы можете увеличить нагрузку ввода-вывода с помощью опции -i или –io.
stress -i N или stress --io NСоздаем нагрузка на систему с помощью двух процессов, связанных с вводом-выводом.
# stress --io 100Мы проверим загрузку IO диска с помощью команды iostat.
У меня на сервере доступны диски /dev/vda и /dev/vdb, вы можете проверить активный диск с помощью lsblk или fdisk или любой другой команды.
Если вы выполните эту команду без каких-либо аргументов, то она покажет дисковые IO для всех доступных дисков.
iostat -d /dev/vda -d /dev/vdb 1Увеличение нагрузки на диск
Опция -d или –hdd используется для создания нагрузки на диск.
stress -d N или stress --hdd NДля увеличения нагрузки на диск мы используем следующую команду
stress --hdd 100Посмотрим пропускную способность диска с помощью команды vmstat
vmstat 1 100Увеличение нагрузки на несколько системных ресурсов (ЦП, память, ввод/вывод)
Команде stress можно задать несколько нагрузок.
В следующем примере используется 4 ядра ЦП, 2 виртуальных памяти и 1 процесс ввода-вывода для нагрузки на систему в течение 20 секунд.
stress --cpu 4 --vm 2 --io 1 -t 20❤2👍2👏1
Mikrotik и несколько провайдеров. Резервирование каналов
В данной статье мы не будем рассматривать базовую настройку роутера: выход в интернет, правила брандмауэра и т.п., будем считать, что читатель владеет этими вещами и уделим внимание только обеспечению резервирования внешних каналов.
https://telegra.ph/Mikrotik-i-neskolko-provajderov-Rezervirovanie-kanalov-09-02
В данной статье мы не будем рассматривать базовую настройку роутера: выход в интернет, правила брандмауэра и т.п., будем считать, что читатель владеет этими вещами и уделим внимание только обеспечению резервирования внешних каналов.
https://telegra.ph/Mikrotik-i-neskolko-provajderov-Rezervirovanie-kanalov-09-02
❤2👍2
SSTP на MikroTik для удаленных сотрудников
В этой статье я опишу настройку роутера MikroTik в качестве SSTP сервера для подключения удаленных сотрудников.
Очень часто у сотрудников, которым нужно работать из дома, на домашнем компьютере стоит Windows. Эта система, начиная с версии Vista, поддерживает SSTP без установки дополнительных программ.
Дополнительные преимущества SSTP:
- Удалённый сотрудник может иметь динамический IP и работать за NAT-ом.
- SSTP по умолчанию использует 443 порт, а для установки соединения использует протокол HTTPS.
- SSTP может работать используя протоколы IPv4 и IPv6.
- Роутеры MikroTik поддерживают SSTP.
https://telegra.ph/SSTP-na-MikroTik-dlya-udalennyh-sotrudnikov-08-03
В этой статье я опишу настройку роутера MikroTik в качестве SSTP сервера для подключения удаленных сотрудников.
Очень часто у сотрудников, которым нужно работать из дома, на домашнем компьютере стоит Windows. Эта система, начиная с версии Vista, поддерживает SSTP без установки дополнительных программ.
Дополнительные преимущества SSTP:
- Удалённый сотрудник может иметь динамический IP и работать за NAT-ом.
- SSTP по умолчанию использует 443 порт, а для установки соединения использует протокол HTTPS.
- SSTP может работать используя протоколы IPv4 и IPv6.
- Роутеры MikroTik поддерживают SSTP.
https://telegra.ph/SSTP-na-MikroTik-dlya-udalennyh-sotrudnikov-08-03
👍1
