当阅读“结婚手册”时
-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显示命令行参数,这意味着其他人只显示函数和选项,但事实并非如此。
命令行参数在这里意味着什么?
发布于 2019-01-22 04:46:28
通常,命令行参数是指运行中的程序名称之后的所有参数.例如,在命令pstree | head -5中,head有一个参数,即-5。
在pstree输出中,树由pid (进程ID)或init的根组成,然后是子线程树。例如,在输出中,NetworkManager是运行一个dhclient和2个NetworkManager线程的父进程。
添加-a标志还会打印每个进程或线程启动时使用的参数。例如,在您的输出中,我们可以看到NetworkManager是用一个参数--no-daemon启动的,dhclient也是用几个参数启动的。
这就是所有手册页的意思是“显示命令行参数”。
发布于 2019-01-22 04:46:38
参数是所有不是命令名本身的内容。例如,在
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这些值是C argv数组中在程序启动时给出的位置1和以后的值,或者是sys.argv[1..]在Python中中的值。
pstree手册所暗示的是,不使用 -a it的<#>只列出了每个程序的名称,而没有列出命令行中给出的任何其他部分。这就是您的两个示例所显示的:在第一个没有ModemManager的版本中列出了-a,而在-a版本中列出了ModemManager --filter-policy=strict。它不在乎“参数”是以-开头还是以它们所代表的内容开头。
有时程序在文档中区分“选项”、“标志”和“参数”,甚至区分“命令”,但对于系统来说,它们都只是参数。程序会将它们全部分配到一起,并自行决定如何处理它们,哪些属于每个类别。帮助一个人思考他们正在做的事情是有用的,但是它是纯粹的信息而不是强制的。因为pstree必须显示每个程序,所以它不知道他们如何看待自己的命令行,而且必须是非常通用的。
实际上,命令行的结构是
command-name argument-1 argument-2 argument-3...这些参数可以是-x,也可以是子命令或路径名,在command-name看到它们并决定要做什么之前,它们都是相同的。pstree以原始的形式看到它们,并在您要求时将它们报告给您。
https://askubuntu.com/questions/1111838
复制相似问题