
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#*=}