我们有 2 台 Linux 服务器,一台是 SLES 11 SP3,另一台是 SLES 12 SP2。
在 Sles 11 sp3 中,当您启动 $PID 2200 的批处理脚本(名称“test.sh”)时,您可以转到
/proc/2200/cmdline
你会看到类似的东西
/bin/shtest.sh
所以你可以在这里获取脚本名称。
在 Sles 12 sp2 中,当您执行完全相同的操作时,您只会看到
-bash
将名称包含在其中对我来说是件好事,这样我就可以获得父脚本的名称(使用 $PPID)。
但现在 scipt 文件名已经不存在了。
现在有没有其他方法可以获取父脚本的名称?
预先非常感谢。
编辑:在新服务器(12 sp 2)上,/proc/“id”中唯一找到名称的位置是“/proc/”id“/fd”
fstest:/proc/11248/fd # ls -l
total 0
lrwx------ 1 root root 64 Feb 9 15:52 0 -> /dev/pts/3
lrwx------ 1 root root 64 Feb 9 15:52 1 -> /dev/pts/3
lrwx------ 1 root root 64 Feb 9 15:52 2 -> /dev/pts/3
lr-x------ 1 root root 64 Feb 9 15:52 254 -> /batch/test1.sh
lrwx------ 1 root root 64 Feb 9 15:52 255 -> /dev/pts/3
但我不知道我应该用它做什么,“254”是什么?谢谢
答案1
我找到了答案:
在“/proc/”id“/fd 中,您有文件描述符(见上文)。
0、1、2 总是“in”、“out”、“err”(不要顺序不对)。
似乎 254 总是链接到脚本。