Добавьте sid поле к PS-f вывод

Конфетка не показывает рабочее ядро (ядра)... У Вас не может быть нескольких ядер, работающих одновременно в единственном пространстве пользователя.

Конфетка показывает Вам установленные ядра. Скорее всего, Вы выполняете 3.6.10 ядер, хотя проверение их так же просто как выполнение uname -a.

Дополнительные строки являются дополнительными пакетами, которые добавляют дополнительные возможности к системе. Например, ядро-devel пакет является всем источником ядра. Это позволяет Вам восстанавливать ядро или создавать пользовательский модуль против того ядра.

2
11.02.2014, 03:46
2 ответа

Для ответа на первую часть вопроса существует несколько флагов, к которым можно добавить -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
2
27.01.2020, 22:00
  • 1
    я думаю, что Вы абсолютно правы, я не получаю это сообщение об ошибке на своем Debian все же. –  terdon♦ 11.02.2014, 04:19
  • 2
    ps -eO sid f работавший для меня, но это еще более соединено проводом. Существуют -f в управлении выходным форматом и f в выходном модификаторе. Я могу сделать это ps -f f и это дает мне все поля, включенные ps -f но в ps f формат. Это становится более интересным. –  Ask and Learn 11.02.2014, 04:29
  • 3
    ps ef sid,cmd дает мне синтаксическую ошибку, сделайте Вы имеете в виду ps ef o sid,cmd ? –  Ask and Learn 11.02.2014, 04:32

Все, что Вы заявляете, корректно, ps только перечислит процессы, принадлежавшие Вам, если Вы не говорите это иначе с x или a или подобные опции. -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
2
27.01.2020, 22:00
  • 1
    благодарит за ответ, я все еще смущен ps -ef -O sid только перечислите процессы, принадлежавшие один, что произошло с -e опция. Похож на PS, просто проигнорировал его. Это работает, если я делаю это ps -eO sid f. –  Ask and Learn 11.02.2014, 04:11
  • 2
    @AskandLearn ps страница справочника является одним из самых сложных, которые я когда-либо видел. Я соглашаюсь что -f кажется, ест -e но понятия не имейте почему. –  terdon♦ 11.02.2014, 04:17
  • 3
    -f не ест -e. -f и -o конфликт, таким образом, ps попытки проанализировать его в режиме BSD вместо этого. И в режиме BSD -e средства что-то другое. –  Mikel 11.02.2014, 05:15
  • 4
    @Mikel да, я понял, когда я прочитал Ваш ответ, Спасибо! –  terdon♦ 11.02.2014, 05:18

Теги

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