Наиболее распространенные оболочки
Текстовые оболочки
Bash (оболочка типичная для систем GNU / Linux )
Bourne оболочки (оболочка из первых систем Unix )
C оболочки (оболочки популярные на Unix )
Z оболочки (известный как Zsh)
Korn оболочки (системы оболочки , обычно доступные на Unix )
Debian Альмквист оболочки (оболочки , используемый в Debian и производных для запуска системных скриптов)
cmd.exe (оболочка операционных систем семейства Windows NT)
command. com (оболочка операционной системы MS-DOS и некоторых системах Microsoft Windows )
Windows PowerShell (Advanced Shell для систем Microsoft Windows)
Графические оболочки
GNOME ( что характерно для GNU / Linux и Solaris 10 )
KDE ( что характерно для GNU/ Linux )
Xfce ( что характерно для систем GNU / Linux )
Common Desktop Environment ( как правило, доступны для систем Unix )
Finder (оболочка систем Mac OS )
File Explorer (оболочка системы Microsoft Windows )
Unity (Official оболочка Ubuntu)
Текстовые оболочки
Bash (оболочка типичная для систем GNU / Linux )
Bourne оболочки (оболочка из первых систем Unix )
C оболочки (оболочки популярные на Unix )
Z оболочки (известный как Zsh)
Korn оболочки (системы оболочки , обычно доступные на Unix )
Debian Альмквист оболочки (оболочки , используемый в Debian и производных для запуска системных скриптов)
cmd.exe (оболочка операционных систем семейства Windows NT)
command. com (оболочка операционной системы MS-DOS и некоторых системах Microsoft Windows )
Windows PowerShell (Advanced Shell для систем Microsoft Windows)
Графические оболочки
GNOME ( что характерно для GNU / Linux и Solaris 10 )
KDE ( что характерно для GNU/ Linux )
Xfce ( что характерно для систем GNU / Linux )
Common Desktop Environment ( как правило, доступны для систем Unix )
Finder (оболочка систем Mac OS )
File Explorer (оболочка системы Microsoft Windows )
Unity (Official оболочка Ubuntu)
Как отлаживать bash-script-ы по шагам
Мне всегда хотелось иметь возможность отлаживать bash-scripts так же, как и любой другой код, т.е. по шагам, и bash такую возможность предусмотрел, но о ней не все знают. Несмотря на довольно большой опыт использования Linux, я дошёл до неё только недавно.
Волшебная строчка, которую нужно добавить после
Процесс отладки
Запускаем скрипт, перед выполнением каждой команды выводится то, что будет исполняться, затем интерпретатор начинает ожидать нажатия клавиши <ENTER>.
Если понимаем, что что-то пошло не так, нажимаем
Ингредиенты
команда trap, которая умеет перехватывать разные сигналы и в нашем случае она перехватывает сигнал DEBUG, посылаемый перед выполнением команды
команда read, которая умеет ожидать ввода чего-нибудь с клавиатуры (в данном случае нам нужно только либо ENTER либо
переменная окружения $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❤1👎1
Cамые нужные команд SSH
Запускай команды быстро
Чтобы выполнить всего одну удаленную команду, совсем не обязательно подключаться к SSH, вводить команду, а затем отключаться. Можно сделать это сразу. Например, так можно посмотреть заполненность ФС удаленной машины:
А так — перезагрузить ее:
Составляй списки команд и запускай их разом
Если у тебя есть целый список команд, которые следует выполнить, их можно записать в файл и скормить этот файл SSH:
Редактируй удаленные файлы локальным редактором
Чтобы отредактировать файл на удаленной машине, не требуется заходить на нее и использовать консольный редактор. На самом деле файл можно открыть в твоем любимом текстовом редакторе на локальной машине (gvim заменяем на свой редактор):
Копируй содержимое удаленного файла в буфер обмена
Если необходимо скопировать содержимое удаленного файла или вывод команды в буфер обмена, не обязательно выводить его на экран или открывать в текстовом редакторе и копировать вручную. Можно использовать следующую команду:
А так можно скопировать вывод команды:
Сравнивай удаленный и локальный файл без копирования
Похожий прием можно использовать для сравнения двух файлов:
Работай с удаленными файлами с помощью локального файлового менеджера
Не всегда удобно работать с большим количеством файлов с помощью консольных команд или mc, запущенного на удаленной машине. Но всегда можно подключить любой каталог удаленной машины как сетевой диск. Для этого достаточно установить sshfs:
Создать каталог для подключения «сетевого диска»:
И подключить его:
Теперь все файлы удаленного каталога /home/user будут видны в каталоге ~/remote_files/ и с ними можно работать, как с обычными.
Копируй ключи быстро
Хоть и копирование публичного ключа на удаленный сервер — задача простая, но она требует выполнения нескольких действий вручную. Если тебя это напpягает, скопировать ключ можно в автоматическом режиме:
При этом не обязательно копировать основной ключ, с помощью флага -i можно указать любой другой:
Создай постоянное соединение с машиной
Если в течение дня ты часто подключаешься к одной машине, в том числе на несколько минут или секунд (чтобы просто запустить одну команду, например), есть смысл создать с ней постоянное соединение. Твой комп будет держать соединение открытым и использовать его для каждого подключения к машине. Это намного быстрее и экономичнее с точки зрения трафика и нагрузки на процессор.
Добавь следующие строки в ~/.ssh/config:
А затем создай соединение:
Запускай команды быстро
Чтобы выполнить всего одну удаленную команду, совсем не обязательно подключаться к SSH, вводить команду, а затем отключаться. Можно сделать это сразу. Например, так можно посмотреть заполненность ФС удаленной машины:
$ ssh user@host df -h
А так — перезагрузить ее:
$ ssh user@host sudo reboot
Составляй списки команд и запускай их разом
Если у тебя есть целый список команд, которые следует выполнить, их можно записать в файл и скормить этот файл SSH:
$ ssh user@host "`cat file.txt`"
Редактируй удаленные файлы локальным редактором
Чтобы отредактировать файл на удаленной машине, не требуется заходить на нее и использовать консольный редактор. На самом деле файл можно открыть в твоем любимом текстовом редакторе на локальной машине (gvim заменяем на свой редактор):
$ gvim scp://user@host//путь/к/файлу
Копируй содержимое удаленного файла в буфер обмена
Если необходимо скопировать содержимое удаленного файла или вывод команды в буфер обмена, не обязательно выводить его на экран или открывать в текстовом редакторе и копировать вручную. Можно использовать следующую команду:
$ ssh user@host cat /путь/к/файлу | xclip
А так можно скопировать вывод команды:
$ ssh user@host uname -a | xclip
Сравнивай удаленный и локальный файл без копирования
Похожий прием можно использовать для сравнения двух файлов:
$ ssh user@host cat /путь/к/удаленному/файлу | diff /путь/к/лoкальному/файлу -
Работай с удаленными файлами с помощью локального файлового менеджера
Не всегда удобно работать с большим количеством файлов с помощью консольных команд или mc, запущенного на удаленной машине. Но всегда можно подключить любой каталог удаленной машины как сетевой диск. Для этого достаточно установить sshfs:
$ sudo apt-get install sshfs
Создать каталог для подключения «сетевого диска»:
$ mkdir remote_files
И подключить его:
$ sshfs user@host:/home/user ~/remote_files/
Теперь все файлы удаленного каталога /home/user будут видны в каталоге ~/remote_files/ и с ними можно работать, как с обычными.
Копируй ключи быстро
Хоть и копирование публичного ключа на удаленный сервер — задача простая, но она требует выполнения нескольких действий вручную. Если тебя это напpягает, скопировать ключ можно в автоматическом режиме:
$ ssh-copy-id user@host
При этом не обязательно копировать основной ключ, с помощью флага -i можно указать любой другой:
$ ssh-copy-id -i ~/my_key.pub user@host
Создай постоянное соединение с машиной
Если в течение дня ты часто подключаешься к одной машине, в том числе на несколько минут или секунд (чтобы просто запустить одну команду, например), есть смысл создать с ней постоянное соединение. Твой комп будет держать соединение открытым и использовать его для каждого подключения к машине. Это намного быстрее и экономичнее с точки зрения трафика и нагрузки на процессор.
Добавь следующие строки в ~/.ssh/config:
Host host
ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster no
А затем создай соединение:
$ ssh -MNf user@host
👍3
Kubernetes: эффективные команды
Расшировать параметр секрета.
где db - имя секрета, DB_PASSWORD - один из параметров секрета.
Удалить все поды используя helm.
Удалить все поды в состоянии Evicted.
Скрипт для просмотра занятого пространства образами docker.
Скрипт для для установления соответствия между задеплоеными подами, нодами, где они находятся и зоной в которой располагаются.
Расшировать параметр секрета.
kubectl get secret/db -o yaml | grep DB_PASSWORD | sed 's/.*DB_PASSWORD:\s//' | base64 --decode
где db - имя секрета, DB_PASSWORD - один из параметров секрета.
Удалить все поды используя helm.
helm ls --all --short | xargs -L1 helm delete
Удалить все поды в состоянии Evicted.
kubectl get pods | grep Evicted | awk '{print $1}' | xargs kubectl delete pod
Скрипт для просмотра занятого пространства образами docker.
#!/usr/bin/env bash
for container in `kubectl get pods --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'`
do
echo -e "$container\t\t $(docker image ls
параметр секрета.kubectl get secret/db -o yaml | grep DB_PASSWORD | se--format='{{println .Size}}')"
done
Скрипт для для установления соответствия между задеплоеными подами, нодами, где они находятся и зоной в которой располагаются.
#!/usr/bin/env bash
set -euo pipefail
PODZONES=()
for POD in $(kubectl get pods -o custom-columns=NAME:.metadata.name --no-headers)
do
NODE=$(kubectl get pod ${POD} -o=jsonpath='{.spec.nodeName}')
ZONE=$(kubectl get nodes -o json | jq -r --arg NODE "${NODE}" '.items[].metadata | {name, labels} | select(.name==$NODE) | .labels."topology.kubernetes.io/zone"')
PODZONES+=(${ZONE})
echo -e "${POD}\t${NODE}\t${ZONE}"
done
CPODS=$(kubectl get pods -o custom-columns=NAME:.metadata.name --no-headers | wc -l)
CNODES=$(kubectl get nodes -o custom-columns=NAME:.metadata.name --no-headers | wc -l)
CZONES=$(kubectl get nodes -o json | jq -r '.items[].metadata.labels."topology.kubernetes.io/zone"' | sort | uniq -c)
echo "----------ИТОГО:----------"
echo -e "Всего подов:\t${CPODS}"
echo -e "Всего нод:\t${CNODES}"
echo -e "Количество зон нод:\n${CZONES}"
echo "Количество подов в зонах:"
printf "%s\n" "${PODZONES[@]}" | sort | uniq -c
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Понимание DHCP: Упрощение управления сетью
DHCP (Dynamic Host Configuration Protocol) — это сетевой протокол, который автоматизирует процесс назначения IP-адресов и других параметров конфигурации устройств в сети. Вместо того чтобы вручную задавать каждому устройству IP-адрес, DHCP позволяет делать это автоматически, что значительно упрощает управление сетью.
Как работает DHCP?
1. Запрос клиента (DHCP Discover): Когда устройство подключается к сети, оно отправляет широковещательное сообщение с запросом IP-адреса.
2. Ответ сервера (DHCP Offer): DHCP-сервер получает запрос и предлагает доступный IP-адрес из своего пула.
3. Запрос IP-адреса (DHCP Request): Устройство принимает предложенный адрес и отправляет запрос на его закрепление.
4. Подтверждение (DHCP Acknowledgment): Сервер подтверждает назначение адреса и отправляет дополнительные параметры, такие как маска подсети, шлюз и DNS-серверы.
Преимущества использования DHCP
- Упрощенное управление: Автоматическое распределение IP-адресов исключает вероятность ошибок, связанных с ручной конфигурацией.
- Гибкость: Легко подключать и отключать устройства без необходимости их настройки.
- Эффективное использование адресов: Сервер перераспределяет адреса, которые больше не используются.
- Масштабируемость: DHCP подходит как для небольших домашних сетей, так и для крупных корпоративных сетей.
Дополнительные функции DHCP
- Резервирование адресов: Возможность назначать фиксированные IP-адреса определенным устройствам (например, серверам или принтерам).
- Период аренды: Сервер устанавливает временные рамки использования IP-адреса, после чего клиент должен обновить его.
Заключение
DHCP значительно упрощает управление сетями, минимизируя ручную работу администратора. Этот протокол стал стандартом в большинстве современных сетей, благодаря своей надежности, гибкости и удобству.
DHCP (Dynamic Host Configuration Protocol) — это сетевой протокол, который автоматизирует процесс назначения IP-адресов и других параметров конфигурации устройств в сети. Вместо того чтобы вручную задавать каждому устройству IP-адрес, DHCP позволяет делать это автоматически, что значительно упрощает управление сетью.
Как работает DHCP?
1. Запрос клиента (DHCP Discover): Когда устройство подключается к сети, оно отправляет широковещательное сообщение с запросом IP-адреса.
2. Ответ сервера (DHCP Offer): DHCP-сервер получает запрос и предлагает доступный IP-адрес из своего пула.
3. Запрос IP-адреса (DHCP Request): Устройство принимает предложенный адрес и отправляет запрос на его закрепление.
4. Подтверждение (DHCP Acknowledgment): Сервер подтверждает назначение адреса и отправляет дополнительные параметры, такие как маска подсети, шлюз и DNS-серверы.
Преимущества использования DHCP
- Упрощенное управление: Автоматическое распределение IP-адресов исключает вероятность ошибок, связанных с ручной конфигурацией.
- Гибкость: Легко подключать и отключать устройства без необходимости их настройки.
- Эффективное использование адресов: Сервер перераспределяет адреса, которые больше не используются.
- Масштабируемость: DHCP подходит как для небольших домашних сетей, так и для крупных корпоративных сетей.
Дополнительные функции DHCP
- Резервирование адресов: Возможность назначать фиксированные IP-адреса определенным устройствам (например, серверам или принтерам).
- Период аренды: Сервер устанавливает временные рамки использования IP-адреса, после чего клиент должен обновить его.
Заключение
DHCP значительно упрощает управление сетями, минимизируя ручную работу администратора. Этот протокол стал стандартом в большинстве современных сетей, благодаря своей надежности, гибкости и удобству.
👍4
Утилиты на PowerShell для системных администраторов
Работая на первой линии тех.поддержки, я часто сталкивался с рутиной, особенно очень хотелось минимизировать подключение к рабочему столу пользователей для сбора информации и как-то автоматизировать этот процесс, что привело меня к осваиванию языка PowerShell и написанию скриптов, которые в последствии оформились в самостоятельные программы. Некоторые из них я решил выложить на GitHub, возможно для кого-то они будут полезны.
https://habr.com/ru/articles/799463/
https://github.com/Sync1er/ChernigovEugeniyUtilities
Работая на первой линии тех.поддержки, я часто сталкивался с рутиной, особенно очень хотелось минимизировать подключение к рабочему столу пользователей для сбора информации и как-то автоматизировать этот процесс, что привело меня к осваиванию языка PowerShell и написанию скриптов, которые в последствии оформились в самостоятельные программы. Некоторые из них я решил выложить на GitHub, возможно для кого-то они будут полезны.
https://habr.com/ru/articles/799463/
https://github.com/Sync1er/ChernigovEugeniyUtilities
Подборка из 4 альтернативых SSH клиентов
1. Mosh
Mosh - это замена интерактивных терминалов SSH. Он более надежен и отзывчив, особенно при работе через Wi-Fi, сотовую связь и на дальних расстояниях.
Mosh - это свободное программное обеспечение, доступное для GNU/Linux, BSD, macOS, Solaris, Android, Chrome и iOS.
2. Teleport
Teleport с открытым исходным кодом был разработан для обеспечения доступа к необходимой инфраструктуре без замедления работы. С помощью одного инструмента инженеры получают унифицированный доступ к серверам Linux и Windows, кластерам Kubernetes, базам данных и приложениям DevOps, таким как AWS Management Console, CI/CD, контроль версий и панели мониторинга во всех средах.
3. Eternal Terminal
Удаленный терминал для занятых и нетерпеливых
Eternal Terminal (ET) - это удаленная оболочка, которая автоматически переподключается, не прерывая сеанса.
4. tmux
tmux - это терминальный мультиплексор: он позволяет создавать несколько терминалов, получать к ним доступ и управлять ими с одного экрана. tmux может работать в фоновом режиме.
Работает на OpenBSD, FreeBSD, NetBSD, Linux, macOS и Solaris.
1. Mosh
Mosh - это замена интерактивных терминалов SSH. Он более надежен и отзывчив, особенно при работе через Wi-Fi, сотовую связь и на дальних расстояниях.
Mosh - это свободное программное обеспечение, доступное для GNU/Linux, BSD, macOS, Solaris, Android, Chrome и iOS.
2. Teleport
Teleport с открытым исходным кодом был разработан для обеспечения доступа к необходимой инфраструктуре без замедления работы. С помощью одного инструмента инженеры получают унифицированный доступ к серверам Linux и Windows, кластерам Kubernetes, базам данных и приложениям DevOps, таким как AWS Management Console, CI/CD, контроль версий и панели мониторинга во всех средах.
3. Eternal Terminal
Удаленный терминал для занятых и нетерпеливых
Eternal Terminal (ET) - это удаленная оболочка, которая автоматически переподключается, не прерывая сеанса.
4. tmux
tmux - это терминальный мультиплексор: он позволяет создавать несколько терминалов, получать к ним доступ и управлять ими с одного экрана. tmux может работать в фоновом режиме.
Работает на OpenBSD, FreeBSD, NetBSD, Linux, macOS и Solaris.
👍3
Шпаргалка по PowerShell / Краткий справочник
https://gist.github.com/pcgeek86/336e08d1a09e3dd1a8f0a30a9fe61c8a
https://gist.github.com/pcgeek86/336e08d1a09e3dd1a8f0a30a9fe61c8a
Шпаргалка по работе с 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