Linuxの識者がよく使うstrace(1)やopen(2)の数字の意味は?
いちいち説明されないので知らない人もいるかもいるかもしれません。
Linuxの話をしていると識者が strace(1) とかopen(2)とか後ろに(数字)をつけることがあります。この数字はマニュアルの章の番号です。1がコマンド、2がシステムコール、3がライブラリです。コマンドとライブラリで名前が被っているものがあるために区別します。
例えば、printf(1)はコマンドでprintf(3)はライブラリです。それぞれのman を見るためには章番号を明示して、
man 1 printf
や man 3 printf
とします。
man man
としてmanコマンドのマニュアルを見ると、全ての章の説明があります。
The table below shows the section numbers of the manual followed by the types of pages they contain.
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions, e.g. /etc/passwd
6 Games
7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7), man-pages(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]
例
$ man ssh
SSH(1) BSD General Commands Manual SSH(1)
NAME
ssh — OpenSSH remote login client
一番最初の行にSSH(1)
とありますが、これはマニュアルの第1章にあることを示しています。
SEE ALSO
scp(1), sftp(1), ssh-add(1), ssh-agent(1), ssh-argv0(1), ssh-keygen(1), ssh-keyscan(1), tun(4), ssh_config(5),
ssh-keysign(8), sshd(8)
SEE ALSO のところにずらっと関連するものが並んでいます。括弧の中の数字がマニュアルの第何章にあるものかを示しています。
これらの作法はLinuxのオリジナルではなくてUNIXの文化を継承しています。
(心の中での)読み方
ssh(1) -> ssh(というコマンド)
open(2) -> open(というシステムコール)
fopen(3) -> fopen(というライブラリ)
tun(4) -> tun(というデバイスファイル)
ssh_config(5) -> ssh_config(という設定ファイル)
sshd(8) -> sshd(という管理用コマンド)
識者はこれを冗長にならないようにコンパクトに書いているわけですね。
例2 (2023/02/20追記)
man open
とすると xdg-open(1)
のページが表示されてしまいます。(見たかったのはこれじゃない!)
システムコールのopen
を見たい場合にはman 2 open
とします。
また、man open.2
man 'open(2)'
でもいけますが、私はman 2 open
を使っています。
Discussion