例如。 bash 调试器是否支持附加到现有进程并检查当前状态?
或者我可以通过查看 /proc 中的 bash 进程条目轻松找到答案吗?有没有方便的工具来给出活动文件中的行号?
我不想必须终止并重新启动该进程。
这是在 Linux - Ubuntu 10.04 上。
我最近发现自己处于类似的境地。我有一个无法通过其他方式(例如参数等)识别的 shell 脚本
有多种方法可以了解有关正在运行的进程的更多信息,超出您的预期。
Use lsof -p $pid
查看打开了哪些文件,这可能会给您一些线索。请注意,某些文件虽然“已删除”,但脚本仍可以保持打开状态。只要脚本不关闭文件,它仍然可以读取和写入文件 - 并且文件仍然占用文件系统上的空间。
Use strace
主动跟踪脚本使用的系统调用。该脚本将读取脚本文件,因此您可以看到一些命令在执行之前被读取。寻找read
使用此命令的命令:
strace -p $pid -s 1024
这使得命令打印的字符串最长为 1024 个字符(通常,strace
命令会截断比这短得多的字符串)。
检查目录/proc/$pid
为了查看脚本的详细信息;特别注意,参见/proc/$pid/environ
这将为您提供由空值分隔的进程环境。要正确读取此“文件”,请使用以下命令:
xargs -0 -i{} < /proc/$pid/environ
你可以将其输入less
或将其保存在文件中。还有/proc/$pid/cmdline
但有可能这只会给你 shell 名称(-bash
例如)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)