3309
Канал для программистов работающих с Linux. Почти все Python девелоперы с нами ну и другие тоже подтянутся. По рекламе: @jannytg @anothertechrock
Нужно использовать фигурные скобки:
touch file{1..100}.txt
touch app.{html,css,js}
rm ./*.{jpg,jpeg,png,gif}
Читать полностью…
⚙️ Используй майские праздники наилучшим образом!
Изучай новые технологии или закрой пробелы в знаниях по своему стеку.
🤩 Admin Books – техническая литература для сетевых и системных администраторов и ИБ специалистов.
Ссылка для своих: /channel/+-MOgvZlaKGc0ODYy
❗️Шорткаты: Alt+T и Esc+T
Позволяют поменять местами два слова в строке. Меняются местами слова, между которыми стоит курсор. Если курсор стоит в конце строки, то два последних слова. Похоже на Ctrl+T, который позволяет менять местами символы.
split -l 100 имя_файла 100-
100-aa, 100-ab…, содержащие по 100 строк из исходного файла. Если исходный файл содержал число строк, не кратное 100, то в последнем файле будет меньше ста строк.
Читать полностью…
⭐️🚀 Пройдите вступительный тест и получите доступ к бесплатным урокам курса "Administrator Linux. Professional".
👉 Пройти тест
Хотите стать экспертом в администрировании Linux? У нас для вас отличная новость!
Представьте, как вы:
- Освоите настройку и управление сетевыми сервисами на Linux.
- Научитесь автоматизировать задачи с помощью Ansible.
- Сможете эффективно управлять дисковыми подсистемами и файловыми системами.
- Настроите и будете администрировать веб-серверы (Nginx, Apache) и базы данных (MySQL, PostgreSQL).
- Повысите уровень безопасности своих серверов с помощью SELinux и брандмауэров.
- Получите навыки мониторинга и логирования с использованием Prometheus и Zabbix.
Наш курс включает в себя все необходимые знания и практические задания, чтобы вы стали настоящим профессионалом.
❗️После успешного прохождения теста вам будут доступны уроки на лендинге курса, и скидка на обучение "Administrator Linux. Professional".
👉 Пройти тест
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👩💻 Команды su и sudo
Когда речь заходит о администрировании Linux-систем, две команды, которые часто используются, это su и sudo.
Обе команды позволяют выполнить команды с привилегиями суперпользователя, но они имеют некоторые различия в использовании и функциональности.
Команда su
⏺"su" означает "подставить пользователя" (substitute user) и используется для смены пользователя на другого, включая суперпользователя (root).
⏺Использование. Команда su без аргументов позволяет войти в систему под суперпользователем. Например, su root попросит ввести пароль суперпользователя и переключит вас на учетную запись root.
⏺Привилегии. При использовании su вся командная строка выполняется с привилегиями суперпользователя, что может быть опасно, особенно при выполнении неизвестных или рискованных команд.
Команда sudo
⏺"sudo" означает "выполнить как другой пользователь" (superuser do) и позволяет выполнить одну команду с привилегиями суперпользователя.
⏺Использование. sudo перед командой позволяет выполнить эту команду с привилегиями суперпользователя. Например, sudo apt-get update попросит ввести ваш пароль пользователя, а не суперпользователя, и затем выполнит команду.
⏺Привилегии. sudo предоставляет более гибкий и безопасный способ выполнения команд с привилегиями суперпользователя, так как он ограничивает доступ только к выполнению одной команды, а не к полной сессии как su.
⚡️Команды su и sudo предоставляют доступ к привилегиям суперпользователя, но их использование и функциональность немного различаются. В большинстве случаев sudo является более безопасным и предпочтительным выбором для выполнения команд с привилегиями суперпользователя.
❓ Как быстро изменить что-то в именах всех однотипных файлов в одной директории?
Ответ через час.
#вопросы
🔥 Хотите понимать, как работает Linux на уровне ядра?
Повышение квалификации «Разработка ядра Linux» — это профессиональное погружение в архитектуру, отладку, модули, обработку прерываний и работу с памятью.
💻 Вы научитесь писать собственные модули, использовать структуры данных ядра, управлять потоками, анализировать dmesg и встраиваться в проекты на Linux-ядре.
💚 Курс ведут практикующие эксперты с реальным опытом разработки под ядро.
💚Программа обновляется под актуальные стандарты и задачи индустрии.
💚Живые лекции, поддержка наставников, итоговая работа — всё, чтобы вы освоили сложные темы системного программирования.
Оставьте заявку прямо сейчасРеклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Для отправки сообщения всем пользователям сразу используется команда wall (расшифровывается как write to all, т.е. “написать всем”).
$ wall
I'm going to reboot the server at 14:00!
Автоматизация задач с xargs
Многие пользователи Linux никогда не слышали о команде xargs, хотя это мощный инструмент для автоматизации задач и запуска команд с разными аргументами.
Утилита обрабатывает входные данные из стандартного потока ввода (STDIN). Они могут туда поступать либо напрямую от пользователя либо от сторонних команд через конвейер |.
Рассмотрим простой пример. Предположим, вы находитесь в каталоге с тремя файлами:
$ ls -1
file1.txt
file2.txt
file3.txt
xargs, чтобы он служил входными данными, и wc -l в качестве шаблона команды:$ ls -1 | xargs wc -l
3 file1.txt
4 file2.txt
1 file3.txt
8 total
xargs применил шаблон команды wc -l к каждому файлу для подсчета строк. xargs тут не требуется, можно обойтись сопоставлением файлов с шаблоном:$ wc -l *
3 file1.txt
4 file2.txt
...
find:$ find . -type f -name \*.py -print
/usr/lib/bup/bup/options.py
/usr/lib/bup/bup/xstat.py
...
xargs может применить шаблон команды к каждому файлу:$ find / -type f -name \*.py -print | xargs wc -l
292 /usr/lib/bup/bup/options.py
112 /usr/lib/bup/bup/xstat.py
...
find и xargs, можно дать возможность любой команде выполняться с обходом всей файловой системы, затрагивая только те ресурсы, которые соответствуют критериям.xargs имеет множество опций. Рассмотрим наиболее интересные: -n, -I и -0.$ ls | xargs echo
file1.txt file2.txt
$ ls | xargs -n1 echo
file1.txt
file2.txt
echo выполнится 2 раза: по вызову на аргумент. -I определяет место входных строк в команде. По умолчанию они добавляются в конец, но вы можете настроить их отображение в другом месте. -I введите любую строку, и она станет прототипом, указывающим, куда следует вставлять аргументы:$ ls | xargs -I XYZ echo XYZ is OK
file1.txt is OK
file2.txt is OK
-I ограничивает xargs одной входной строкой на команду. -0 использует символ "\0" в качестве разделителя данных вместо "\n" или пробела. Он часто используется при объединении find и xargs, т.к., обычно xargs ожидает, что строки будут разделены пробелами.
$ find ./ -type f -name \*.txt -print | xargs wc -l
wc: ./file: No such file or directory
wc: num: No such file or directory
wc: 1.txt: No such file or directory
find есть возможность сделать это с помощью флага -print0:$ find ./ -name \*.txt -print0
./file1.txt./file num 1.txt
xargs будет искать разделитель "\0" и по нему сформирует корректный список аргументов для wc -l:$ find ./ -name \*.txt -print0 | xargs -0 wc -lЧитать полностью…
0 ./file1.txt
0 ./file num 1.txt
0 total
🔥 Понятная, интерактивная и доходчивая шпаргалка для новичков в сетевых протоколах
Читать полностью…
👩💻 Команда grepgrep - это команда в терминале Linux, которая используется для поиска текста в файлах. Независимо от того, нужно ли вам найти строку в коде, ключевое слово в логах или что-то еще, grep делает это быстро и эффективно.
✅ Несколько примеров использования:
1. Простой поиск:
grep "word" файл.txt
grep --color=auto "pattern" file.txt
grep -r "pattern" /путь/к/директории
grep "pattern" --exclude="*.log" /путь/к/директории
grep -n "pattern" file.txtЧитать полностью…
❓ Как узнать, сколько времени занимает выполнение команды или скрипта?
Ответ через час.
#вопросы
Указав имя процесса, можно его убить при помощи команды killall.
killall firefox
pkill позволяет завершить процесс, введя только часть его имени.pkill fire*
Читать полностью…
Передача команды в качестве аргумента bashbash — это обычная программка, такая же, как и любая другая, поэтому вы можете запускать ее по имени в командной строке.
По умолчанию 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
bash -c вместе с sudo и перенаправлением ввода/вывода. Тогда-то эта фича и является ключом к успеху.sudo, чтобы получить привилегии и создать файл журнала, но команда почему-то не исполняется:$ sudo echo "New log file" > /var/log/custom.log
bash: /var/log/custom.log: Permission denied
sudo даже не запрашивает пароль? Ответ: потому что sudo вообще не запускалась.sudo к команде echo, но не к перенаправлению вывода, которое запустилось первым и провалилось.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 сочетается с перенаправлением.
Читать полностью…
❓ Как быстро создать много однотипных файлов в одной директории?
Речь идет о файлах типа file1,txt, file2.txt, file3.txt ... file100.txt или app.html, app.css, app.js.
Ответ через час.
#вопросы
❓ Что такое chroot?
CHROOT – это системный вызов, который временно перемещает root каталог в новую папку.
Как правило, root-каталог находится в «/». Но при помощи chroot можно задать другой каталог, который будет служить как root-каталог в окружении chroot.
Любые приложения, которые запускаются внутри изолированного окружения, в принципе не могут взаимодействовать с остальной операционной системой. Кроме того, не-рутовый пользователь (non-root), помещённый в chroot-окружение, не сможет перемещаться по иерархии каталогов
📎 Зачем оно нужно?
Chroot-окружение необходимо в самых различных ситуациях. К примеру, оно позволяет собирать, устанавливать и тестировать программное обеспечение в среде, которая отделена от остальной операционной системы. Также его можно использовать для запуска 32-битных приложений в 64-битной среде.
В целом, chroot – это способ временно воссоздать окружение операционной системы из подмножества файловой системы. Это позволяет временно перейти с привычных утилит на их экспериментальные версии, посмотреть, как приложения ведут себя в чистом окружении. Также chroot может помочь выполнить операции по восстановлению, развернуть систему или создать дополнительный барьер, чтобы предотвратить потенциальный взлом системы.
📎 Недостатки chroot
Основным недостатком chroot является неудобство в работе, вызванное тем, что в системе могут существовать приличное количество окружений и разных архитектур. Ну и стоит помнить, что даже этот способ не является 100%-тно безопасным и не защищает систему от кривых рук пользователя.
Удобный "справочник" по любой команде в Linux.
ExplainShell представляет удобный интерфейс для поиска справочной информации по любой команде. Просто вбиваете нужную вам команду со всеми аргументами в поисковую строку — и получаете подробное объяснение, что конкретно делает каждый аргумент.
Крч, нереально годная вещь!
❓Как разбить текстовый файл на несколько по 100 строк в каждом?
Ответ через час.
#вопросы
🚫 Блокировка или скрытие файлов в Linux
Когда вам нужно заблокировать доступ к файлу или каталогу, то самый простой способ сделать это - использовать права доступа.
Если вы являетесь владельцем файла или каталога, вы можете заблокировать доступ к нему для остальных пользователей путем снятия прав на чтение, запись и выполнение. Для этого используйте:
chmod 700 path_to_file
# или
chmod go-rwx path_to_file
(.). Например:mv file .filenameЧитать полностью…
Необходимость групповых действий с файлами возникает довольно часто. При помощи команды mmv можно копировать, перемещать, переименовывать несколько файлов одновременно.
Например, можно:
- изменить расширение файлов с .jpeg на .jpg
mmv '*.jpeg' '#1.jpg'
mmv '*abc*' '#1xyz#2'
mmv '*.html.??' '#1.#2#3.html'
-c команда будет не переименовывать, а копировать файлы.
Читать полностью…
Двойные тире в командах Linux
Порой опытные админы используют команды в консоли следующим образом:
ssh root@linuxzone.ru --
ssh или другой команде не пытаться анализировать то, что следует после параметров. На словах выглядит не очень, давайте посмотрим на практике!ssh root@linuzone.ru -- command1 --arg1 --arg2
ssh не пытаться анализировать параметры arg1 и arg2 после символа --. Это гарантирует, что команда command1 примет arg1 и arg2 в качестве аргументов командной строки и выполнится на удаленном сервере.ssh: все то, что идет после двойного тире, это не твои параметры и аргументы, анализировать это НЕ НАДО! СТОП! Дальше дело за command1 и его параметрами и аргументами.ssh это умеет делать, как и множество других команд и утилит. Рассмотрим другие примеры. --file или -f, используя команду cat. Проверяем:cat --file
cat -f
cat: unrecognized option --file/f. Давайте теперь передадим двойное тире:cat -- --file
cat -- -f
cat: --file/f: No such file or directory. Это нормально.rm --file = получим ошибку
rm -- '--file' = а вот это сработает
rm, делаем так:rm -v -i -- '--file'
rm -f -v -i -- '-f'
echo. Все попытки подружить её с двойным тире просто-напросто провалятся:/usr/bin/echo -- -n
echo -- --test
-- -nЧитать полностью…
-- --test
Как быть, если не можешь вспомнить команду в Linux?
Вот бывает такое, что команда вылетела из головы. Причем прихватила не только свое название, но и какие-то команды с ключами. Что делать? Воспользуемся утилитой man с нужными ключами:
man -k <ключевое слово>
man -k disk
❓ Как отправить сообщение всем подключенным пользователям?
Предположим, вы хотите ребутнуть сервер, но на нем одновременно с вами работают и другие люди. Как отправить им сообщение в терминале?
Ответ через час.
#вопросы
👩💻 Команда sync
Утилита команды sync синхронизирует данные из кэша в постоянную память.
Давайте рассмотрим варианты ее применения.
1️⃣ Синхронизация кэша юзера
Эта команда синхронизирует данные кэша с жестким диском:
$ sync
2️⃣ Синхронизация юзерских файловsudo команде sync, она синхронизирует все смонтированные файловые системы на жестком диске:$ sudo sync
Чтобы получить файловые системы юзера:$ df
Можно посмотреть, сколько данных смонтированы в корневом каталоге "/", в раздел - "/dev/sda3".sync предоставляет опции -d или -data для синхронизации/копирования данных кэша файла на жесткий диск:$ sync -d /home/testfile1.txt
4️⃣ Синхронизация данных нескольких файлов$ sync -d /home/testfile1.txt ~/Desktop/Samplevideo.mp4
5️⃣ Синхронизация файловой системы-f или -file-system позволяют юзеру синхронизировать данные вместе с файловыми системами:$ sync -f /home/Downloads/testfile2.txt
sync может синхронизировать/копировать несколько файловых систем с помощью одной команды:$ sync -f /home/file1.txt ~/Desktop/Samplevideo.mp4
$ sudo sync /dev/sda3
8️⃣ Синхронизация каталога и подкаталогов$ sudo sync /var/log/syslogЧитать полностью…
PID процесса в Linux
В ОС Linux каждый процесс обладает уникальным идентификатором, который называется Process ID или PID. При создании нового процесса ему автоматически присваивается PID.
▶️Значения PID
В зависимости от значения PID, сигнал будет направляться определенной группе процессов.
Как именно значение PID влияет на отправку сигнала:
«PID > 0» - Сигнал будет отправлен процессу, который имеет идентификатор, соответствующий введенному значению.
«PID = 0» - Все процессы, которые в данный момент входят в одну группу, получают одинаковый сигнал.
«PID = −1» - В этом случае сигнал будет отправлен всем пользовательским процессам (если команду вызывает root, то сигнал будет отправлен всем процессам, за исключением init и самого kill). Для этой цели используется уникальный идентификатор пользователя (UID).
«PID < −1» - Сигнал передается процессам, которые входят в группу с GID (идентификатор группы), и значение PID (идентификатор процесса) имеет абсолютное значение.
▶️Поиск PID
Чтобы успешно завершить определенный процесс, необходимо определить его номер.ps - команда отображает список активных процессов с дополнительной информацией о каждом из них.grep - задача выполняется вместе с командой ps, которая занимается поиском по списку, полученному от ps.
Извлечь все процессы:
ps axu
ps axu | grep bash
root 447 0.0 0.4 7932 4708 tty1 S 11:26 0:00 -bash
root 477 0.0 0.0 6268 640 tty1 S+ 11:27 0:00 grep bash
username и будет являться PID.pgrep firefox
pidof gcalctoolЧитать полностью…
При запуске команды или скрипта добавьте в начале команду time:
$ time ls -a
time покажет, сколько ресурсов пошло на это.
Читать полностью…
👩💻 Команда kill
Если вам известен PID процесса, вы можете принудительно остановить его, используя команду kill.
Введите команду с номером PID процесса:
kill 279
kill без аргументов, она автоматически отправляет сигнал SIGTERM.У каждого сигнала существует свой уникальный номер, в том числе у SIGTERM он равен 15.
kill -l
kill −9 279
kill можно одновременно убивать несколько процессов.kill −9 267 315 442Читать полностью…
❓ Как убить процесс, введя только часть его имени?
Ответ через час.
#вопросы
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