init.d脚本中的top命令

时间:2014-05-08 22:46:07

标签: bash shell centos init.d

我有一个init.d脚本和一个bash文件。 init.d脚本执行我的bash。问题是当bash使用top命令时,变量uso总是为空。当我只执行脚本时,脚本工作正常。操作系统是CentOS。

bash脚本处理mysqld进程。当进程超过最小值时,脚本会写入日志。

这是我的bash代码

#!/bin/bash
echo "Inicio" >> /path/of/file.log
minimo=1
while true
do
    uso=$(top -n 1 | grep mysqld | awk '{ print $10 }')
    if [ -n "$uso" ]
    then
        echo "El uso es:    $uso" >> /path/of/file.log
        if [ $( awk -v uso=$uso -v minimo=$minimo 'BEGIN { if(uso>minimo) print 1; else print 0}' ) -eq 1 ]
        then
            echo $(date)" ------ "$uso >> /path/of/file.log
            sleep 5s
        fi
    fi
done

1 个答案:

答案 0 :(得分:1)

使用-b选项以批处理模式运行top。它通常需要访问终端,而init.d脚本不在交互式会话中。

uso=$(top -b -n 1 | awk '/mysqld/ { print $10 }')