いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

システムの設定値とか制限値を取得 (getconf, linux)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。たまに使いたいときにコマンドの名前忘れているのでここにメモメモ。。。

たまに、システムの設定値を見たいときがあります。例えばページサイズとかオープンできるファイル数の最大数とか。

linuxだと以下のコマンドで調べられます。

$ getconf PAGESIZE
4096

getconf コマンドというのがあって、引数に知りたいキー名を指定すると値を教えてくれます。

どんなキーを指定できるのかを知りたい場合は

$ getconf -a

とすると全部出力してくれます。いっぱい出ますので、ページャとか使わないと出力が流れてしまいますが。

個人的にたまに利用するのが以下のキーですね。

  • _NPROCESSORS_ONLN
    • プロセッサ数
  • NAME_MAX
    • ファイル名の最大長
    • コマンドは getconf NAME_MAX / と後ろに / をつける必要あります
  • PATH_MAX
    • パスの最大長
    • こちらも NAME_MAX と同様に後ろに / をつける必要があります

あと、これは余談ですがC言語の場合は sysconf 関数や pathconffpathconf関数が同じことをしてくれます。unistd.h にプロトタイプ宣言されていますね。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void) {
        // getconf ARG_MAX
        long arg_max = sysconf(_SC_ARG_MAX);
        printf("ARG_MAX=%ld\n", arg_max);

        // getconf NAME_MAX /
        long name_max = pathconf("/", _PC_NAME_MAX);
        printf("NAME_MAX=%ld\n", name_max);

        // getconf PATH_MAX /
        long path_max = pathconf("/", _PC_PATH_MAX);
        printf("PATH_MAX=%ld\n", path_max);

        return EXIT_SUCCESS;
}
$ gcc main.c
$ ./a.out
ARG_MAX=2097152
NAME_MAX=255
PATH_MAX=4096

参考情報


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。