Шпаргалка по работе с Tmux (терминальный мультиплексор)
1. Установка
CentOS (нужен подключенный репо EPEL)
Fedora
Ubuntu/Debian
2. Конфигурационные файлы
(пользователя, системный):
До версии 2.1
3. Работа с Tmux
Старт
Префикс (с него начинаются команды)
Новое окно (нажать CTRL+b, затем нажать с)
Список окон
Переключение
Окна можно делить на панели (Panes)
Как в тайловых (мозаичных) оконных менеджерах.
Деление окна горизонтально
либо команда
Деление окна вертикально
либо команда
Переход между панелей
Изменение размеров панелей
Закрытие окон
либо
Отключение от сессии
либо
Список сессий
Подключиться к работающей сессии
Выбрать сессию
Завершение сессии
Завершить все сессии
Список поддерживаемых комманд
Дополнительная информация
1. Установка
CentOS (нужен подключенный репо EPEL)
# yum install tmux
Fedora
# dnf install tmux
Ubuntu/Debian
# apt-get install tmux
2. Конфигурационные файлы
(пользователя, системный):
~/.tmux.conf
/etc/tmux.conf
До версии 2.1
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on
set -g mode-mouse on
3. Работа с Tmux
Старт
# tmux
//без параметров будет создана сессия 0# tmux new -s session1 //новая сессия session1
. Название отображается снизу-слева в квадратных скобках в статус строке. Далее идет перечисление окон. Текущее окно помечается звездочкой.Префикс (с него начинаются команды)
<C-b> (CTRL + b)
Новое окно (нажать CTRL+b, затем нажать с)
<C-b c>
Список окон
<C-b w>
// переключиться курсором вверх-внизПереключение
<C-b n>
// следующее окно<C-b p>
// предыдущее окно<C-b 0>
// переключиться на номер окнаОкна можно делить на панели (Panes)
Как в тайловых (мозаичных) оконных менеджерах.
Деление окна горизонтально
<C-b ">
либо команда
# tmux split-window -h
Деление окна вертикально
<C-b %>
либо команда
# tmux split-window -v
Переход между панелей
<C-b стрелки курсора>
// либо режим мышиИзменение размеров панелей
<C-b c-стрелки>
// либо режим мышиЗакрытие окон
<C-b x>
// нужно подтвердить yлибо
# exit
Отключение от сессии
<C-b d>
либо
# tmux detach
Список сессий
# tmux ls
Подключиться к работающей сессии
# tmux attach
//подключение к сессии, либо к единственной, либо последней созданной# tmux attach -t session1
// подключение к сессии session1Выбрать сессию
<C-b s>
Завершение сессии
# tmux kill-session -t session1
Завершить все сессии
# tmux kill-server
Список поддерживаемых комманд
# tmux list-commands
Дополнительная информация
# man tmux
Чем отличается команда rm от unlink?
Обе эти команды умеют удалять, но в 99% используется именно rm, потому что про unlink вы либо не слышали, либо rm с головой хватает.
Есть ошибочное мнение, что unlink предназначен для удаления лишь ссылок — команда вполне может удалять обычные файлы. А если углубиться, то весь процесс удаления в Linux, это удаление ссылок.
У unlink есть всего лишь два ключа запуска help и version. Очень ограниченный инструмент, но чем инструмент проще, тем проще его синтаксис.
Софт очень молчаливый — после удаления, он промолчит и ничего не выведет на экран.
Команда unlink использует системную команду unlink, в то время как команда rm использует системный вызов unlinkat. Оба системных вызова практически одинаковы.
Unlink не умеет работать с wildcard и globbing шаблонами. Так же вы не сможете с помощью нее удалить каталог.
Запустим команду и пытаемся насильно удалить файл которого нет в каталоге:
И получаем - НИЧЕГО. То есть rm -f не вернул ошибку, что файл отсутствует. А если сделать так:
получим ошибку:
unlink: cannot unlink 'test.txt': No such file or directory
То есть если нужно будет обработать результат выполнения команды rm -f, то будет непонятно, существовал ли вообще файл.
С unlink можно гибче обрабатывать эксепшены в скриптах. А еще при использовании команды unlink отсутствует проверка безопасности. Она удалит файл, защищенный от записи. Хотя современная версия rm теперь тоже так умеет.
Небольшой секрет: если нужно, чтобы файл никто не смог удалить, включая root:
chattr позволяет устанавливать и отключать атрибуты файлов, на уровне файловой системы не зависимо от стандартных (чтение, запись, выполнение).
Ключ i - сделает файл неизменяемым. Чтобы снять с файла этот аттрибут, в команде которая выше, замените знак «+» на «-».
Обе эти команды умеют удалять, но в 99% используется именно rm, потому что про unlink вы либо не слышали, либо rm с головой хватает.
Есть ошибочное мнение, что unlink предназначен для удаления лишь ссылок — команда вполне может удалять обычные файлы. А если углубиться, то весь процесс удаления в Linux, это удаление ссылок.
У unlink есть всего лишь два ключа запуска help и version. Очень ограниченный инструмент, но чем инструмент проще, тем проще его синтаксис.
# unlink /tmp/hardlink
# unlink /tmp/file
Софт очень молчаливый — после удаления, он промолчит и ничего не выведет на экран.
Команда unlink использует системную команду unlink, в то время как команда rm использует системный вызов unlinkat. Оба системных вызова практически одинаковы.
Unlink не умеет работать с wildcard и globbing шаблонами. Так же вы не сможете с помощью нее удалить каталог.
Запустим команду и пытаемся насильно удалить файл которого нет в каталоге:
rm -f test.txt
И получаем - НИЧЕГО. То есть rm -f не вернул ошибку, что файл отсутствует. А если сделать так:
unlink test.txt
получим ошибку:
unlink: cannot unlink 'test.txt': No such file or directory
То есть если нужно будет обработать результат выполнения команды rm -f, то будет непонятно, существовал ли вообще файл.
С unlink можно гибче обрабатывать эксепшены в скриптах. А еще при использовании команды unlink отсутствует проверка безопасности. Она удалит файл, защищенный от записи. Хотя современная версия rm теперь тоже так умеет.
Небольшой секрет: если нужно, чтобы файл никто не смог удалить, включая root:
chattr +i test.txt
chattr позволяет устанавливать и отключать атрибуты файлов, на уровне файловой системы не зависимо от стандартных (чтение, запись, выполнение).
Ключ i - сделает файл неизменяемым. Чтобы снять с файла этот аттрибут, в команде которая выше, замените знак «+» на «-».
👍3
Основные команды Linux: Управление пользователями и группами
last
– Показывает, какие пользователи последними входили в систему (и покидали ее), выполняя для этого поиск в файле /var/log/wtmp в обратном порядке; также показывает информацию о загрузках системы, ее остановках и изменениях ее уровней запускаlastb
– Показывает неудачные попытки входа в систему, которые записаны в файле /var/log/btmpw
– показать пользователей онлайнwhoami
– имя, под которым вы залогинены.finger user@host
– показать информацию о user (без указания пользователя – выведет список пользователей, залогиненых в системе) на хосте host, утилита не чувствительна к регистру символовwrite user [terminal]
– начать сеанс общения с пользователем user на терминале terminaltalk user@host
– чат с пользователем user на компьютере hostwall message
– разместить сообщение message на всех терминалах.mesg y/n
– включение – y и выключение – n возможности принимать сообщения на консолиsu user
– создание оболочки (подоболочки текущей оболочки) с правами пользователя user (без указания пользователя – вызывается оболочка root)-, -l, –login
– все 3 параметра имеют одно значение – загрузить окружение вызываемого пользователя (выполняются все стартовые сценарии и подгружаются переменные окружения вызываемого пользователя)-с command
– выполнить команду command с правами суперпользователя и “понизить” права в исходные после завершения команды.useradd user
– добавление нового регистрационного имени пользователя user в системе-g group
– задает основную группу (primary group) для нового пользователя. По умолчанию используется стандартная группа, указанная в файле /etc/default/useradd.-d dir
– доманий каталог (home directory) нового пользователя. По умолчанию используется $ HOMEDIR/user-s shell
– полный путь к программе (шеллу), используемой в качестве начального командного интерпретатора для пользователя-m
– Создает начальный каталог нового пользователя, если он еще не существует. Копирует скелетные файлы и другие каталоги из /etc/skel в домашний каталог.👍2
kcp - это прототип сервера API Kubernetes, который не является кластером Kubernetes. Если вас интересуют API-интерфейсы, подобные Kubernetes, но для других инструментов, возможно, будет интересно посмотреть.
https://github.com/kcp-dev/kcp
https://github.com/kcp-dev/kcp
Rufus: надежная утилита форматирования USB
Форматирование USB, флэш-карт и виртуальных дисков в FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3
Создание загрузочных USB-накопителей DOS, используя FreeDOS или MS-DOS (Windows 8.1 или более ранние версии)
Создание загрузочных дисков BIOS или UEFI, включая загрузочные диски UEFI NTFS
Создание загрузочных дисков из загрузочных ISO (Windows, Linux и т.д.)
Создание загрузочных дисков из загрузочных образов дисков, включая сжатые.
Создание установочных дисков Windows 11 для ПК, не оснащенных TPM или Secure Boot
Создание дисков Windows To Go
Создание постоянных разделов Linux
Создание образов дисков VHD/DD
Вычисление контрольных сумм MD5, SHA-1, SHA-256 и SHA-512 выбранного образа
Улучшение процесса установки Windows путем автоматической настройки параметров OOBE (локальная учетная запись, параметры конфиденциальности и т.д.)
Выполняйте проверку плохих блоков, включая обнаружение "поддельных" флеш-накопителей
Загрузка официальных розничных ISO-образов Microsoft Windows 7, Windows 8, Windows 10 или Windows 11
Загружать ISO-файлы UEFI Shell
Современный и привычный пользовательский интерфейс, встроенная поддержка 38 языков
Малая занимаемая площадь. Не требует установки.
Портативный. Совместимость с Secure Boot.
100% свободное программное обеспечение (GPL v3)
https://github.com/pbatard/rufus
Форматирование USB, флэш-карт и виртуальных дисков в FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3
Создание загрузочных USB-накопителей DOS, используя FreeDOS или MS-DOS (Windows 8.1 или более ранние версии)
Создание загрузочных дисков BIOS или UEFI, включая загрузочные диски UEFI NTFS
Создание загрузочных дисков из загрузочных ISO (Windows, Linux и т.д.)
Создание загрузочных дисков из загрузочных образов дисков, включая сжатые.
Создание установочных дисков Windows 11 для ПК, не оснащенных TPM или Secure Boot
Создание дисков Windows To Go
Создание постоянных разделов Linux
Создание образов дисков VHD/DD
Вычисление контрольных сумм MD5, SHA-1, SHA-256 и SHA-512 выбранного образа
Улучшение процесса установки Windows путем автоматической настройки параметров OOBE (локальная учетная запись, параметры конфиденциальности и т.д.)
Выполняйте проверку плохих блоков, включая обнаружение "поддельных" флеш-накопителей
Загрузка официальных розничных ISO-образов Microsoft Windows 7, Windows 8, Windows 10 или Windows 11
Загружать ISO-файлы UEFI Shell
Современный и привычный пользовательский интерфейс, встроенная поддержка 38 языков
Малая занимаемая площадь. Не требует установки.
Портативный. Совместимость с Secure Boot.
100% свободное программное обеспечение (GPL v3)
https://github.com/pbatard/rufus
👍1🔥1
Создание уведомлений и напоминаний на рабочем столе из Linux терминала
Иногда полезно получить визуальную обратную связь от скрипта. Например, когда завершается работа скрипта или задание cron, или, когда долгоиграющая сборка терпит неудачу. Или, когда во время выполнения скрипта возникает срочная проблема.
https://letsdebug.it/post/30-linux-desktop-notifications/
Иногда полезно получить визуальную обратную связь от скрипта. Например, когда завершается работа скрипта или задание cron, или, когда долгоиграющая сборка терпит неудачу. Или, когда во время выполнения скрипта возникает срочная проблема.
https://letsdebug.it/post/30-linux-desktop-notifications/
Скрипт для мониторинга дискового пространства в Linux
Скрипт ниже предназначен для мониторинга использования дискового пространства на указанном разделе сервера. Настраиваемые параметры включают в себя максимально допустимый процент использования дискового пространства (`MAX`), адрес электронной почты для получения оповещений (`EMAIL`) и целевой раздел (`PARTITION`).
Скрипт использует команду df для сбора информации об использовании диска и отправляет предупреждения по электронной почте, если текущее использование превышает заданный порог.
Скрипт ниже предназначен для мониторинга использования дискового пространства на указанном разделе сервера. Настраиваемые параметры включают в себя максимально допустимый процент использования дискового пространства (`MAX`), адрес электронной почты для получения оповещений (`EMAIL`) и целевой раздел (`PARTITION`).
Скрипт использует команду df для сбора информации об использовании диска и отправляет предупреждения по электронной почте, если текущее использование превышает заданный порог.
#!/bin/bash
# Set the maximum allowed disk space usage percentage
MAX=90
# Set the email address to receive alerts
EMAIL=user@example.com
# Set the partition to monitor (change accordingly, e.g., /dev/sda1)
PARTITION=/dev/sda1
# Get the current disk usage percentage and related information
USAGE_INFO=$(df -h "$PARTITION" | awk 'NR==2 {print $5, $1, $2, $3, $4}' | tr '\n' ' ')
USAGE=$(echo "$USAGE_INFO" | awk '{print int($1)}') # Remove the percentage sign
if [ "$USAGE" -gt "$MAX" ]; then
# Send an email alert with detailed disk usage information
echo -e "Warning: Disk space usage on $PARTITION is $USAGE%.\n\nDisk Usage Information:\n$USAGE_INFO" | \
mail -s "Disk Space Alert on $HOSTNAME" "$EMAIL"
fi
❤2
Основные команды PowerShell
1. Основные команды управления системой:
-
-
-
-
-
-
2. Работа с файлами и каталогами:
-
-
-
-
-
-
3. Информация о системе и процессах:
-
-
-
-
4. Работа с пользователями и группами:
-
-
-
-
5. Работа с переменными и данными:
-
-
-
-
-
6. Потоки данных и конвейеры:
-
-
-
7. Сетевые команды:
-
-
-
8. Скрипты и автоматизация:
-
-
-
-
9. Обновления и безопасность:
-
-
10. Дополнительные команды:
-
-
-
1. Основные команды управления системой:
-
Get-Help
: Получение справки о командах. Например, Get-Help Get-Process
показывает справку о команде Get-Process
.-
Get-Command
: Показать список всех доступных команд или команд, связанных с определённой задачей. Пример: Get-Command *process*
.-
Get-Service
: Показать все службы, установленные на системе.-
Start-Service
: Запустить службу. Пример: Start-Service -Name "wuauserv"
.-
Stop-Service
: Остановить службу.-
Restart-Service
: Перезапустить службу.2. Работа с файлами и каталогами:
-
Get-ChildItem
: Просмотреть файлы и каталоги (аналог команды dir
или ls`). Пример: `Get-ChildItem C:\
.-
Set-Location
: Перейти в другой каталог (аналог cd`). Пример: `Set-Location C:\Users
.-
Copy-Item
: Копировать файл или папку. Пример: Copy-Item C:\source.txt C:\destination.txt
.-
Move-Item
: Переместить файл или папку. Пример: Move-Item C:\file.txt C:\archive\file.txt
.-
Remove-Item
: Удалить файл или папку. Пример: Remove-Item C:\file.txt
.-
New-Item
: Создать новый файл или каталог. Пример: New-Item -Path C:\ -Name "file.txt" -ItemType "file"
.3. Информация о системе и процессах:
-
Get-Process
: Показать список всех запущенных процессов.-
Stop-Process
: Остановить процесс. Пример: Stop-Process -Name "notepad"
.-
Get-EventLog
: Просмотр журналов событий (Event Logs). Пример: Get-EventLog -LogName Application
.-
Get-WmiObject
: Получить информацию о системе, например, о процессоре или установленной ОС. Пример: Get-WmiObject Win32_OperatingSystem
.4. Работа с пользователями и группами:
-
Get-LocalUser
: Показать всех локальных пользователей.-
New-LocalUser
: Создать нового локального пользователя. Пример: New-LocalUser -Name "TestUser" -Password (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force)
.-
Remove-LocalUser
: Удалить локального пользователя.-
Add-LocalGroupMember
: Добавить пользователя в локальную группу. Пример: Add-LocalGroupMember -Group "Administrators" -Member "TestUser"
.5. Работа с переменными и данными:
-
Set-Variable
: Установить переменную. Пример: Set-Variable -Name "MyVar" -Value "Hello"
.-
Get-Variable
: Показать значения переменных.-
Remove-Variable
: Удалить переменную.-
Export-Csv
: Экспорт данных в CSV-файл. Пример: Get-Process | Export-Csv -Path "C:\processes.csv"
.-
Import-Csv
: Импорт данных из CSV-файла. Пример: Import-Csv -Path "C:\processes.csv"
.6. Потоки данных и конвейеры:
-
|
(Pipeline): Передача данных от одной команды к другой. Пример: Get-Process | Where-Object { $_.CPU -gt 100 }
— вывести процессы, которые используют больше 100 единиц процессорного времени.-
Out-File
: Записать результат команды в файл. Пример: Get-Process | Out-File -FilePath "C:\processes.txt"
.-
Select-Object
: Выбор определённых полей. Пример: Get-Process | Select-Object -Property Name, CPU
.7. Сетевые команды:
-
Test-Connection
: Проверить доступность компьютера (аналог команды ping`). Пример: `Test-Connection google.com
.-
Get-NetIPAddress
: Показать список всех IP-адресов на машине.-
Get-NetAdapter
: Показать информацию о сетевых адаптерах.8. Скрипты и автоматизация:
-
Invoke-Command
: Выполнить команду на удалённой системе. Пример: Invoke-Command -ComputerName "Server1" -ScriptBlock { Get-Process }
.-
Start-Job
: Запустить задачу в фоне. Пример: Start-Job -ScriptBlock { Get-Process }
.-
Get-Job
: Показать статус фоновых задач.-
Receive-Job
: Получить результат выполнения фоновой задачи.9. Обновления и безопасность:
-
Install-Module
: Установка PowerShell-модулей. Пример: Install-Module -Name "PSWindowsUpdate"
.-
Update-Module
: Обновление установленных модулей.10. Дополнительные команды:
-
Clear-Host
(или `cls`): Очистить экран.-
Exit
: Выйти из сеанса PowerShell.-
Measure-Object
: Подсчитать количество объектов, или сумму значений. Пример: Get-ChildItem | Measure-Object
.This media is not supported in your browser
VIEW IN TELEGRAM
Advanced Bash-Scripting Guide
Перевод: Андрей Киселев
Версия 2.8.7 (22 Августа 2004)
Искусство программирования на языке сценариев командной оболочки
Данное руководство не предполагает наличие у читателя познаний в области программирования на языке сценариев, однако, быстро восполняет этот недостаток . . . постепенно, шаг за шагом раскрывая мудрость и красоту UNIX. Это руководство может рассматриваться как учебник, предназначенный для самостоятельного изучения или как справочник по программированию на shell. Руководство снабжено серией хорошо прокомментированных примеров, поскольку лучший путь к изучению языка сценариев -- это написание сценариев.
https://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html
Перевод: Андрей Киселев
Версия 2.8.7 (22 Августа 2004)
Искусство программирования на языке сценариев командной оболочки
Данное руководство не предполагает наличие у читателя познаний в области программирования на языке сценариев, однако, быстро восполняет этот недостаток . . . постепенно, шаг за шагом раскрывая мудрость и красоту UNIX. Это руководство может рассматриваться как учебник, предназначенный для самостоятельного изучения или как справочник по программированию на shell. Руководство снабжено серией хорошо прокомментированных примеров, поскольку лучший путь к изучению языка сценариев -- это написание сценариев.
https://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html
❤3
Как отлаживать bash-script-ы по шагам
Мне всегда хотелось иметь возможность отлаживать bash-scripts так же, как и любой другой код, т.е. по шагам, и bash такую возможность предусмотрел, но о ней не все знают. Несмотря на довольно большой опыт использования Linux, я дошёл до неё только недавно.
Волшебная строчка, которую нужно добавить после #!/bin/bash, чтоб скрипт можно было отлаживать по шагам
Процесс отладки
Запускаем скрипт, перед выполнением каждой команды выводится то, что будет исполняться, затем интерпретатор начинает ожидать нажатия клавиши <ENTER>.
Если понимаем, что что-то пошло не так, нажимаем Ctrl+C и выходим из отладки.
Ингредиенты
команда trap, которая умеет перехватывать разные сигналы и в нашем случае она перехватывает сигнал DEBUG, посылаемый перед выполнением команды
команда read, которая умеет ожидать ввода чего-нибудь с клавиатуры (в данном случае нам нужно только либо ENTER либо Ctrl+C
переменная окружения $BASH_COMMAND, валидная внутри обработчика команды trap.
Мне всегда хотелось иметь возможность отлаживать bash-scripts так же, как и любой другой код, т.е. по шагам, и bash такую возможность предусмотрел, но о ней не все знают. Несмотря на довольно большой опыт использования Linux, я дошёл до неё только недавно.
Волшебная строчка, которую нужно добавить после #!/bin/bash, чтоб скрипт можно было отлаживать по шагам
#!/bin/bash
trap 'echo "# $BASH_COMMAND";read' DEBUG
echo line1
echo line2
echo line3
Процесс отладки
Запускаем скрипт, перед выполнением каждой команды выводится то, что будет исполняться, затем интерпретатор начинает ожидать нажатия клавиши <ENTER>.
Если понимаем, что что-то пошло не так, нажимаем Ctrl+C и выходим из отладки.
Ингредиенты
команда trap, которая умеет перехватывать разные сигналы и в нашем случае она перехватывает сигнал DEBUG, посылаемый перед выполнением команды
команда read, которая умеет ожидать ввода чего-нибудь с клавиатуры (в данном случае нам нужно только либо ENTER либо Ctrl+C
переменная окружения $BASH_COMMAND, валидная внутри обработчика команды trap.
# Online Bash Shell.
# Code, Compile, Run and Debug Bash script online.
# Write your code in this editor and press "Run" button to execute it.
trap 'echo "# $BASH_COMMAND";read' DEBUG
echo line1
echo line2
echo line3
echo "Hello World";
❤2
Полезные команды Linux. Форматирование файловой системы
Форматирование флоппи-диска без проверки
Создать файловую систему linux на разделе hda1
Создать журналируемую файловую систему ext3 на разделе hda1
Создание файловой системы ext2 на разделе hda1
Создать файловую систему FAT32 на разделе hda1
# fdformat -n /dev/fd0
Форматирование флоппи-диска без проверки
# mkfs /dev/hda1
Создать файловую систему linux на разделе hda1
# mke2fs -j /dev/hda1
Создать журналируемую файловую систему ext3 на разделе hda1
# mke2fs /dev/hda1
Создание файловой системы ext2 на разделе hda1
# mkfs -t vfat 32 -F /dev/hda1
Создать файловую систему FAT32 на разделе hda1
❤1