Добавить поле 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 
  • Почему я не могу использовать весь 100% -ный потенциал процессора?
  • Найти и убить процесс, который использует последовательный порт
  • Как фильтровать STAT с помощью ps?
  • Среднее использование ЦП процесса
  • Почему «ps -p proc1 proc2 proc3» показывает «-csh», «-tcsh» и «- / bin / tcsh», тогда как «ps -p proc » индивидуально все говорят «tcsh»?
  • Конвертировать PDF из цветового пространства sRGB в CMYK
  • grep дает результаты, которые не отображаются в исходном контексте
  • Сортировка вывода ps не работает
  • Убивание процесса cron и предотвращение его перезапуска
  • Вызовите 'ps' как обычный пользователь в Linux
  • Программа pstree и htop показывает потоки с уникальными PIDS. Как это возможно?
  • Linux и Unix - лучшая ОС в мире.