Добавить поле sid в вывод ps -f

Я читаю страницу ps ps, и я кое-что не понимаю.

-f does full-format listing. This option can be combined with many other UNIX-style options to add additional columns. It also causes the command arguments to be printed. When used with -L, the NLWP (number of threads) and LWP (thread ID) columns will be added. See the c option, the format keyword args, and the format keyword comm. 

Я просто хочу добавить sid к выводу ps -f

Но я был смущен следующим выходом, я понимаю, что -o нужно просто добавить sid к выходу -f но выглядит как -o перезаписывает -f полностью.

Я знаю, что могу указать все параметры, которые я хочу, например pid,ppid,pgid,sid,user,comm т. Д., Но есть ли способ добавить только один дополнительный столбец для вывода -f ? Это то, что говорит страница руководства, правильно?

 [njia@cst-cgxfile01 ~]$ ps -f UID PID PPID C STIME TTY TIME CMD njia 3397 26106 0 12:23 pts/1 00:00:00 ps -f njia 26106 26105 0 09:45 pts/1 00:00:00 -bash [njia@ ~]$ ps -f -o sid Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ SID 26106 26106 25875 25875 25875 25875 25875 [njia@ ~]$ 

Кроме того, ps -ef -o sid ограничивает выбор процесса теми, кто принадлежит мне, что тоже было неожиданностью.

2 Solutions collect form web for “Добавить поле sid в вывод ps -f”

Чтобы ответить на первую часть вашего вопроса, есть несколько флагов, которые вы можете добавить в -f . Они включают в себя -l , -j , -m и -L . К сожалению, -o <format> не может быть объединен с -f .

Действительно, лучший способ получить именно то, что вы хотите, – это точно указать, что вы хотите, например

 ps -e -o pid,ppid,pgid,sid,user,comm 

Но вы можете приблизиться, добавив -j в -f , чтобы сделать ps -efj . Это добавляет PGID и SID .

Демонстрируя без флага -e чтобы сделать результат короче, сравните:

 $ ps -f UID PID PPID C STIME TTY TIME CMD myuser 123 4513 0 18:20 pts/26 00:00:00 zsh myuser 1282 123 0 18:20 pts/26 00:00:00 ps -f $ ps -fj UID PID PPID PGID SID C STIME TTY TIME CMD myuser 123 4513 123 123 0 18:20 pts/26 00:00:00 zsh myuser 1402 123 1402 123 0 18:20 pts/26 00:00:00 ps -fj 

Чтобы ответить на вторую часть вашего вопроса, причина ps -ef -o sid показывает только ваши собственные процессы, переключается ли режим BSD, когда он принимает решение о том, что ваши флаги не совместимы с POSIX. Об этом свидетельствует сообщение

 Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ 

Таким образом, это эквивалентно запуску ps ef o sid .

В режиме BSD e означает, что он распечатает среду процесса, а f означает «лес». В режиме BSD по умолчанию используется печать всех процессов, принадлежащих текущему пользователю, которые имеют какой-либо терминал, а не только те, которые находятся на текущем терминале.

Попробуйте изменить -o sid на -o sid,cmd чтобы увидеть эффекты параметров e и f .

 $ ps ef o sid SID 12345 567 567 ... $ ps ef o sid,cmd SID CMD 12345 -zsh USER=... LOGNAME=... 567 zsh PWD=... LANG=... 567 \_ ps ef o sid,cmd LANG=... PWD=... ... 

И сравните с ps u чтобы увидеть, что показанные процессы одинаковы (я добавил | wc -l для краткости).

 $ ps ef o cmd | wc -l 20 $ ps u | wc -l 20 

Все, что вы заявляете правильно, ps будет перечислять только процессы, принадлежащие вам, если вы не укажете это иначе с помощью x или аналогичных параметров. -o устанавливает формат, он не является совокупным. Итак, чтобы получить вывод ps -f с добавленным SID , вам нужно будет указать всю вещь, используя -o :

 $ ps -f UID PID PPID C STIME TTY TIME CMD terdon 27452 27436 0 02:48 pts/3 00:00:00 /bin/bash terdon 30622 27452 0 02:51 pts/3 00:00:00 ps -f $ ps -o user,pid,sid,ppid,c,stime,tty,time,cmd USER PID SID PPID C STIME TT TIME CMD terdon 27452 27452 27436 0 02:48 pts/3 00:00:00 /bin/bash terdon 30905 27452 27452 0 02:51 pts/3 00:00:00 ps -o user,pid,sid,ppid,c,stime,tty,time,cmd 

Чтобы получить тот же результат для всех пользователей, используйте это:

 ps -axo user,pid,sid,ppid,c,stime,tty,time,cmd 

Самое близкое, к которому вы можете добавить добавление, а не переписывание выходного формата, использует -O (это O, как в Oliver, а не 0 ):

 -O format Like -o, but preloaded with some default columns. Identical to -o pid,format,state,tname,time,command or -o pid,format,tname,time,cmd 

Так, например:

 $ ps -O sid PID SID S TTY TIME COMMAND 4879 27452 R pts/3 00:00:00 ps -O sid 27452 27452 S pts/3 00:00:00 /bin/bash 
  • Список, подключенный через пользователей SSH
  • init: это пользовательский поток или поток ядра?
  • ps | grep показывает плохой результат в подоболочке с заданиями, работающими в фоновом режиме
  • sudo pgrep -f соответствует произвольным строкам и возвращает увеличение pids
  • Понимание формата прошедшего времени ps для длительных процессов
  • Как я могу привязать strace к процессу, который не находится в выходе ps?
  • Выясните PID точного приложения node.js
  • Уникальная идентификация Java-процессов с тем же именем
  • grep для конкретного процесса в ps, но не для самой команды grep
  • Найти и убить процесс, который использует последовательный порт
  • Какие флаги команды «ps» предназначены для формата флагов Unix и какие флаги для формата флагов BSD?
  • Interesting Posts

    Имена файлов каталогов с sed с пробелами

    usr / bin / xterm Ошибка Xt: Не удается открыть дисплей: / usr / bin / xterm: DISPLAY не установлен?

    Как найти все файлы, содержащие различные строки из длинного списка комбинаций строк?

    Как добавить коммутатор апплета клавиатуры в панель инструментов Fluxbox?

    вверх показывает огромное количество вместо процента памяти

    Устройство ввода-вывода по умолчанию

    Как выполнить итерацию команды с двумя разными переменными?

    Поведение ALT в приложениях Qt5

    Безопасная передача пользовательского ввода в команду

    Скрипт для печати последнего входа в Unix

    Ли Linux отключил питание устройств USB, которые потребляют слишком много энергии?

    Как отключить «Не указан?» На экране входа в систему?

    Предотвращение падения пакетов IPv6 Router Solisitation (Type 133)

    Как выложить 5 минут от отметки времени Unix?

    Как использовать переменные среды OpenVPN для встроенных скриптов?

    Linux и Unix - лучшая ОС в мире.