<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[[实践OK]Linux的/proc/下面查看进程的启动命令及启动参数是哪个文件？cat命令查看ps看不到的整个命令行和相关环境变量。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Fri, 25 Jun 2021 02:40:03 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	cat /proc/1634/cmdline &#124; tr &#039;&#92;0&#039; &#039; &#039;<br/><br/>cat /proc/1634/cmdline<br/>/Data/apps/XXXXXXXXXNNNXXXX<br/><br/>没有空格。<br/><textarea name="code" class="php" rows="15" cols="100">
cat /proc/53670/cmdline &#124; tr &#039;&#92;0&#039; &#039; &#039;
python3 -u /root/TianyanDingAlarm2In1/elk_analysis.py
</textarea><br/><br/>`/proc/[pid]/cmdline` 文件中的命令行参数默认是通过 NULL 字符（`&#92;0`）分隔的，而不是空格。所以你看到的输出是没有空格的，这种格式是用来表示单个字符串的多个参数。<br/><br/>你可以使用 `tr` 命令将这些 NULL 字符（`&#92;0`）转换为空格（` `），使输出更易读。你可以运行以下命令：<br/><br/>```bash<br/>cat /proc/1634/cmdline &#124; tr &#039;&#92;0&#039; &#039; &#039;<br/>```<br/><br/>这会把命令行参数按空格分开，输出类似于你在 `ps aux` 或 `top` 命令中看到的格式。例如，输出可能会变为：<br/><br/>```<br/>/Data/apps/XXXXXXXXX NNNXXXX ZZZ<br/><br/>```<br/><br/>这样你就可以看到每个参数的正确格式。<br/><br/><br/>在 Linux 系统中，你可以通过访问 /proc/&lt;PID&gt;/cmdline 文件来查看进程的启动命令和参数，其中 &lt;PID&gt; 是进程的 ID。这个文件包含了进程启动时使用的完整命令行，参数之间用 null 字符（ASCII码值为0）分隔。<br/><br/>例如，你可以使用以下命令来查看特定进程的命令行参数：<br/>cat /proc/&lt;PID&gt;/cmdline<br/><br/>这将输出进程的启动命令及参数列表，以 null 字符分隔。<br/><br/>问：<br/>的确，cat /proc/45063/cmdline <br/>./multiupd-d<br/>这个实际参数-d前面有空格，如何分离出来<br/>答：<br/>在 `/proc/&lt;PID&gt;/cmdline` 中，命令行参数以 null 字符（ASCII码值为0）分隔。你可以通过读取该文件并以 null 字符分割内容来获得参数列表。在某些编程语言中，你可以按照 null 字符（ASCII码值为0）来分割字符串。<br/><br/>例如，在 Bash 中，你可以使用 `tr` 命令来将 null 字符替换成其他分隔符，然后查看参数列表：<br/><br/>```bash<br/>cat /proc/45063/cmdline &#124; tr &#039;&#92;0&#039; &#039;&#92;n&#039;<br/>```<br/><br/>这将把 null 字符替换成换行符，使得参数列表更易于阅读。<br/>ps -ef&#124;grep multi<br/>root&nbsp;&nbsp;&nbsp;&nbsp; 45055&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;0 11:41 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00:00:00 ./multiupd -d<br/>root&nbsp;&nbsp;&nbsp;&nbsp; 45063 45055&nbsp;&nbsp;0 11:41 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00:00:00 ./multiupd -d<br/><br/>cat /proc/45055/cmdline &#124; tr &#039;&#92;0&#039; &#039;&#92;n&#039;<br/>./multiupd<br/>-d<br/>cat /proc/45063/cmdline &#124; tr &#039;&#92;0&#039; &#039;&#92;n&#039;<br/>./multiupd<br/>-d<br/><br/><br/><br/><br/><br/>ps只能看到部分：<br/>root&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3195&nbsp;&nbsp;2205&nbsp;&nbsp;0 Jun19 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;00:00:13 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/0a8be205faf5aa1500e55e83e36a3027c626ae<br/><br/>cat查看：<br/>#cat /proc/3195/cmdline <br/>containerd-shim-namespacemoby-workdir/var/lib/containerd/io.containerd.runtime.v1.linux/moby/0a8be205faf5aa1500e55e83e36a3027c626aea234747a51c949ffb1a9f95c83-address/run/containerd/containerd.sock-containerd-binary/usr/bin/containerd-runtime-root/var/run/docker/runtime-runc-systemd-cgroup<br/><br/><br/><br/>二、执行程序的软链接：<br/>#ls -lart /proc/3195/exe <br/>lrwxrwxrwx 1 root root 0 Jun 25 10:06 /proc/3195/exe -&gt; /usr/bin/containerd-shim<br/><br/><br/><br/>三、环境变量：<br/>#cat /proc/3195/environ <br/>LANG=en_US.UTF-8PATH=/opt/containerd/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/binLD_LIBRARY_PATH=:/opt/containerd/libGOMAXPROCS=2<br/><br/><br/><br/>四、对应的fd编号：<br/>#ls /proc/3195/fd<br/>0&nbsp;&nbsp;1&nbsp;&nbsp;10&nbsp;&nbsp;11&nbsp;&nbsp;12&nbsp;&nbsp;13&nbsp;&nbsp;14&nbsp;&nbsp;15&nbsp;&nbsp;16&nbsp;&nbsp;17&nbsp;&nbsp;18&nbsp;&nbsp;19&nbsp;&nbsp;2&nbsp;&nbsp;20&nbsp;&nbsp;3&nbsp;&nbsp;4&nbsp;&nbsp;5&nbsp;&nbsp;6&nbsp;&nbsp;7&nbsp;&nbsp;8&nbsp;&nbsp;9<br/><br/>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]Linux的/proc/下面查看进程的启动命令及启动参数是哪个文件？cat命令查看ps看不到的整个命令行和相关环境变量。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>