加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何通过引号运行bash脚本

发布时间:2020-12-13 23:09:13 所属栏目:Linux 来源:网络整理
导读:我正在尝试为我的机器上运行的matlab作业安装一个轻量级内存分析器.有一个或零个matlab作业实例,但其进程ID经常更改(因为它实际上是由另一个脚本调用). 所以这是我放在一起记录内存使用情况的bash脚本: #!/bin/bashpid=`ps aux | grep '[M]ATLAB' | awk '{p
我正在尝试为我的机器上运行的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 ./script.sh

但在这种情况下我只收到:

no pid

请注意,我知道matlab工作仍在运行,因为我可以在顶部看到相同的pid,而且,我知道每个matlab工作需要几个小时才能完成.

我很确定设置pid时的引号有问题.我只是无法弄清楚如何解决它.谁知道我做错了什么?

PS.
在watch的手册页中,它表示命令由sh -c执行.我确实像sh -c./ script一样运行我的脚本,它运行得很好,但是手表没有.

解决方法

这个

pid=`ps aux | grep '[M]ATLAB' | awk '{print $2}'`

可以改为:

pid=$(pidof MATLAB)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读