как получить полный список процессов в солярисе без усеченных линий?

<p>есть ли способ создать полный список процессов в солярисе без усеченных линий? я пробовал команду <code>ps</code> со следующими аргументами:</p><pre> -f создает полный список. (см. ниже значение столбцов в полном списке - ing.) </pre><pre> -l создает длинный список. (см. ниже.) </pre><p>итак, оба они, кажется, делают то, что я хочу, однако ниже, на странице справочника ps, я нахожу это:</p><pre> args команда со всеми аргументами в виде строки . реализация может урезать это значение до ширины поля; зависит от реализации, происходит ли какое-либо дальнейшее усечение. не указано, является ли представленная строка версией списка аргументов , так как она была передана команде при ее запуске, или является версией аргументы, поскольку они могли быть изменены приложением. приложения не могут зависеть от того, могут ли они изменить свой список аргументов , и что эта модификация - может быть отражена в выводе ps. реализация solaris ограничивает строка до 80 байт; строка является версией списка аргументов, поскольку она была передана команде при ее запуске. </pre><p>который в основном говорит, что выходные данные будут усечены, и я ничего не могу с этим поделать. итак, я иду сюда. конечно, другие люди столкнулись с этой проблемой и, возможно, даже имеют способ обойти ее. я предполагаю, что ps не может сделать это, и поэтому мне нужно использовать другие инструменты для этого. это точно?</p>

<p>ты можешь попробовать</p><pre><code>pargs <pid> </code></pre><p>это дает вам список всех аргументов</p><p>или использовать другой пс. если запустить от имени пользователя root (или любого пользователя с достаточными правами)</p><pre><code>/usr/ucb/ps auxww </code></pre><p>даст вам все аргументы. его часть sunwscpu, "совместимость с источниками (usr)"</p>

<p>ядро не обязано отслеживать аргументы командной строки. когда программа запускается с помощью вызова <code>execve</code>, ядро должно скопировать аргументы в память процесса (чтобы, например, они были доступны как <code>argv</code> в программе на c). после этого ядро может отказаться от памяти, используемой для хранения начальных аргументов командной строки. процесс может перезаписать свою копию аргументов. так что может просто не быть никаких следов аргументов.</p><p>некоторые варианты unix сохраняют копию аргументов в той или иной форме. solaris предоставляет некоторые данные в <code>/proc/$pid. начиная с opensolaris 2009.06, единственный след аргументов находится в /proc/$pid/psinfo</code>, где они объединены с пробелами между ними (поэтому вы не можете различить <code>foo "one" "two"</code> а также <code>foo "one two"</code>) и результирующая строка усекается до 80 байтов. это поле в <code>/proc/$pid/psinfo</code> - это то, что <code>ps</code> печатает в столбце <code>args</code>.</p><p>кстати, <code>-f</code> а также <code>-l</code> параметры определяют, какие поля будут напечатаны, а не обрезаны ли поля до некоторой ширины.</p>

<p><code>ps -e</code> дает список всех запущенных процессов. также есть это <code>ps -elf</code>.</p>

<p>в зависимости от того, какую команду <code>ps</code> вы используете, я использую</p><pre><code>ps -auxw </code></pre>

<p><code>prstat</code> предоставит вам текущие процессы, их pids и загрузку процессора.</p>