ch
Feedback
🐧 Linux Junior. Программирование под Linux.

🐧 Linux Junior. Программирование под Linux.

前往频道在 Telegram

Канал для программистов работающих с Linux. Почти все Python девелоперы с нами ну и другие тоже подтянутся. По рекламе: @jannytg @anothertechrock

显示更多
3 095
订阅者
-224 小时
-37
-1130
帖子存档
Сколько ссылок создается при создании директории?
Anonymous voting

Гринатом — ИТ-интегратор Росатома — ищет эксперта инфраструктуры Linux в Санкт-Петербурге! 👨‍💻Вам предстоит администрирование ОС Linux и Windows, управление виртуализацией, поддержка ключевых сервисов и обеспечение их стабильности, настройка и сопровождение систем мониторинга и централизованного логирования, автоматизация развертывания и конфигурации сервисов и задач, а также организация систем резервного копирования и восстановления. 🤝Мы предложим работу в аккредитованной ИТ-компании, «белую зарплату» 2 раза в месяц, обучение за счёт компании, оформление по ТК и ДМС (со стоматологией) с первого дня. От кандидатов ждём навыки работы с операционными системами и опыт в импортозамещении и развитии отечественных решений.

Каким будет вывод этой программы?
Anonymous voting

💻 Что означает 2>&1? Это про стандартные потоки вывода. Они имеют файловые дескрипторы: stdout — 1 (общий поток вывода) stderr — 2 (поток с ошибками) Получается (2>&1) = stderr > stdout — направляем поток с ошибками в стандартный поток вывода. Ошибки будут выводиться на экран в терминале. 🤔 Логичным было бы сделать конструкцию 2>1. Но увы, эта схема отработает другую логическую операцию. Поток с ошибками stderr будет писать все данные в файл, у которого название будет 1. Для этого и требуется указать символ & (амперсанд) перед stdout. Это будет интерпретировано как файловый дескриптор, а не обычный файл. 🤔 А почему тогда не &2>&1 ? Символ & интерпретируется как файловый дескриптор только в контексте перенаправления. Операция command &2>&1 анализируется следующим образом. command & 2>&1 — команда command будет выполнятся в фоновом режиме. А затем начнет выполнятся команда 2 с перенаправлением на стандартный вывод stdout. Есть альтернатива с оператором |&. |& это сокращенный вариант от 2>&1 | Пример:
script.sh |& tee -a /var/log/script.log
Все что script.sh выведет в потоки stdout и stderr, будет перенаправлено в файл script.log. В официальной документации можно подробнее изучить эту штуку.

Пароль пользователя в зашифрованном виде хранится в:
Anonymous voting

Какая команда используется для печати файлов (на принтере)?
Anonymous voting

Какая переменная содержит список переданных параметров?
Anonymous voting

Права на файл -rwxr--r-- иначе можно записать как:
Anonymous voting

Команда find / -name '*'
Anonymous voting

Что такое /dev/null и почему туда направляют данные? Если вы активно работаете в командной строке, то, вероятно, использовали файл /dev/null для следующих целей: 1️⃣ Убрать из вывода всю ненужную инфу (предупреждения, ошибки и т.д.):
$ find / -name "*.conf" 2>/dev/null
2️⃣ Передать утилите пустой ресурс в качестве аргумента. Делаться это может с целью исключения пользовательских и системных конфигов и применения дефолтных настроек на стороне программы:
$ picom --config /dev/null
3️⃣ Полностью очистить файл:
$ cat /dev/null > bigfile   
Окей, принято, а чем является этот самый /dev/null? В сущности - это cимвольное псевдо-устройство, которое создается на этапе запуска системы и работает с потоками данных:
$ ls -l
crw-rw-rw- 1 root root 1, 3 Sep 6 08:37 null
О типе устройства говорит первый бит режима файла - c "character". Ресурс удаляет все записанное в него и возвращает при чтении EOF (End of File). Когда мы взаимодействуем с /dev/null, неявно отрабатывает специальный драйвер ядра, в который и зашита логика. Если интересно, можно порыться в исходниках с реализацией: drivers/char/mem.c. Код имеет отношение не только к /dev/null, но и к другим символьным устройствам. Развернем более подробную информацию:
$ stat /dev/null

File: /dev/null
Size: 0 Blocks: 0 IO Block: 4096   character special file
Access: (0666/crw-rw-rw-)  Uid: (0/ root)   Gid: (0/ root)
Access: 2025-01-25 14:42:20.101000002 +0300
...
Этот вывод показывает, что файл имеет размер 0 байт, для него выделено 0 блоков на диске, дата создания = дата запуска системы:
$ who -b  
system boot  2025-01-25 14:42
Права доступа установлены таким образом, что любой может читать и записывать в него, но никто не может его выполнять:
$ echo hello | /dev/null
-bash2: /dev/null: Permission denied
Поскольку файл не исполняемый, мы не можем использовать конвейер |. Единственный способ — использовать перенаправление файлов >, >>.

Если в директории есть файлы fileA, fileB, fileAB, fileBC и fileABC, какие из них подпадут под шаблон file[ABC]?
Anonymous voting

👩‍💻 Команда rsync rsync - один из самых популярных инструментов командной строки для резервного копирования. Он позволяет осуществлять быструю инкрементную передачу и синхронизацию файлов. ✔️ Как сделать локальный бэкап:
rsync -av /source/directory/ /destination/directory/
✔️ Как сделать удаленный бэкап через ssh:
rsync -av -e ssh /source/directory/ user@remote_host:/destination/directory/
Rsync можно использовать для зеркалирования данных, инкрементного резервного копирования, копирования файлов между системами, а также в качестве замены команд scp, sftp и cp. ⚙️ Установка:
sudo apt install rsync
Подробнее ознакомиться с опциями утилиты можно на этой странице, либо воспользовавшись командой man.

Пользователь может сменить командную оболочку, используемую для входа в систему, при помощи команды...
Anonymous voting

😱 Как вернуть удалённый скрипт Рассмотрим ситуацию, когда случайно/специально удалился исполняющийся bash-скрипт. Чтобы не попадать в такие ситуации, всегда храните исходники в git — это избыточно, но бекапы никто не отменял. Скрипт удалён с диска, но продолжает работать в фоне, значит его можно как-нибудь восстановить. Создадим подопытный скрипт. touch /tmp/script.sh:
#!/bin/bash
sleep 1000
exit
Делаем его исполняемым chmod +x /tmp/script.sh и запускаем в фоне /tmp/script.sh &. Символ & может служить разделителем между командами command & command, две команды выполнятся параллельно. Скрипт запустили, он крутится в фоне. Удалим сам файл: rm -f /tmp/script.sh Ключ -f позволит удалить без лишних вопросов. Восстанавливаем:
lsof -c 'script.sh'
На экран выведется простыня. Нам нужна строка, где в конце указан путь к удаленному скрипту:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
script.sh 261899 root 255r REG 8,1 51 130773 /tmp/script.sh
Берем PID = 261899, берем FD = 255 и делаем так:
cat /proc/261899/fd/255
А вот и исходник скрипта:
File: /proc/261899/fd/255
#!/bin/bash
sleep 1000
exit
Вот полезная инфа, которая была использована в гайде: man 5 proc # /proc/[pid]/fd/ man lsof