gpt4 book ai didi

linux - 正在运行的 bash 脚本卡在某处。我能找出它在哪一行吗?

转载 作者:IT王子 更新时间:2023-10-29 00:26:19 26 4
gpt4 key购买 nike

例如bash 调试器是否支持附加到现有进程并检查当前状态?

或者我可以通过查看/proc 中的 bash 进程条目轻松找出答案吗?有没有方便的工具可以在事件文件中给出行号?

我不想终止并重新启动进程。

这是在 Linux - Ubuntu 10.04 上。

最佳答案

我最近发现自己处于类似的境地。我有一个无法通过其他方式(例如参数等)识别的 shell 脚本

有很多方法可以比您预期的更多地了解正在运行的进程。

使用 lsof -p $pid 查看打开了哪些文件,这可能会给您一些线索。请注意,某些文件虽然“已删除”,但仍可以通过脚本保持打开状态。只要脚本不关闭该文件,它仍然可以从中读取和写入 - 并且该文件仍会占用文件系统上的空间。

使用strace 主动跟踪脚本使用的系统调用。该脚本将读取脚本文件,因此您可以在执行前看到一些已读取的命令。使用此命令查找 read 命令:

strace -p $pid -s 1024

这使得命令打印的字符串最长为 1024 个字符(通常,strace 命令会截断比这短得多的字符串)。

检查目录 /proc/$pid 以查看有关脚本的详细信息;请特别注意,请参阅 /proc/$pid/environ,它将为您提供由空值分隔的进程环境。要正确读取此"file",请使用此命令:

xargs -0 -i{} < /proc/$pid/environ

您可以将其通过管道传输到 less 中或将其保存在文件中。还有 /proc/$pid/cmdline 但它可能只会给你 shell 名称(例如 -bash)。

关于linux - 正在运行的 bash 脚本卡在某处。我能找出它在哪一行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4640794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com