Добавить поле 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 
  • Убивание процесса cron и предотвращение его перезапуска
  • Список 10 основных процессов процессора
  • Где найти исходный код для ps?
  • Что указывает этот STAT-процесс?
  • Как получить первый ответ PID приложения в команде pstree?
  • Проверьте процесс и убейте
  • Вызовите 'ps' как обычный пользователь в Linux
  • ps переключает для отображения PID, PPID, PGID и SID в совокупности
  • Как заставить команду ps показать память в mb вместо kb?
  • При каких обстоятельствах pgrep -x не может вернуть действительный pid?
  • ps, чтобы показать только процессы, которые соответствуют более чем одному условию (AND)
  • Interesting Posts

    Как использовать отрицание команды в цикле while с grep в сценарии оболочки?

    Как проверить shellshock против удаленной машины, используя простой скрипт

    Компиляция кода с точки зрения

    Сохранять фиксированную область RAM-памяти в качестве блочного устройства (с заданным начальным физическим адресом)

    Как отличить v2 и v3 от процессоров Xeon?

    Монетный двор 13: Возможно ли пропустить стандартное диалоговое окно пароля для входа в систему с помощью маятника с ключом

    Как применить параметры к конкретным ядрам с помощью GRUB 2?

    Простое определение для виртуальной памяти

    Перепутал файл bash.bashrc, команды больше не работают

    Steam In Home Streaming от Ubuntu до macOS через VPN

    Как сознательно активировать охлаждающий вентилятор ноутбука?

    bash prompt – длинный командный круг обратно в ту же строку после добавления цвета

    Подвешивание «Проверка транзакции» при попытке установить php-soap

    Unix / Linux – Заменить слова между круглыми скобками

    VIM как c ++ IDE – автозаполнение

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