Ви також можете обробити psвихід трохи краще.
ps --width ${n:-$COLUMNS} ${opts} #set ps terminal width
ps -ww ${opts} #no word wrap
ps -o ${only_interesting_output} ${opts} #trim output
Це дозволить psпроаналізувати свій вихід на ваші технічні характеристики за потребою.
Звичайно, якщо ви не переказуєте слова, то у вас виникає проблема з відсутністю інформації. Вам справді потрібно все це для всіх процесів? Відкрийте його в пейджері, якщо так:
ps ww ${opts} | $PAGER
Якщо ні, вкажіть, що ви хочете бачити:
ps -o args= -p $pid
Ви також можете чітко повідомити psпро свій термінал --width:
man ps
...
w Широкий вихід. Використовуйте цю опцію двічі для необмеженої ширини.
-w Широкий вихід. Використовуйте цю опцію двічі для необмеженої ширини.
--width n Встановити ширину екрана.
Ця --widthріч працює саме на запитувані вами характеристики, не залучаючи будь-яких додаткових фільтрів або допоміжних процесів (які, ймовірно, -auxще більше захаращують ваш вихід). І, $COLUMNSяк показано вище, і як вказує Стефан, це навіть буде динамічно працювати.
Напевно, варто відзначити, що я вважаю, що люди часто намагаються додати такі види непотрібних фільтрів, щоб вони могли розмістити |pipeчерез інший фільтр для розбору результатів, який також є дуже непотрібним. Звичайно, під людьми я в основному маю на увазі мене.
-oUtput операнда я згадав вище дозволяю фільтрувати стовпці , які psвідображаються, а при додаванні =розпаювання ви можете навіть назвати колонки , як вам завгодно. Я залишаю завдання порожнім і вручаю йому цільову -pобробку, $pidтому єдиним результатом з psусіх є $pidім'я команди та її argsпри виклику. І -oледь не дряпає поверхню того, як ви можете визначити, що psбуде чи не буде відображатися. Це я б рекомендував вам взяти, особливо через:
man ps
...
Щоб побачити кожен процес у системі, що використовує синтаксис BSD:
ps ax
ps axu
Щоб надрукувати дерево процесу:
ps -ejH
ps axjf
Щоб отримати інформацію про теми:
ps -eLf
ps axms
Щоб отримати інформацію про безпеку:
ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM
Щоб побачити кожен процес, що працює як root (реальний та ефективний ідентифікатор) у форматі користувача:
ps -U root -u root u
Щоб побачити кожен процес у визначеному користувачем форматі:
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -Ao pid,tt,user,fname,tmout,f,wchan
Роздрукуйте лише ідентифікатори процесу syslogd:
ps -C syslogd -o pid=
Роздрукуйте лише назву PID 42:
ps -p 42 -o comm=