다음을 사용하여 cgroup2의 메모리 제한을 설정하려고 합니다.
echo 4G > memory.max
이것은 내 노트북에서는 잘 작동하지만 내 서버에서는 무엇을 쓰든(쓰기가 작동하지 않더라도) 항상 반환합니다 cat memory.max
.0
max
0
여기서 무슨 일이 일어나고 있으며 어떻게 해결할 수 있습니까?
답변1
문제는 echo를 사용할 때 후행 개행 문자로 인해 발생하며, 이는 0
.
예를 들어:
$ cat memory.max
max
$ echo 4G > memory.max
$ cat memory.max
0
$ echo -n 4G > memory.max
$ cat memory.max
4294967296
$ echo max > memory.max
$ cat memory.max
0
$ echo -n max > memory.max
$ cat memory.max
max
일반적으로 개행 문자와 함께 사용해야 하지만 어떤 문자에 따라 달라집니다.도서관사용하고 있는 버전입니다.
예를 들어, glibc가 있는 시스템에서는 strace echo 4G
다음이 반환됩니다.
...
write(1, "4G\n", 34G
) = 3
...
그러나 musl-libc를 사용하면 다음과 같은 결과가 나타납니다.
...
writev(1, [{iov_base="4G", iov_len=2}, {iov_base="\n", iov_len=1}], 24G
) = 3
...