Подробная информация об отдельном процессе в формате greppable

logrotate -f /etc/logrotate.conf
1
16.06.2020, 04:53
2 ответа

Да, такая утилита существует . Я написал один. Когда выйдет версия 1.41 инструментария nosh, он будет доступен.

Поля выдаются вvis(3 )закодированной форме именно таким образом, чтобы их можно было -анализировать с помощью инструментов, которые разбивают поля на пробелы. Можно, например, передать вывод в awkи выполнить awkобычное сопоставление полей без (, как хорошо -, как известно, в случае передачи выходных данных ванильных psпрограмм черезgrep)случайное совпадение с чем-то из другого поля. Затем его пропускают через unvis, чтобы получить удобочитаемую для человека -форму.

Вот как я недавно искал свои собственные процессы, например:

system-control ps -A -o "pid,args,stime,tree,tty,uid" | 
awk -F$'\t' '{ if ($6==1001) printf "%8u %4u %s %s [%s] %s\\n",$1,$6,$3,$4,$5,$2 }' |
unvis |
less -S

Я изменил предыдущую команду в своей истории, добавив в поле uidи сопоставление с полем номер 6. Такого рода вещи не работают с ванильными командами ps, потому что argsне распознается как одно поле. Кодированиеvis(3 )здесь гарантирует, что это так.

Он выуживает кучу всего из statв Linux. (Инструмент работает как с операционными системами на базе Linux -, так и с FreeBSD. )Столбцы можно выбирать с помощью -oи -O, если используется прокладка совместимости, как показано здесь.

Его вывод на самом деле представляет собой правильную, машинно-разборную -плоскую файловую таблицу, разделенную одной -TAB -. Действительно, это можно превратить в выбранную вами форму с помощью Миллера и тому подобного :

.
% system-control ps -A -o "pid,args,stime,uid" |
awk '$4==1001 || NR==1' |
mlr --oxtab --ipprint --ifs '\t' --ops ': ' cat |
unvis |
head -n 10
PID: 4140
COMMAND: -zsh
STIME: 2020-06-16 08:39:05
UID: 1001

PID: 4554
COMMAND: sh /tmp/PCDM-session.sD4542
STIME: 2020-06-16 08:39:19
UID: 1001

%

Обратите внимание на пробелы в двух полях, которые оставались закодированными при обработке до unvis.

Инструменты для получения надежного-машинного -обрабатываемого списка процессов действительно существуют. Это просто не (не совсем )стандартная psкоманда или top.

Дополнительная литература

  • vis. Руководство по функциям библиотеки NetBSD . 2017 -04 -22.
  • unvis. Руководство по основным командам FreeBSD .2010 -11 -27.
  • Джонатан де Бойн Поллард (2020 ).ps. Направляющая ноша . Программное обеспечение.
  • Джонатан де Бойн Поллард (2020 ).list-process-table. Направляющая ноша . Программное обеспечение.
2
18.03.2021, 23:27

Скриптprocinfo.pyделает это, доступный в исходном коде библиотеки pythonpsutil. Однако он обычно не поставляется вместе с самим psutil.

Вот пример его вывода:

$ procinfo.py $(pgrep syncthing)
pid         19383
name        syncthing
parent      1836 (syncthing)
exe         /usr/bin/syncthing
cwd         /home/nathaniel
cmdline     /usr/bin/syncthing -no-browser -no-restart -logflags=0
started     2020-06-18 18:04
cpu-tspent  0:28.66
cpu-times   user=19.73, system=8.93, children_user=0.0, children_system=0.0
cpu-affinity [0, 1, 2, 3]
cpu-num     1
memory      rss=42.3M, vms=927.6M, shared=14.6M, text=6.2M, lib=0B, data=129.5M, dirty=0B
memory %    0.27
user        nathaniel
uids        real=1000, effective=1000, saved=1000
uids        real=1000, effective=1000, saved=1000
terminal    
status      sleeping
nice        0
ionice      class=3, value=0
num-threads 13
num-fds     21
I/O         read_count=8.9K, write_count=1.6K, read_bytes=2.9M, write_bytes=896.0K, read_chars=2.1M, write_chars=126.2K
ctx-switches voluntary=32, involuntary=1
open-files  PATH
            /home/nathaniel/.config/syncthing/index-v0.14.0.db/LOCK
            /home/nathaniel/.config/syncthing/index-v0.14.0.db/LOG
            /home/nathaniel/.config/syncthing/index-v0.14.0.db/006717.log
            /home/nathaniel/.config/syncthing/index-v0.14.0.db/MANIFEST-006718
            [...]
connections PROTO LOCAL ADDR                REMOTE ADDR               STATUS
            TCP   192.168.1.153:57054       216.59.50.190:22067       ESTABLISHED
            UDP   :::35882                  *:*                       NONE
            TCP   192.168.1.153:45342       198.211.120.59:443        ESTABLISHED
            TCP   ::ffff:192.168.1.153:22000 ::ffff:192.168.1.175:41196 ESTABLISHED
            UDP   0.0.0.0:21027             *:*                       NONE
            UDP   :::21027                  *:*                       NONE
            UDP   0.0.0.0:33035             *:*                       NONE
            TCP   :::22000                  *:*                       LISTEN
            TCP   127.0.0.1:8384            *:*                       LISTEN
            UDP   :::22020                  *:*                       NONE
threads     TID           USER       SYSTEM
            19383         0.01          0.0
            19384         0.89         2.63
            19385          0.0          0.0
            19386          2.2          0.5
            [...]
            total=13
res-limits  RLIMIT                  SOFT            HARD
            virtualmem          infinity        infinity
            coredumpsize               0        infinity
            cputime             infinity        infinity
            datasize            infinity        infinity
            filesize            infinity        infinity
            locks               infinity        infinity
            memlock             16777216        16777216
            msgqueue              819200          819200
            nice                       0               0
            openfiles               4096            4096
            maxprocesses           63289           63289
            rss                 infinity        infinity
            realtimeprio               0               0
            rtimesched          infinity        infinity
            sigspending            63289           63289
            stack                8388608        infinity
environ     NAME                      VALUE
            ACK_PAGER                 less --RAW-CONTROL-CHARS --no-init --quit-if-one-screen
            APPORT_IGNORE_OBSOLETE_PACKAGES 1
            BROWSER                   /usr/bin/firefox
            DBUS_SESSION_BUS_ADDRESS  unix:path=/run/user/1000/bus
            [...]
mem-maps    RSS      PATH
            28.3M    [anon]
            12.9M    /usr/bin/syncthing
            1.6M     /lib/x86_64-linux-gnu/libc-2.27.so
            164.0K   /lib/x86_64-linux-gnu/ld-2.27.so
            [...]
1
18.03.2021, 23:27

Теги

Похожие вопросы