- プログラムがアクセスするファイルや標準入出力などをOSが識別するために用いる識別子。
- ファイルディスクリプタには、識別子とともにファイル名、ファイルサイズ、プログラムが操作中のファイル内の位置、ファイル作成、更新日時などの情報が含まれており、OSは識別子によってどのファイルを操作するかを判断する。
- Solaris では、ユーザーアカウント毎に制限を行う。
- リソース制限は、現在の (soft) 制限値と最大 (hard) 制限値の2 つの値のセットになっている。
- ハード制限は、 /etc/system で変更することができる。
Linux
cat /proc/sys/fs/file-nr
- 左から、割り当て済みファイルディスクリプタ 、使用中ファイルディスクリプタ 、最大割り当て可能ファイルディスクリプタの順にて表示。
Solaris
ハードリミット
ulimit -Hn
ソフトリミット
ulimit -Sn
プロセス毎のFD情報を表示
pfiles プロセスID
- 指定プロセスのファイルディスクリプタ情報が表示。
現在の制限値の表示(solaris10)
# limit cputime 制限なし filesize 制限なし datasize 制限なし stacksize 8192 kbytes coredumpsize 制限なし descriptors 256 memorysize 制限なし
強い制限値の表示(solaris10)
# limit -h cputime 制限なし filesize 制限なし datasize 制限なし stacksize 制限なし coredumpsize 制限なし descriptors 65536 memorysize 制限なし
コマンド | 説明 |
cputime | プロセス当たりの最大 CPU 使用時間 (秒) |
filesize | 最大の単一ファイル容量。ファイルシステムのサイズに制限されています。 |
datasize | K バイト単位のプロセスのヒープの最大サイズ |
stacksize | プロセスの最大スタックサイズ。デフォルトのスタックサイズは 2^64 です。 |
coredumpsize | 最大コアダンプのファイルサイズ。ファイルシステムのサイズに制限されます。 |
memorysize | 仮想記憶の最大サイズ |
cronプロセスにおけるファイルディスクリプタ情報
# pfiles 287
287: /usr/sbin/cron
Current rlimit: 256 file descriptors
0: S_IFCHR mode:0666 dev:333,0 ino:6815752 uid:0 gid:3 rdev:13,2 ←標準入力
O_RDONLY|O_LARGEFILE
/devices/pseudo/mm@0:null
1: S_IFREG mode:0600 dev:32,4 ino:10405 uid:0 gid:0 size:16556 ←標準出力(/var/cron/log)
O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE
/var/cron/log
2: S_IFREG mode:0600 dev:32,4 ino:10405 uid:0 gid:0 size:16556 ←標準エラー出力(/var/cron/log)
O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE
/var/cron/log
3: S_IFIFO mode:0600 dev:32,0 ino:27217 uid:0 gid:0 size:0 ←cronデーモンが使う特別な名前つきパイプファイル
O_RDWR|O_LARGEFILE
/etc/cron.d/FIFO
4: S_IFIFO mode:0000 dev:341,0 ino:142 uid:0 gid:0 size:0
O_RDWR|O_NONBLOCK
5: S_IFDOOR mode:0444 dev:342,0 ino:58 uid:0 gid:0 size:0
O_RDONLY|O_LARGEFILE FD_CLOEXEC door to nscd[154]
/var/run/name_service_door
6: S_IFIFO mode:0000 dev:341,0 ino:142 uid:0 gid:0 size:0
O_RDWR
287: /usr/sbin/cron
Current rlimit: 256 file descriptors
0: S_IFCHR mode:0666 dev:333,0 ino:6815752 uid:0 gid:3 rdev:13,2 ←標準入力
O_RDONLY|O_LARGEFILE
/devices/pseudo/mm@0:null
1: S_IFREG mode:0600 dev:32,4 ino:10405 uid:0 gid:0 size:16556 ←標準出力(/var/cron/log)
O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE
/var/cron/log
2: S_IFREG mode:0600 dev:32,4 ino:10405 uid:0 gid:0 size:16556 ←標準エラー出力(/var/cron/log)
O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE
/var/cron/log
3: S_IFIFO mode:0600 dev:32,0 ino:27217 uid:0 gid:0 size:0 ←cronデーモンが使う特別な名前つきパイプファイル
O_RDWR|O_LARGEFILE
/etc/cron.d/FIFO
4: S_IFIFO mode:0000 dev:341,0 ino:142 uid:0 gid:0 size:0
O_RDWR|O_NONBLOCK
5: S_IFDOOR mode:0444 dev:342,0 ino:58 uid:0 gid:0 size:0
O_RDONLY|O_LARGEFILE FD_CLOEXEC door to nscd[154]
/var/run/name_service_door
6: S_IFIFO mode:0000 dev:341,0 ino:142 uid:0 gid:0 size:0
O_RDWR
- システムコールmknodにて指定されるファイルタイプ
値 | 説明 |
S_IFREG | 通常のファイル (空のファイルとして作成される) |
S_IFCHR | キャラクタスペシャルファイル |
S_IFBLK | ブロックスペシャルファイル |
S_IFIFO | O (名前付きパイプ) |
S_IFSOCK | Unix ドメインソケット |
「ファイルアクセスモード」 | 「ファイル作成フラグ」 | 「ファイル状態フラグ」
ファイルアクセスモード
値 | 説明 |
O_RDONLY | 読み込み専用 |
O_WRONLY | 書き込み専用 |
O_RDWR | 読み書き用 |
ファイル作成フラグ
値 | 説明 |
O_CREAT | ファイルが存在しなかった場合は作成 (create) する。modeでアクセス許可 (permission) を指定する。 |
O_EXCL | この呼び出しでファイルが作成されることを保証する。 |
O_NOCTTY | |
O_TRUNC | ファイルが既に存在し、通常ファイルであり、書き込み可モードでオープンされている (つまり、 O_RDWRまたはO_WRONLY の) 場合、長さ 0 に切り詰め (truncate) られる。 |
ファイル状態フラグ
- fcntl(2) を使ってその内容を取得したり (場合によっては) 変更したりできる。
値 | 説明 |
O_LARGEFILE | (LFS) off_t ではサイズを表せない (だだし off64_t ではサイズを表せる) ファイルをオープン可能にする。 |
O_APPEND | ファイルを追加 (append) モードでオープンする。 |
O_NONBLOCK | 可能ならば、ファイルは非停止 (non-blocking) モードでオープンされる。 |
プロセスのプロセスIDを表示する。
pgrep プロセス名
プロセスでの使用ファイルディスクリプタ数カウント
# pfiles 25498 | perl -lne 'print if /^(\s+)([0-9]+)/' | wc -l 111
プロセスの詳細情報を表示する。
/usr/bin/pcommand プロセスID
pcomand一覧
コマンド | 説明 | 出力例 |
pcred | プロセスの資格情報を表示する | 10994: e/r/suid=5001 e/r/sgid=1005 |
pfiles | プロセス内で開いているファイルに関する fstat 情報と fcntl 情報を表示する | |
pflags | /proc 追跡フラグ、保留状態のシグナルと保持状態のシグナル、他の状態情報を出力する | |
pldd | プロセスにリンクされている動的ライブラリを表示する | |
pmap | 各プロセスのアドレス空間マップを表示する | |
psig | 各プロセスのシグナルの動作とハンドラを表示する | |
prun | 各プロセスを開始する | |
pstack | 各プロセス内の LWP の 16 進とシンボルのスタックトレースを出力する | |
pstop | 各プロセスを停止する | |
ptime | microstate アカウントを使用してプロセスの時間を測定する | |
ptree | プロセスを含むプロセスツリーを表示する | |
pwait | プロセス終了後の状態情報を表示する | |
pwdx | プロセスの現在の作業ディレクトリを表示する |
タグ
最新コメント