![检查 fs.mqueue.msg_max 是否必须增加并执行](https://linux22.com/image/13588/%E6%A3%80%E6%9F%A5%20fs.mqueue.msg_max%20%E6%98%AF%E5%90%A6%E5%BF%85%E9%A1%BB%E5%A2%9E%E5%8A%A0%E5%B9%B6%E6%89%A7%E8%A1%8C.png)
我需要使用 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#*=}