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

관련 정보