Давайте рассмотрим на примерах, как пользоваться командами
zip и unzip для упаковки и распаковки архивов формата ZIP.📦 Упаковка архивов
Создаём архивы с помощью команды
zip. Например: 1. Упаковка одного файла:
zip archive.zip file.txt
2. Упаковка нескольких файлов:
zip archive.zip file1.txt file2.txt file3.txt
3. Упаковка папки с ее содержимым:
zip -r archive.zip folder
4. Упаковка папки с исключением определенных файлов:
zip -r archive.zip folder -x "folder/file3.txt"
📦 Распаковка архивов
Для того чтобы распаковать архив, используем команду
unzip. Например:1. Распаковка архива в текущую директорию:
unzip archive.zip
2. Распаковка архива в определенную директорию:
unzip archive.zip -d /path/to/directory
3. Просмотр содержимого архива без распаковки:
unzip -l archive.zip
4. Распаковка архива с фильтрацией определенных файлов:
unzip archive.zip "*.txt"
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13👌1
1000+ Bash скриптов для DevOps
Не всегда скрипты на Bash вообще нужны в DevOps, но иногда всё же возникает ситуация, когда нужно что-то автоматизировать, а готовых решений нет или они не подходят.
И именно в таких ситуациях может быть удобно быстро написать решение на Bash.
Так что держите эту большую подборку — это скрипты, связанные с настройкой и управлением AWS, GCP, Kubernetes, Docker, PostgreSQL, MySQL, Hive, Impala, Kafka, Hadoop, Jenkins, GitHub, GitLab, BitBucket, Azure TeamCity, Spotify, LDAP, Python и это далеко не полный список
Есть здесь даже скрипты для конфигурирования .bashrc, .vimrc, .gitconfig, .screenrc, tmux
⛓ Ссылка: https://github.com/HariSekhon/DevOps-Bash-tools
Не всегда скрипты на Bash вообще нужны в DevOps, но иногда всё же возникает ситуация, когда нужно что-то автоматизировать, а готовых решений нет или они не подходят.
И именно в таких ситуациях может быть удобно быстро написать решение на Bash.
Так что держите эту большую подборку — это скрипты, связанные с настройкой и управлением AWS, GCP, Kubernetes, Docker, PostgreSQL, MySQL, Hive, Impala, Kafka, Hadoop, Jenkins, GitHub, GitLab, BitBucket, Azure TeamCity, Spotify, LDAP, Python и это далеко не полный список
Есть здесь даже скрипты для конфигурирования .bashrc, .vimrc, .gitconfig, .screenrc, tmux
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥5🔥5
Передача команды в качестве аргумента bash
По умолчанию
Кроме того, можно передать команду в
🤔 Почему это бывает полезно?
Потому что новый процесс будет дочерним со своим собственным окружением, включая текущий каталог, переменные и их значения.
Любые изменения в дочерней оболочке не повлияют на текущую:
Пример выше запускает дополнительную оболочку только для того, чтобы сменить каталог на "tmp" и удалить файл, а затем завершает работу.
‼️ Однако наиболее показательно и полезно использование
Предположим, вы хотите создать файл журнала в системном каталоге "/var/log", недоступном для записи обычным пользователям.
Вы добавляете
🤔 Минуточку, но ведь команда sudo должна дать разрешение на создание любого файла в любом месте! Как что-то может пойти не так?
Почему
Вы применили
✏️ Опишем процесс пошагово:
1) Вы нажали клавишу Enter.
2) Оболочка начала вычислять всю команду, включая перенаправление.
3) Оболочка попыталась создать файл custom.log в защищенном каталоге "/var/log".
У нас не было разрешения на запись в "/var/log", поэтому оболочка сообщила, что в доступе отказано (Permission denied).
Чтобы решить эту проблему, нужно сообщить оболочке: «Выполни всю команду, включая перенаправление вывода, от имени суперпользователя».
Это именно та ситуация, которую так хорошо решает
Создайте команду, которую вы хотите запустить, в виде строки и передайте ее в качестве аргумента для
На этот раз мы запустили от имени суперпользователя
По итогу,
Помните о
bash — это обычная программка, такая же, как и любая другая, поэтому вы можете запускать ее по имени в командной строке.По умолчанию
bash запускает интерактивную оболочку для ввода и выполнения команд. Кроме того, можно передать команду в
bash в виде строки с помощью параметра -c. Тогда bash запустит эту строку как команду, а после выполнения завершит работу:$ bash -c "ls -l"
-rw-r--r-- 1 smith smith 325 Jul 3 17:44 animals.txt
Потому что новый процесс будет дочерним со своим собственным окружением, включая текущий каталог, переменные и их значения.
Любые изменения в дочерней оболочке не повлияют на текущую:
$ pwd
/home/smith
$ touch /tmp/badfile
$ bash -c "cd /tmp && rm badfile"
$ pwd
/home/smith
Пример выше запускает дополнительную оболочку только для того, чтобы сменить каталог на "tmp" и удалить файл, а затем завершает работу.
bash -c вместе с sudo и перенаправлением ввода/вывода. Тогда-то эта фича и является ключом к успеху.Предположим, вы хотите создать файл журнала в системном каталоге "/var/log", недоступном для записи обычным пользователям.
Вы добавляете
sudo, чтобы получить привилегии и создать файл журнала, но команда почему-то не исполняется:$ sudo echo "New log file" > /var/log/custom.log
bash: /var/log/custom.log: Permission denied
Почему
sudo даже не запрашивает пароль? Ответ: потому что sudo вообще не запускалась.Вы применили
sudo к команде echo, но не к перенаправлению вывода, которое запустилось первым и провалилось.1) Вы нажали клавишу Enter.
2) Оболочка начала вычислять всю команду, включая перенаправление.
3) Оболочка попыталась создать файл custom.log в защищенном каталоге "/var/log".
У нас не было разрешения на запись в "/var/log", поэтому оболочка сообщила, что в доступе отказано (Permission denied).
Чтобы решить эту проблему, нужно сообщить оболочке: «Выполни всю команду, включая перенаправление вывода, от имени суперпользователя».
Это именно та ситуация, которую так хорошо решает
bash -c. Создайте команду, которую вы хотите запустить, в виде строки и передайте ее в качестве аргумента для
sudo bash -c:$ sudo bash -c 'echo "New log file" > /var/log/custom.log'
[sudo] password for smith: xxxxxxxx
$ cat /var/log/custom.log
New log file
На этот раз мы запустили от имени суперпользователя
bash, а не просто echo.По итогу,
bash выполнит всю строку как команду. Перенаправление проходит успешно. Помните о
bash -c, когда sudo сочетается с перенаправлением.Please open Telegram to view this post
VIEW IN TELEGRAM
👍15👀2
Please open Telegram to view this post
VIEW IN TELEGRAM
Указав имя процесса, можно его убить при помощи команды
А команда
killall.killall firefox
А команда
pkill позволяет завершить процесс, введя только часть его имени.pkill fire*🔥6👍4
При помощи какой команды можно создать переменную окружения?
Anonymous Quiz
48%
export
32%
set
1%
read
13%
Ничто из перечисленного не подходит
6%
Посмотреть ответ
👌4🌚1
Если вам известен PID процесса, вы можете принудительно остановить его, используя команду
kill.Введите команду с номером PID процесса:
kill 279
Когда мы используем команду
kill без аргументов, она автоматически отправляет сигнал SIGTERM.Сигнал сообщает о потребности в завершении процесса. Но сложность заключается в том, что сигнал может быть проигнорирован.
У каждого сигнала существует свой уникальный номер, в том числе у SIGTERM он равен 15.
Чтобы получить полный список всех доступных сигналов и их номеров необходимо ввести команду:
kill -l
Хотя SIGTERM и предназначен для остановки процесса, он не может гарантировать, что процесс будет остановлен в случае блокировки сигнала или его перехвата.
Чтобы гарантировано остановить процесс, нужно отправить SIGKILL (номер 9):
kill −9 279
kill можно одновременно убивать несколько процессов.Для этого необходимо указать их PID через пробел:
kill −9 267 315 442
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
При запуске команды или скрипта добавьте в начале команду
После окончания работы основной команды
time:$ time ls -a
После окончания работы основной команды
time покажет, сколько ресурсов пошло на это.👍9💯1