Linux   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 如何通过引号运行bash脚本大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在尝试为我的机器上运行的matlab作业安装一个轻量级内存分析器.有一个或零个matlab作业实例,但其进程ID经常更改(因为它实际上是由另一个脚本调用). 所以这是我放在一起记录内存使用情况的bash脚本: #!/bin/bash pid=`ps aux | grep '[M]ATLAB' | awk '{print $2}'` if [[ -n $pid ]] then \grep
我正在尝试为我的机器上运行的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)

大佬总结

以上是大佬教程为你收集整理的linux – 如何通过引号运行bash脚本全部内容,希望文章能够帮你解决linux – 如何通过引号运行bash脚本所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。