2013-04-22 49 views
2

在我的一台Linux服务器上,我有一个执行一些控制的脚本。 有没有办法找出这个脚本被调用的地方?这可以在 另一个脚本,cobol程序,crontab,... 打开他们每一个将需要很长时间。是一个叫做某处的脚本

+0

您可以通过'ps -ef | grep your_script'。 – fedorqui 2013-04-22 12:57:32

+0

然后我只会看到正在运行的进程。这些脚本运行不到一分钟。我认为它只能每天或每周运行一次。 – pistach 2013-04-22 12:59:53

+0

对此有任何猜测吗?名称,涉及的文件,用户执行它? – fedorqui 2013-04-22 13:00:36

回答

0

grep的吧:

  • grep -lr yourscript/etc/opt/anotherlikleydir

  • 做不到这一点,搜索整个系统:grep的-lr yourscript/

编辑:

  • 做不到这一点,在二进制搜索过:grep的-lar yourscript/

  • 如果没有这样做,该脚本要么由登录用户执行,要么由脚本远程登录执行......如果是这种情况,请尝试peachykeen的方法并编辑脚本...以及为什么不转储ps axf也是一个日志。

+0

作为一个方面说明:这是非常微不足道的unix东西。你可能应该投资一本好的初学者书,或者因为你似乎负责运行服务器,找一个培训课程。 – KarlP 2013-04-22 13:31:48

+0

他想找到对脚本的引用,而不是实际的脚本。 – KarlP 2013-04-23 10:06:38

1

如果你可以修改脚本,放在一个ps线获取父PID,ps再次和grep父PID得到命令,然后登录到文件。

回来一个星期左右,你应该有触发你的脚本的命令。如果它是嵌套的东西,你可能想要递归或相似。

要做到这一点而不修改脚本,您需要一个观察者脚本/程序来检查对脚本文件的访问,或者每隔一段时间调用ps。但是,如果您有这种访问权限,只需修改脚本可能会更容易。

编辑:显然的命令来获得它的父PID和命令,没有一边喊ps,看起来像:

ps -p $$ -o ppid= 
cat /proc/<pid>/cmdline 

from jweyrich's answer here