🐧 Linux Junior. Программирование под Linux.
3.1K subscribers
159 photos
2 videos
1 file
90 links
Канал для программистов работающих с Linux.
Почти все Python девелоперы с нами ну и другие тоже подтянутся.

По рекламе: @jannytg
@anothertechrock
Download Telegram
🔥 tail для нескольких файлов и пользователей

Вы, вероятно знакомы с multitail — он умеет следить за несколькими логами сразу. Но:

🔴 он не всегда установлен,
🔴 иногда нет прав на установку, особенно на продакшн-серверах.

Не беда: с этим справится и обычный tail:

tail -f /var/logs/*.log


⚙️ Проблема с "висящими" tail

На сервере с приложением часто работают несколько разработчиков или тестировщиков. Все смотрят логи через tail -f.

Когда приложение перезапускают, старые процессы tail остаются в фоне — иногда на дни или даже недели. Это не критично, но выглядит неаккуратно и засоряет список процессов:

ps aux | grep tail


🔧 Решение: tail с автозавершением

Можно сделать алиас, который будет следить за логом только пока жив процесс приложения:

alias TFapplog='tail -f --pid=$(cat /opt/app/tmp/app.pid) /opt/app/logs/app.log'


Как это работает:

🔴 --pid=$(cat /opt/app/tmp/app.pid)tail будет автоматически завершён, когда процесс приложения умрёт.
🔴 /opt/app/logs/app.log — путь к логу.

⚙️ Практика

Добавьте этот алиас в ~/.bashrc или ~/.bash_profile.

Теперь, даже если кто-то забудет завершить tail, он сам корректно закроется при рестарте приложения.

Можно сделать несколько алиасов для разных приложений или логов — удобно и безопасно.

🟢 Бонус

Для нескольких файлов и с PID можно использовать и так:

tail -f --pid=$(cat /opt/app/tmp/app.pid) /opt/app/logs/app1.log /opt/app/logs/app2.log


Все логи будут отображаться одновременно, и tail закроется при завершении процесса.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Команда uniq предназначена для поиска одинаковых строк в массивах текста. Как вывести только уникальные строки (не имеющие дубликатов)?
Anonymous Quiz
50%
uniq -u
11%
uniq -d
11%
uniq -c
8%
uniq –I
20%
Посмотреть ответ
1
🔥 Смена владельца и группы файлов в Linux

Помимо изменения прав доступа с помощью chmod, иногда нужно изменить владельца файла или группу, которой он принадлежит.

Для этих операций обычно требуются права суперпользователя (root), поэтому используем sudo.

👤 Смена владельца

Команда chown (от change owner) позволяет назначить нового владельца файла:

sudo chown [имя_пользователя] [имя_файла]


Пример:

sudo chown john report.txt


Теперь владельцем файла report.txt станет пользователь john.

👤👥 Смена владельца и группы одновременно

Чтобы изменить владельца и группу файла или каталога, используем двоеточие:

sudo chown [имя_пользователя]:[группа] [имя_файла]


Пример:

sudo chown root:root /home/diego/Документы/Адреса.txt


После этого владелец и группа файла будут root:root.

👥 Смена только группы

Если нужно изменить только группу, а владельца оставить прежним, можно:

sudo chown :[группа] [имя_файла]


или использовать специализированную команду chgrp (от change group):

sudo chgrp [группа] [имя_файла]


Пример:

sudo chgrp staff /home/diego/Документы/Адреса.txt


Теперь владельцем остаётся прежний пользователь, а группа меняется на staff.

📎 Пример на практике

Сменим владельца и группу файла Адреса.txt на root:root:

diego@debian:~$ sudo chown root:root /home/diego/Документы/Адреса.txt
[sudo] пароль для diego:
diego@debian:~$ ls -la /home/diego/Документы/Адреса.txt
-rw-r----- 1 root root 2 фев 17 21:15 /home/diego/Документы/Адреса.txt


Как видно, владелец и группа изменились с diego:diego на root:root.
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Права доступа -rwxr-sr-- равнозначны...
Anonymous Quiz
14%
0777
11%
2766
21%
2744
36%
2754
18%
Посмотреть ответ
Как изменить имя пользователя и переименовать его домашний каталог одной командой?

Ответ через час.

#вопросы
Please open Telegram to view this post
VIEW IN TELEGRAM
Если нужно изменить логин пользователя вместе с переносом его домашней директории, используйте usermod с флагами -l, -d и -m:

sudo usermod -l newname -d /home/newname -m oldname

Флаг -l меняет имя, -d задаёт новый путь к home-каталогу, а -m принудительно перемещает всё содержимое со старого места на новое.

#вопросы
10
⚡️ Быстрое преобразование текста: Vim и sed

Регулярные выражения в Vim и утилите sed позволяют за секунды отредактировать многотысячный файл. Ниже — подборка полезных однострочников для повседневных задач.


1️⃣ Изменение регистра букв

🔴 Первую букву в каждой строке сделать заглавной:

Vim:
:%s/^\w/\u&/g

sed:
sed -i 's/^\w/\u&/g' file.txt

🔴 Первую букву каждого слова сделать заглавной:

Vim:
:%s/\<\w/\u&/g

sed:
sed -Ei 's/\b[a-z]/\U&/g' file.txt

Как это работает: спецсимвол \u переводит следующий символ в верхний регистр, \U переводит все последующие символы, а & обозначает найденное совпадение.


2️⃣ Очистка текста от мусора

🔴 Удалить все пустые строки (включая строки с пробелами и табуляцией):

Vim:
:g/^\s*$/d

sed:
sed -i '/^\s*$/d' file.txt

🔴 Удалить все строки-комментарии (начинающиеся с #):

Vim:
:g/^\s*#/d

sed:
sed -i '/^\s*#/d' file.txt

(Команда :g/.../d в Vim полностью удаляет совпадающую строку, а не просто очищает её содержимое).


3️⃣ Форматирование отступов и пробелов

🔴 Заменить 4 пробела на один знак табуляции (\t):

Vim:
:%s/ /\t/g

sed:
sed -i 's/ /\t/g' file.txt

🔴 Удалить концевые пробелы (Trailing spaces) в конце строк:

Vim:
:%s/\s\+$//e

sed:
sed -i 's/[ \t]*$//' file.txt

⚠️ Заметка по ключу sed -i:
Флаг -i перезаписывает файл «на месте». На macOS (BSD sed) команда потребует указать пустые кавычки для резервной копии: sed -i '' 's/.../.../' file.txt. Если хотите подстраховаться, используйте sed -i.bak, чтобы автоматически создать бэкап файла перед изменением.
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥2👌1