检查 fs.mqueue.msg_max 是否必须增加并执行

检查 fs.mqueue.msg_max 是否必须增加并执行

我需要使用 bash 脚本运行一个程序。该程序可能需要比默认消息队列更大的消息队列。

我知道我可以通过以下方式增加它:

sudo sysctl fs.mqueue.msg_max=3000

例如,我可以通过以下方式检查:

echo  "$(sysctl fs.mqueue.msg_max)"

例如,它将打印fs.mqueue.msg_max = 100"

if如果小于阈值,我需要创建一个条件来增加大小(否则不执行任何操作)。

我期望它看起来像:

queue_size=$(sysctl fs.mqueue.msg_max)

if (($queue_size < 3000))
then
    sudo sysctl fs.mqueue.msg_max 3000
else
    echo "message queue large enough at $queue_size"
fi

但这返回:

((: fs.mqueue.msg_max = 200 < 3000: syntax error: invalid arithmetic operator (error token is ".mqueue.msg_max = 200 < 3000")

收到queue_size的对象不是队列大小,而是我不理解也不知道如何操作的对象。

答案1

您只需从输出中提取数字。您可以通过以下方式执行此操作awk

queue_size=$(sysctl fs.mqueue.msg_max | awk -F= '{print $2}')

或者cut

queue_size=$(sysctl fs.mqueue.msg_max | cut -d= -f2)

或者简单地使用 bash 参数扩展:

queue_size=$(sysctl fs.mqueue.msg_max)
queue_size=${queue_size#*=}

相关内容