我需要使用 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#*=}