我有一个unix脚本。它已被其他一些脚本调用,没有适当的参数。有没有办法找到来电者的名字? grep没有帮助,因为脚本的名字通过几个脚本传递并动态调用。我想获得最终调用脚本的脚本?无论如何?获取脚本的调用者名称
2
A
回答
4
没有,没有完全可靠的UNIX进程知道事后什么进程产生了。当您的脚本(其sh
解释器)为execve()
'd时,其父代可能已终止或用其他程序映像替换自己。
也就是说,您的脚本可以保持冷静,并根据流程表和自己的环境进行合理的猜测。
ps -o args= $PPID
应该可移植地向您显示脚本父级的命令行。这通常会起作用。
如果$ PPID == 1,则表示您已成为孤儿,init
是您的养父母。 ps -o uid-,gid=,pgid=,tty= $$
将显示您的脚本的用户和组ID,进程组ID和控制终端。这些通常直接从父项继承而不需要修改,因此可以稍微挖掘一下,即使父项本身已经终止,也可以帮助找到产生群组的会话。
1
您可以使用允许跟踪系统调用的strace
实用程序。
这里是几个中的一个使用示例上this site:
$ strace ls
execve("/bin/ls", ["ls"], [/* 21 vars */]) = 0
brk(0) = 0x8c31000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb78c7000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=65354, ...}) = 0
...
...
...
相关问题
- 1. QScriptEngineAgent - 获取被调用者名称
- 2. 如何获取调用bash脚本的别名名称
- 3. 如何获取调用蝙蝠脚本的名称
- 4. 如何获取调用python函数的脚本名称?
- 5. 如何获取从中调用脚本的页面名称
- 6. Powershell - 获取点源函数中调用脚本的脚本名称
- 7. 获取父shell脚本的名称
- 8. 从另一个脚本调用时获取当前脚本名称
- 9. 在Powershell中获取脚本名称
- 10. PHP获取调用者页面的名称
- 11. ASP.NET SignalR:如何获取特定调用者的组名称?
- 12. 获取调用者所在队列的名称,Twilio
- 13. 使用HTML5获取iPad的所有者名称/设备名称
- 14. 获取调用从调用的脚本
- 15. 在BASH脚本中获取git repo名称和github用户名?
- 16. 获取服务器名称+文件夹名称(无脚本名称)
- 17. 获取用于脚本的当前分支的名称
- 18. 获取调用方法的名称javascript
- 19. JavaScript - 获取调用函数的名称
- 20. 获取调用方法的名称
- 21. 如何获取R脚本文件名称时调用其中的函数?
- 22. 为Outlook交换用户获取VB脚本中userproperties的名称
- 23. 如何获取调用者的文件名,方法名称以python
- 24. 谷歌应用程序脚本获取用户ID /名称
- 25. 获取调用函数的python脚本的文件名
- 26. zsh:获取调用函数的脚本的文件名
- 27. 如何获取调用方法名称?
- 28. 如何获取调用方法名称?
- 29. 获取列显示月份名称谷歌应用脚本
- 30. 如何从签名文件中获取签名者的名称
如果OP知道什么程序要“strace”,OP就已经知道哪个程序叫做他的脚本。 – pilcrow