3309
Канал для программистов работающих с Linux. Почти все Python девелоперы с нами ну и другие тоже подтянутся. По рекламе: @jannytg @anothertechrock
Двойные тире в командах 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
У K2 Cloud скоро будет митап о карьере в Linux
Эксперты компании и приглашенный гость — блогер Константин Дипеж (DeusOps) — обсудят профессиональный путь Linux-специалиста.
Среди тем: как безболезненно «вкатиться» в Linux, с чем откликаться на вакансию, какие вопросы задают на техническом интервью и как расти после оффера. Полезный контент для начинающих спецов, которые хотят развиваться в DevOps и не только.
Встреча пройдет онлайн, 19 марта в 18:00 (msk). Подробности и регистрация по ссылке
❓ Как запустить процесс, который не прервется при закрытии терминала?
Ответ через час.
#вопросы
Топ 7 книг по Linux.
Скачивайте и читайте.
Хакинг на Linux
Автор: Колисниченко Д. Н.
Kali Linux Penetration Testing Bible
Автор: Gus Khawaja
Efficient Linux at the Command Line
Автор: Daniel J. Barrett
Penetration Testing with Kali Linux 2.0
Mastering Kali Linux for Advanced Penetration Testing
Автор: Vijay Kumar Velu
Linux Bible from Scratch
Автор: Christopher Negus
How Linux Works
Автор: Brian Ward
#linux #подборка
❓ Как очистить экран терминала?
Чтобы очистить экран терминала, введите команду clear. Или просто нажмите Ctrl+L.
#вопросы
Linux и Go эффективное
низкоуровневое
программирование
Автор: Олег Цилюрик
Год издания: 2024
#go #ru #2O24 #linux #книга
🐧 Скачать книгу 🐧
👩💻 Команда find
Команда find позволяет выполнять поиск по различным критериям, таким как имя файла, размер, дата изменения и другие параметры. Вы можете указать точный путь или использовать джокеры для более гибкого поиска.
Некоторые примеры использования:
1. Найти все файлы с определенным расширением в указанной директории:
find /путь/к/директории -name "*.расширение"
find /путь/к/директории -mtime -n
find /путь/к/директории -size +nk
🔥 Хотите понимать, как работает 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 сочетается с перенаправлением.
Читать полностью…
👩💻 Команды zip и unzip
Давайте рассмотрим на примерах, как пользоваться командами zip и unzip для упаковки и распаковки архивов формата ZIP.
📦 Упаковка архивов
Создаём архивы с помощью команды zip. Например:
1. Упаковка одного файла:
zip archive.zip file.txt
zip archive.zip file1.txt file2.txt file3.txt
zip -r archive.zip folder
zip -r archive.zip folder -x "folder/file3.txt"
unzip. Например:unzip archive.zip
unzip archive.zip -d /path/to/directory
unzip -l archive.zip
unzip archive.zip "*.txt"Читать полностью…
Вам поможет команда nohup.
Допустим, вы открыли какое-то приложение, введя команду в терминале. Если вы об этом забудете и закроете терминал, открытая через него программа тоже закроется. Чтобы этого не произошло, при введении команды нужно написать nohup.
Синтаксис:
nohup команда аргументы &
nohup вам пригодится, если вы запускаете какой-то скрипт, работа которого занимает много времени и может происходить в фоновом режиме (для этого в конце добавляется &). После такого запуска вы сможете закрыть терминал или вылогиниться с удаленного сервера, а скрипт продолжит работу.nohup можно при помощи kill.
Читать полностью…
🖥 Что такое SSH-алиас и как его настроить?
SSH-алиас (SSH alias) - это короткое именованное обозначение, которое используется для подключения к удаленному серверу через SSH.
Создание SSH-алиасов позволяет упростить процесс подключения к удаленным серверам и сэкономить время при вводе длинных команд. Вместо того чтобы запоминать и вводить полный адрес сервера, имя пользователя и порт, вы можете использовать короткий и запоминающийся алиас для быстрого подключения.
Для создания SSH-алиаса вам нужно отредактировать файл конфигурации SSH клиента, который обычно называется config и находится в директории ~/.ssh/
⚙️ Как это сделать:
1. Открываем файл конфига в любом текстовом редакторе, например:
vim ~/.ssh/config
Host my_server
Hostname 34.151.201.192
User ghost23
Port 22
Host - имя алиаса, то самое короткое именованное обозначение, по которому будет выполняться подключение
🟠Hostname - ip-адрес сервера, к которому будет выполняться подключение
🟠User - имя пользователя, под которым будем логиниться на сервере
🟠Port - номер порта, по которому будем подключатьсяssh my_server
Linux - сила, MacOS - могила!
Читать полностью…
Пришло время заглянуть под капот и научиться создавать драйвера на Linux!
Научитесь создавать драйвера, управлять памятью на уровне ядра, писать многопоточные и синхронизированные модули, а также разбираться в архитектуре и механизмах ядра Linux.
🖐 Что ждет вас на курсе?
- Создание и настройка модулей ядра: Вы научитесь легко интегрировать новое оборудование и расширять функциональность системы.
- Внутренние механизмы ядра и управление памятью: Поймете, как более точно настраивать и оптимизировать систему под конкретные задачи, что улучшит общую эффективность работы.
- Навыки разработки драйверов: Освоите взаимодействие с аппаратными устройствами, что позволит легко интегрировать аппаратные функции и управлять ими, расширяя функциональность мобильных приложений.
➡️ Что будет в программе курса?
1. Узнаем архитектуру ядра Linux и разберемся с драйверами.
2. Создадим простой модуль ядра: будем использовать printk(), сборку и макроопределения __init и __exit.
3. Связь модулей ядра с приложениями? Легко!
4. Работать с файлами символьных устройств — это просто!
5. Создадим драйверы для файловой системы /proc и научимся блокировать процессы при конкуренции.
6. Управление памятью в ядре Linux — прокачаемся!
7. Разработка и регистрация блочных устройств? Без проблем!
8. Конкуренция, семафоры, мьютексы — разберемся с примерами драйверов!
9. Типы данных в ядре и их использование — будем разбираться!
Вас ждет пробный урок
Перед тем как погружаться в курс, приглашаем вас пройти небольшой демо-урок, где вы сможете проверить, достаточно ли у вас знаний для обучения на курсе, а также послушать лекцию про архитектуру ядра и в чем отличия разработки драйверов от прикладного ПО.
➡️ Регистрация на демо-доступ
Реклама. ООО "Инженеркатех" ИНН 9715483673 erid: 2W5zFGFH6oa
tailspin
Утилита, которая позволяет просматривать логи с подсветкой. Это удобно, красиво и сокращает много времени на анализ.
Но есть один минус - если привыкните, то читать логи без этой тулзы будет очень сложно 🤓
🔛 https://github.com/bensadeh/tailspin
Python и DevOps:
Ключ к автоматизации Linux
Автор: Ной Гифт
Год издания: 2022
#python #devops #ru
Скачать книгу