检测哪些脚本正在使用旧的解释器

我有几个Debian计算机和一些近乎孤立的脚本解释器,例如/bin/bash3/usr/bin/perl510 。 我怎样才能发现那些仍然有上述口译员的脚本?

 #!/bin/bash3 

要么

 #!/usr/bin/perl510 

recursionsearch文件系统并不是一个真正可行的select。 重命名解释器以使脚本失败也不在卡片中。

我成功地使用incrond作为incrond的root来检测这些老解释器的用法 。 从那里我打电话给一个简单的shell脚本来了解更多,但是PPID是incrond的。 fuserlsof没有返回任何东西。

 #!/bin/bash LOG=/tmp/icc.log echo "PID is $$" >> ${LOG} echo "PPID is ${PPID}" >> ${LOG} echo "\$1 is ${1}" >> ${LOG} echo "fuser ${1}" >> ${LOG} fuser ${1} >> ${LOG} echo >> ${LOG} echo "lsof ${1}" >> ${LOG} lsof ${1} >> ${LOG} echo >> ${LOG} 

像这样创build一个包装脚本:

 #!/bin/sh echo "`date` `whoami` $0 $*" >> /tmp/bash3_use.log /bin/bash3.bin "$@" 

然后将bash3重命名为bash3.bin并将该脚本命名为“/ bin / bash3”

您可能需要logging更多信息,例如工作目录。