我正在尝试为在我的机器上运行的 matlab 作业创建一个轻量级的内存分析器。有一个或零个 matlab 作业实例,但它的进程 ID 经常更改(因为它实际上是由另一个脚本调用的)。
所以这是我用来记录内存使用情况的 bash 脚本:
#!/bin/bash
pid=`ps aux | grep '[M]ATLAB' | awk '{print $2}'`
if [[ -n $pid ]]
then
\grep VmSize /proc/$pid/status
else
echo "no pid"
fi
当我像这样在 bash 中运行这个脚本时:
./script.sh
它工作正常,给我以下结果:
VmSize: 1289004 kB
这正是我想要的。
现在,我想定期运行它。所以我用 运行它watch
,如下所示:
watch ./script.sh
但在这种情况下,我只收到:
no pid
请注意,我知道 matlab 作业仍在运行,因为我可以在相同的 pid 上看到它top
,此外,我知道每个 matlab 作业需要几个小时才能完成。
我很确定设置 pid 时的引号有问题。我只是不知道如何解决它。有人知道我在做什么错吗?
PS。在 的手册页中watch
,它说命令由sh -c
. 我确实运行了我的脚本sh -c ./script
,它工作得很好,但watch
没有。