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