一种方法
以某种方式
符合我的要求是组合设置
-x
随需应变
和
strace
,因为跟踪将被写入
STDERR
我可以从外面追踪到。
准备:修改脚本
可以
在将来遇到问题时,请在启动时运行以下代码:
function toggle_tracing {
if [ -z "$TRACE_ENABLED" ]; then
TRACE_ENABLED=1
set -x
else
unset TRACE_ENABLED
set +x
fi
}
trap toggle_tracing USR1
echo "run 'kill -SIGUSR1 $BASHPID' to activate tracing"
当您现在发现进程占用CPU数小时时,您可以通过发送信号将其设置为跟踪模式,并开始使用strace监控它
# sudo might not be necessary
sudo kill -SIGUSR1 <PID>
sudo strace -p <PID> 2>&1 | grep "write(2, \""
这将导致命令打印到您运行的终端
strace
在里面
write(2, "+ true\n", 7) = 7
write(2, "+ find /home/itsme\n", 20) = 20
write(2, "+ true\n", 7) = 7
write(2, "+ find /home/itsme\n", 20) = 20
write(2, "+ true\n", 7) = 7
write(2, "+ find /home/itsme\n", 20) = 20
write(2, "+ true\n", 7) = 7
write(2, "+ find /home/itsme\n", 20) = 20
write(2, "+ true\n", 7) = 7
write(2, "+ find /home/itsme\n", 20) = 20
...
(不过仍然没有行号)
顺便说一句,积分归我的一个朋友所有,他懒得建立自己的账户。