shell 脚本 Debug 技巧 命令替换分析某个命令的调用链

具体操作方式如下:

# mv  /usr/bin/test /usr/bin/test.bak 

# 脚本内容如下:

#!/bin/bash
pstree -l -s -p $$  >> /tmp/who.log
echo $@   >> /tmp/who.log
/usr/bin/test.bak $@    

# 将该脚本给执行权限命名为 /usr/bin/test  

pstree -l -s -p $$ >> /tmp/who.log

命令详解

  • pstree:显示进程树。
  • -l:显示完整的命令行,不截断。
  • -s:显示到根进程为止的祖先进程链。
  • -p:显示进程的 PID。
  • $$:表示当前脚本进程的 PID。

作用

将当前脚本进程的祖先进程树(包括所有 PID)以完整格式追加写入到 /tmp/who.log,可用于审计脚本是由谁、通过何种路径调用的,比如从哪个终端或服务启动的

echo $@ >> /tmp/who.log

说明:$@:表示传递给脚本的所有参数,按原样展开。

作用:记录调用脚本时传入的命令行参数。

本文版权归原作者zhaofujian所有,采用 CC BY-NC-ND 4.0 协议进行许可,转载请注明出处。

发表评论