linux - 从 shell 脚本运行时,top 和 grep 不输出任何内容
问题描述
我正在尝试创建 ssh 到远程服务器的 shell 脚本并在那里运行脚本并在本地服务器中打印输出,但是当我在本地服务器中运行脚本时,它大部分时间什么都不输出并且很少输出数据:
Mule: CPU > % RAM > %
当我在本地服务器中通过命令行 ssh 到远程服务器并运行脚本时,它会在命令行中正常输出:
Mule: CPU > 39.0% RAM > 8.1%
本地服务器中的脚本
#!/bin/bash
echo -e '\r'
echo 'leg3'
echo -e '\r'
ssh -qT appread@${remote} << EOF
source /home/appread/Process_mon.sh
exit
EOF
远程服务器中的脚本:
#!/bin/bash
mulecpu=$(top -b -n 1 -c | grep -P '.*[j]ava.*mule.*'| awk '{print $9}')
muleram=$(top -b -n 1 -c | grep -P '.*[j]ava.*mule.*'| awk '{print $10}')
m=$(echo 'Mule: CPU > '$mulecpu'% RAM > '$muleram'% ')
echo $m
解决方案
如果你top
没有运行-w
,它的输出可能会被截断,所以你grep
可能会失败。
添加-w 512
或类似以最大化输出的宽度:
#!/bin/bash
top -b -n 1 -c -w 512 |\
awk '/[j]ava.*mule/ { printf "Mule: CPU > %s%% RAM > %s%%\n",$9,$10 }'
推荐阅读
- php - CodeIgniter 事务 - trans_status 和 trans_complete 返回 true 但没有提交
- javascript - 如何使用 indexOf() 检查我的数组中的字符串是否部分匹配另一个数组中的字符串?
- timestamp - 当其粒度以微秒为单位时,将 startAfter/startAt 与 orderBy Firestore 的时间戳一起使用是否安全?
- javascript - Express / Handlebars - 无法访问请求对象
- python - Pandas 数据框可以在网页上加载多少数据?
- javascript - 用户点击javascript后刷新页面
- javascript - 如果有超过3个具有相同x位置的jquery将类添加到所有元素
- ios - 如何根据另一个数组元素更新数组的所有对象
- javascript - 匹配两个数组中的值并返回过滤数组的数组方法
- php - Laravel 和 jwt-auth。如何检查用户电子邮件是否经过验证