标题:[实践OK]Linux的/proc/下面查看进程的启动命令及启动参数是哪个文件?cat命令查看ps看不到的整个命令行和相关环境变量。 出处:向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除 时间:Fri, 25 Jun 2021 10:40:03 +0000 作者:jackxiang 地址:https://jackxiang.com/post/11022/ 内容: 在 Linux 系统中,你可以通过访问 /proc//cmdline 文件来查看进程的启动命令和参数,其中 是进程的 ID。这个文件包含了进程启动时使用的完整命令行,参数之间用 null 字符(ASCII码值为0)分隔。 例如,你可以使用以下命令来查看特定进程的命令行参数: cat /proc//cmdline 这将输出进程的启动命令及参数列表,以 null 字符分隔。 问: 的确,cat /proc/45063/cmdline ./multiupd-d 这个实际参数-d前面有空格,如何分离出来 答: 在 `/proc//cmdline` 中,命令行参数以 null 字符(ASCII码值为0)分隔。你可以通过读取该文件并以 null 字符分割内容来获得参数列表。在某些编程语言中,你可以按照 null 字符(ASCII码值为0)来分割字符串。 例如,在 Bash 中,你可以使用 `tr` 命令来将 null 字符替换成其他分隔符,然后查看参数列表: ```bash cat /proc/45063/cmdline | tr '\0' '\n' ``` 这将把 null 字符替换成换行符,使得参数列表更易于阅读。 ps -ef|grep multi root 45055 1 0 11:41 ? 00:00:00 ./multiupd -d root 45063 45055 0 11:41 ? 00:00:00 ./multiupd -d cat /proc/45055/cmdline | tr '\0' '\n' ./multiupd -d cat /proc/45063/cmdline | tr '\0' '\n' ./multiupd -d ps只能看到部分: root 3195 2205 0 Jun19 ? 00:00:13 containerd-shim -namespace moby -workdir /var/lib/containerd/io.containerd.runtime.v1.linux/moby/0a8be205faf5aa1500e55e83e36a3027c626ae cat查看: #cat /proc/3195/cmdline 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 二、执行程序的软链接: #ls -lart /proc/3195/exe lrwxrwxrwx 1 root root 0 Jun 25 10:06 /proc/3195/exe -> /usr/bin/containerd-shim 三、环境变量: #cat /proc/3195/environ LANG=en_US.UTF-8PATH=/opt/containerd/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/binLD_LIBRARY_PATH=:/opt/containerd/libGOMAXPROCS=2 四、对应的fd编号: #ls /proc/3195/fd 0 1 10 11 12 13 14 15 16 17 18 19 2 20 3 4 5 6 7 8 9 Generated by Jackxiang's Bo-blog 2.1.1 Release