Когда считано руководство pstree
-a Show command line arguments. If the command line of a process is swapped out, that process is
shown in parentheses. -a implicitly disables compaction for processes but not threads.
Я очень смущен 'параметрами командной строки'
Сравните вывод
me@alpha:~$ pstree |head -5
systemd-+-ModemManager---2*[{ModemManager}]
|-NetworkManager-+-dhclient
| `-2*[{NetworkManager}]
|-accounts-daemon---2*[{accounts-daemon}]
|-acpid
me@alpha:~$ pstree -a | head -5
systemd splash
|-ModemManager --filter-policy=strict
| `-2*[{ModemManager}]
|-NetworkManager --no-daemon
| |-dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper -pf /run/dhclient-wlp3s0.pid -lf...
Командные строки состоят из функции, опций и аргументов
Скажите выставочные параметры командной строки-a, подразумевает, что другие просто показывают funtions и опции, но дело не в этом.
Что параметры командной строки означает здесь?
Параметры командной строки, в целом, относятся ко всем аргументам после названия запущенной программы. Например, в Вашей команде pstree | head -5
, существует один аргумент head
который является -5
.
В pstree
вывод, дерево состоит из корня любого pid (идентификатор процесса) или init и затем дерево дочерних потоков. Например, в Вашем выводе, NetworkManager является родительским процессом, который выполняет тот dhclient
и 2 NetworkManager
потоки.
Добавление -a
отметьте также печатает аргументы, которые использовались, когда каждый процесс или поток были запущены. Например, в Вашем выводе, мы видим это NetworkManager
был запущен с одного аргумента --no-daemon
, и аналогично dhclient
был запущен с нескольких аргументов.
Это - вся страница справочника, подразумевает "под выставочными параметрами командной строки".
Аргументы - все, что не является самим названием команды. Например, в
dhclient -d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper -pf /run/dhclient-wlp3s0.pid -lf
аргументами является весь из
-d -q -sf /usr/lib/NetworkManager/nm-dhcp-helper -pf /run/dhclient-wlp3s0.pid -lf
Это значения в положениях 1 и вперед в C argv
выстройте данный программе, когда она запустится, или в sys.argv[1..]
в Python.
Что pstree
руководство подразумевает, это без -a
это только перечисляет название каждой программы и не любой из других частей, данных на командной строке. Именно это показывают Ваши два примера: просто ModemManager
перечислен в первой версии без -a
, но ModemManager --filter-policy=strict
в -a
версия. Это не заботится ли "аргументы", запущенные с -
или что они представили.
Иногда программы отличают "опции" и "флаги" и "аргументы", и даже "управляет" в их документации, но к системе они - все просто аргументы. Программе дают всех их вместе и добирается для решения себя, что сделать с ними, и которые вписываются в каждую категорию. Может быть полезно помочь человеку думать о том, что они делают, но это чисто информативно и не вынуждено. С тех пор pstree
должен показать каждую программу, она не может знать, как они все думают о своих командных строках и должны быть очень универсальными.
В сущности структура командной строки
command-name argument-1 argument-2 argument-3...
и те аргументы могли быть -x
или подкоманда или путь, и они являются всеми одинаковыми до command-name
видит их и решает, что сделать. pstree
видит их всех в необработанной форме и просто сообщает о них Вам, когда Вы просите их.