git: 8e5cd56604 - main - ja/handbook: Upadate basic chapter
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 21 Sep 2022 13:34:06 UTC
The branch main has been updated by ryusuke: URL: https://cgit.FreeBSD.org/doc/commit/?id=8e5cd5660452e6d9aed2882653c5db2b563761b7 commit 8e5cd5660452e6d9aed2882653c5db2b563761b7 Author: Ryusuke SUZUKI <ryusuke@FreeBSD.org> AuthorDate: 2022-09-21 13:33:32 +0000 Commit: Ryusuke SUZUKI <ryusuke@FreeBSD.org> CommitDate: 2022-09-21 13:33:32 +0000 ja/handbook: Upadate basic chapter 4225fc88f3 -> 0abcd2e1b8 --- .../content/ja/books/handbook/basics/_index.adoc | 118 ++++++++++----------- 1 file changed, 54 insertions(+), 64 deletions(-) diff --git a/documentation/content/ja/books/handbook/basics/_index.adoc b/documentation/content/ja/books/handbook/basics/_index.adoc index 950107971e..70d037be42 100644 --- a/documentation/content/ja/books/handbook/basics/_index.adoc +++ b/documentation/content/ja/books/handbook/basics/_index.adoc @@ -1264,7 +1264,7 @@ FreeBSD がメモリを使い果たしたときに、現在使用されていな FreeBSD のディスクはスライスに分けられます。 Windows(R) ではパーティションと呼ばれるもので、 スライスには 1 から 4 までの番号がつけられます。 -スライスは、ファイルシステムを含むパーティションに分けられます。 +これらのスライスは、ファイルシステムを含むパーティションに分けられます。 パーティションは文字で表されます。 スライス番号は 1 から始まり `s` を前につけられて、デバイス名の後に続きます。 @@ -1450,7 +1450,7 @@ nosuid:: `-A` を使うとルートファイルシステムはアンマウントしません。 [[basics-processes]] -== プロセス +== プロセスおよびデーモン FreeBSD はマルチタスクのオペレーティングシステムです。 動作中のプログラムはそれぞれ _プロセス_ と呼ばれます。 @@ -1464,9 +1464,24 @@ FreeBSD により実行されているシステムプロセスもたくさんあ 親プロセスとは、そのプロセスをスタートさせたプロセスのことです。 例えば、シェルがプロセスで、シェルから起動されるコマンドは、シェルを親プロセスとするプロセスとなります。 例外は man:init[8] という特別なプロセスです。 -`init` は FreeBSD がスタートするときに起動される最初のプロセスで、PID は常に 1 です。 +`init` は FreeBSD がスタートするときに起動される最初のプロセスで、PID は常に `1` です。 -システム上のプロセスを確認するには、man:ps[1] および man:top[1] を使ってください。 +ユーザから始終入力があるように設計されていないプログラムがあり、そういったプログラムは最初から端末と切り離されています。 +例えば、ウェブサーバはユーザからの入力ではなくウェブのリクエストを処理します。 +メールサーバも、 こういった種類のアプリケーションの一例です。 +このような種類のプログラムは、 _デーモン_ と呼ばれます。 +デーモンはギリシャ神話から来ており、目に見えないように役立つことをしてくれる善でも悪でもない実体を表します。 +このため、BSD のマスコットはスニーカーをはいてフォークを携えたかわいらしい姿のデーモンなのです。 + +通常デーモンとして動作するプログラムには末尾に "d" を持った名前をつける慣習があります。 +例えば、BIND は Berkeley Internet Name Domain ですが、 実際実行されるプログラムは `named` です。 +また、Apache ウェブサーバのプログラムは `httpd`、ラインプリンタスプーリングデーモンは `lpd` です。 +これは単なる命名に関する慣習です。 +例えば、Sendmail アプリケーションの主なメールデーモンは `sendmail` で、`maild` ではありません。 + +=== プロセスを確認する + +システム上で実行中のプロセスを確認するには、man:ps[1] または man:top[1] を使ってください。 現在動作中のプロセスのリスト、プロセスの PID やプロセスが使っているメモリの量、どういうコマンドラインで起動されたのかなどを表示させるには、man:ps[1] を使ってください。 man:top[1] を使用すると、動作中の全てのプロセスを表示できます。 数秒ごとに表示を更新するので、計算機が何をしているのかインタラクティブに知ることができます。 @@ -1477,21 +1492,9 @@ man:top[1] を使用すると、動作中の全てのプロセスを表示でき [source,shell] .... % ps - PID TT STAT TIME COMMAND - 298 p0 Ss 0:01.10 tcsh - 7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14) -37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14) -72210 p0 R+ 0:00.00 ps - 390 p1 Is 0:01.14 tcsh - 7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y - 6688 p3 IWs 0:00.00 tcsh -10735 p4 IWs 0:00.00 tcsh -20256 p5 IWs 0:00.00 tcsh - 262 v0 IWs 0:00.00 -tcsh (tcsh) - 270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16 - 280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16 - 284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc - 285 v0 S 0:38.45 /usr/X11R6/bin/sawfish + PID TT STAT TIME COMMAND +8203 0 Ss 0:00.59 /bin/csh +8895 0 R+ 0:00.00 ps</screen> .... man:ps[1] の出力はいくつかの列に整形されています。 @@ -1503,75 +1506,63 @@ PID は 1 から順に 99999 まで割り当てられ、その後足りなくな 多くのプログラムは、CPU 上で時間を使う必要があるまでかなりの時間を費すためです。 最後に、`COMMAND` はそのプログラムを起動するのに使われたコマンドとなります。 -man:ps[1] は表示する情報を変えるためのオプションをたくさんサポートしています。 +表示する情報を変更するオプションが用意されています。 いちばん便利なのは `auxww` でしょう。 `a` はすべてのユーザの動作中のプロセス全部についての情報を表示します。 -`u` はプロセスの所有者の名前をメモリ使用量と同様に表示します。 +`u` はプロセスの所有者のユーザ名とメモリ使用量を表示します。 `x` はデーモンプロセスについての情報を表示し、`ww` で、スクリーンに入りきらないほど長くなったコマンドラインでも省略せず、man:ps[1] に各プロセスの全コマンドラインを表示させます。 -man:top[1] の出力も同様です。 例は以下の通りです。 +man:top[1] の出力も同様です。 [source,shell] .... -% top -last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10 -47 processes: 1 running, 46 sleeping -CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle -Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free -Swap: 256M Total, 38M Used, 217M Free, 15% Inuse - - PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND -72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top - 7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14 - 281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA - 296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm - 175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd - 7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt -... +last pid: 9609; load averages: 0.56, 0.45, 0.36 up 0+00:20:03 10:21:46 +107 processes: 2 running, 104 sleeping, 1 zombie +CPU: 6.2% user, 0.1% nice, 8.2% system, 0.4% interrupt, 85.1% idle +Mem: 541M Active, 450M Inact, 1333M Wired, 4064K Cache, 1498M Free +ARC: 992M Total, 377M MFU, 589M MRU, 250K Anon, 5280K Header, 21M Other +Swap: 2048M Total, 2048M Free + + PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU COMMAND + 557 root 1 -21 r31 136M 42296K select 0 2:20 9.96% Xorg + 8198 dru 2 52 0 449M 82736K select 3 0:08 5.96% kdeinit4 + 8311 dru 27 30 0 1150M 187M uwait 1 1:37 0.98% firefox + 431 root 1 20 0 14268K 1728K select 0 0:06 0.98% moused + 9551 dru 1 21 0 16600K 2660K CPU3 3 0:01 0.98% top + 2357 dru 4 37 0 718M 141M select 0 0:21 0.00% kdeinit4 + 8705 dru 4 35 0 480M 98M select 2 0:20 0.00% kdeinit4 + 8076 dru 6 20 0 552M 113M uwait 0 0:12 0.00% soffice.bin + 2623 root 1 30 10 12088K 1636K select 3 0:09 0.00% powerd + 2338 dru 1 20 0 440M 84532K select 1 0:06 0.00% kwin + 1427 dru 5 22 0 605M 86412K select 1 0:05 0.00% kdeinit4 .... 出力は2つのセクションに分かれています。 -ヘッダ (最初の 5 行です) は動作している最新のプロセスの PID、システムの平均負荷 (システムがどれくらい忙しいかの指標)、システムの稼働時間 (最後の再起動からの時間) と現在の時刻を示します。 -ヘッダの中の他の数字は動作中のプロセスの数 (この場合 47 ですね)、使われているメモリとスワップ領域の量、そしてシステムが異なる CPU 状態に消費した時間と関係します。 +ヘッダ (最初の 5 または 6 行) は動作している最新のプロセスの PID、システムの平均負荷 (システムがどれくらい忙しいかの指標)、システムの稼働時間 (最後の再起動からの時間) と現在の時刻を示します。 +ヘッダの中の他の数字は動作中のプロセスの数、使われているメモリとスワップ領域の量、そしてシステムが異なる CPU 状態に消費した時間と関係します。 +ZFS ファイルシステムモジュールをロードしている場合には、`ARC` 行にはディスクではなくメモリキャッシュから読み込んだデータ量が表示されます。 ヘッダの下には、PID、ユーザ名、消費 CPU 時間とプロセスを起動したコマンドといった man:ps[1] の出力と同じような情報を持った行が続きます。 man:top[1] を使うとデフォルトでプロセスが使っているメモリ容量を表示します。 メモリ使用量の欄は 2 項目に分かれており、 一方は合計使用量、 そしてもう一方は実使用量です。 合計使用量はアプリケーションが必要としているメモリ量で、実使用量はその時点で実際に使われているメモリ量です。 -この例では、mutt がだいたい 8 MB の RAM を必要としていますが、 いまのところ 5 MB しか使っていないことが分かります。 man:top[1] は自動的に 2 秒ごとに画面を更新します。 `-s` 使うと更新間隔を変更することができます。 [[basics-daemons]] -== デーモン、シグナルとプロセス終了 - -エディタを使っている場合、エディタを操作してファイルを開くのは簡単です。 -このように操作できるのは、エディタにそういった機能があり、 かつエディタが _端末_ に関連づけられているからです。 -一方、ユーザから始終入力があるように設計されていないプログラムもあり、そういったプログラムは最初から端末と切り離されます。 -例えば、ウェブサーバはユーザからの入力ではなくウェブのリクエストを処理します。 -メールサーバも、 こういった種類のアプリケーションの一例です。 - -このようなプログラムは、 _デーモン_ と呼ばれます。 -デーモンはギリシャ神話から来ており、目に見えないように役立つことをしてくれる善でも悪でもない実体を表します。 -このため、BSD のマスコットはスニーカーをはいてフォークを携えたかわいらしい姿のデーモンなのです。 - -通常デーモンとして動作するプログラムには末尾に "d" を持った名前をつける慣習があります。 -BIND は Berkeley Internet Name Domain ですが、 実際実行されるプログラムは man:named[8] です。 -また、Apache ウェブサーバのプログラムは `httpd`、 ラインプリンタスプーリングデーモンは man:lpd[8] です。 -これは単なる命名に関する慣習です。 -例えば、Sendmail アプリケーションの主なメールデーモンは man:sendmail[8] で、`maild` ではありません。 +=== プロセスの終了 -デーモンや動作中のプロセスと通信する一つの方法は、man:kill[1] を用いて _シグナル_ を送信する方法です。 +動作中のプロセスもしくはデーモンと通信する一つの方法は、man:kill[1] を用いて _シグナル_ を送信する方法です。 送信可能なシグナルはたくさんあります。 特別な意味があるものもあれば、アプリケーションの文章に説明されているものもあります。 ユーザは自分が所有者となっているプロセスにのみシグナルを送ることができます。 他人のプロセスにシグナルを送ると、permission denied というエラーになるでしょう。 この例外は `root` ユーザで、 ルートユーザは誰のプロセスに対してもシグナルを送ることができます。 -FreeBSD もプロセスにシグナルを送ることができます。 -アプリケーションを下手に書いてしまい、予想外のメモリにアクセスしようとすると、FreeBSD はプロセスに _セグメンテーション違反_ シグナル (`SIGSEGV`) を送ります。 -ある程度の時間が経ったら man:alarm[3] システムコールを使って警告してもらうようなアプリケーションには、警告シグナル (`SIGALRM`) が送信されます。 +オペレーティングシステムもプロセスにシグナルを送ることができます。 +アプリケーションを下手に書いてしまい、予想外のメモリにアクセスしようとすると、FreeBSD はプロセスに "セグメンテーション違反" シグナル (`SIGSEGV`) を送ります。 +ある程度の時間が経ったら man:alarm[3] システムコールを使って警告してもらうように書かれているアプリケーションには、"警告" シグナル (`SIGALRM`) が送信されます。 プロセスを止めるためには2つのシグナル、`SIGTERM` か `SIGKILL` を使います。 `SIGTERM` は穏かにプロセスを終了させる方法です。 @@ -1579,11 +1570,10 @@ FreeBSD もプロセスにシグナルを送ることができます。 中断できない処理の途中だと、`SIGTERM` をプロセスが無視することもあるかもしれません。 プロセスは `SIGKILL` を無視することができません。 -これは、"なにをしていようが構わないから今すぐ止まれ" というシグナルです。 プロセスに `SIGKILL` を送ると、プロセスは通常その時点で止まります。 他に良く使われるシグナルには、`SIGHUP`、`SIGUSR1` と `SIGUSR2` があります。 -これらは一般的な用途のシグナルで、このシグナルが送信されたときの応答は、アプリケーション毎に異なります。 +これらは一般的な用途のシグナルなので、このシグナルが送信されたときの応答は、アプリケーション毎に異なります。 例として、ウェブサーバの設定ファイルを変更後、ウェブサーバに設定を再読み込みさせる必要があります。 `httpd` を再起動するとウェブサーバは一瞬ながら停止してしまいます。 @@ -1625,7 +1615,7 @@ PID を打ち間違えると、間違ったプロセスにシグナルを送っ 多くのシェルは `kill` を組み込みコマンドとして備えています。 つまり、[.filename]#/bin/kill# を実行するのではなく、シェルが直接シグナルを送ります。 シェルが違うと送るシグナルの名前の指定の仕方が違うことに注意してください。 -シェルによって異なるシグナルの指定の仕方を全部覚えようとはせずに、 `/bin/kill ...` コマンドを直接使うほうが簡単です。 +シェルによって異なるシグナルの指定の仕方を全部覚えようとはせずに、 `/bin/kill` を直接使うほうが簡単です。 ====== ====