830просмотров
88.1%от подписчиков
11 февраля 2026 г.
Score: 913
Добрый день!🐧 Продолжаем историю с полезными однострочниками Bash📱 📱 Bash однострочник №2 - Поиск всех процессов, работающих с файлами в указанной директории lsof +D "/opt" 2> /dev/null | awk 'NR > 1 {print $2, $1}' | sort -u | while read pid p_name; do cmd=$(cat "/proc/$pid/cmdline" 2> /dev/null | tr '\0' ' '); echo "PID: $pid, NAME: $p_name, CMD: $cmd"; done ⚙️ Разбор команды: - lsof +D "/opt" 2> /dev/null - ищет открытые файлы в директории /opt; - awk 'NR > 1 {print $2, $1}' - пропускает заголовок вывода lsof и меняет местами столбцы: PID (второй столбец) и имя процесса (первый столбец); - sort -u - сортирует строки и оставляет только уникальные (PID + имя процесса); - while read pid p_name; do ... done - для каждой уникальной пары PID и имени процесса: - cmd=$(cat "/proc/$pid/cmdline" 2> /dev/null | tr '\0' ' ') - читает полную командную строку процесса из /proc, заменяя нулевые символы на пробелы; - echo "PID: $pid, NAME: $p_name, CMD: $cmd" - выводит PID, имя процесса и его командную строку. Тут всё завязано на выводе утилиты lsof (list open files), дальнейшая обработка выполняется скорее для удобочитаемости. 📱 Пример вывода: PID: 1522, NAME: rsyslogd, CMD: /usr/sbin/rsyslogd -n -iNONE PID: 1557, NAME: virtlogd, CMD: /usr/sbin/virtlogd PID: 1628, NAME: clamd, CMD: /usr/sbin/clamd --foreground=true --- Как оптимизировать процесс поиска и запуска команд из заранее подготовленного списка рассказывал тут: - rofi (универсальный вариант для GUI сеанса) - tmux+fzf (на уровне CLI - сеанс tmux) - Функции оболочки cmd (bash, zsh) Успехов! #oneliners #shell #bash --- Сайт🐦‍⬛️ | Чат🧐 | GitHub📱
830
просмотров
1760
символов
Да
эмодзи
Нет
медиа

Другие посты @r4ven_me

Все посты канала →
Добрый день!🐧 Продолжаем историю с полезными однострочникам — @r4ven_me | PostSniper