バックグラウンド ジョブとして実行する
もうひとつ、nohup は実行したプログラムを自動的にバックグラウンド ジョブにするものではありません。バックグラウンドで実行するなら & を付けて実行するか bg コマンドで移行させましょ
そのプログラムが,どの端末から実行されているかを表わす情報です.
TTY の項に「pts/0」とあれば,そのプログラムは「/dev/pts/0」というデバイスに割り当てられている端末から実行されています(「/dev/」の部分が省略されています).
なお,伝統的には「tty」で始まる端末は物理端末(本体キーボードと本体ディスプレイの組,もしくはシリアルケーブルで繋がったコンソール),「pty」もしくは「pts」で始まる端末は仮想端末(kterm など X Window System 上の仮想端末や,telnet/ssh などで遠隔からログインした端末)を意味します.
ちょっとわかりにくい説明になってしまいましたが,たとえば,いま自分が使っている端末がどれかを表示するには,
$ tty
と実行します(「/dev/pts/0」などと表示されるはずです).
また,
$ echo hogehoge > /dev/pts/0
などを実行すると,/dev/pts/0 に割り当てられた仮想端末に「hogehoge」と表示されます.kterm などの仮想端末をいくつか立ち上げたあと,数字をいろいろ変えて遊んでみると,なんとなく感じがわかるかと思います.
ファイル /dev/ptmx は、メジャーナンバー (major number) 5、 マイナーナンバー (minor number) 2 を持つキャラクタ・ファイルであり、 通常、モードは 0666 で、所有者.グループは root.root である。 このファイルは、擬似端末 (pseudo-terminal) のマスタとスレーブの ペアを作成するために使用される。プロセスが /dev/ptmx をオープンすると、そのプロセスには 擬似端末マスタ (pseudo-terminal master; PTM) へのファイル・ ディスクリプタが返され、 /dev/pts ディレクトリに擬似端末スレーブ (pseudo-terminal slave; PTS) デバイスが作成される。 /dev/ptmx をオープンして得られるファイル・ディスクリプタは それぞれ独立の PTM であり、対応する PTS を各々持つ。 PTS のパス名は、PTM のファイル・ディスクリプタを ptsname(3) に渡すと知ることができる。
擬似端末のマスタとスレーブ。
When using SSH this error may show it's ugly head on occasion. Many searches for the issues point to funny TCP connection tweaks or that sshd needs to be re-configured. This is not the case.
Symptoms
Connecting to SSH servers gives this message:
$ ssh atom@example.com ssh_exchange_identification: Connection closed by remote hostOr maybe this if using verbose mode.
$ ssh -v atom@example.com OpenSSH_4.7p1, OpenSSL 0.9.8g 19 Oct 2007 debug1: Reading configuration data /etc/ssh/ssh_config debug1: Applying options for * debug1: Connecting to example.com [10.65.0.2] port 22. debug1: Connection established. debug1: identity file /home/atom/.ssh/identity type -1 debug1: identity file /home/atom/.ssh/id_rsa type 1 debug1: identity file /home/atom/.ssh/id_dsa type -1 ssh_exchange_identification: Connection closed by remote hostTry re-learning the host identity first after seeing the above message message:
$ cd ~/.ssh/ $ mv known_hosts known_hosts.tmpWhen you re-connect you will be prompted to accept the host identity again.
ssh_exchange_identification: Connection closed by remote host というエラーでSSHが接続できない場合、/etc/hosts.allowおよび/etc/hosts.denyの設定の可能性がある。
ext4にはジャーナルチェックサムという機能があり、ジャーナルログにチェックサムを付加することができます。これにより、ハード障害やカーネルバグによってトランザクションログ破損が発生した状況では、fsckが不正トランザクションデータをロールフォワードしてしまうことによりファイルシステムを破壊してしまう状況を防ぐことができます。
このチェックサム機能、従来はオプション機能だったのですが、今回のマージウィンドウでオプション扱いではなくなり、デフォルトでenableに変更されました。ところが、ジャーナルログが一周した場合の考慮が抜けている個所があり、ジャーナルが一周したところでリブートすると、チェックサムエラーが発生し、おかしなことになっていました。
結局、このオプション変更commitがLinus自身の手によりrevert(バグなどの判明により、あるパッチの変更を元に戻すこと)され、問題は解決。Linusは2.6.32-rc6のリリースノートで、「ext4のバグがrc6のリリース遅延の一因だった」と書いたうえで、Ericおよびほかの障害切り分け協力者たちに特に感謝をしたいと、ねぎらいの言葉を述べました。Linusは「だって、ファイルシステム破損はほかのどんなバグよりも僕をナーバスにさせるからね」とメールを締めくくりました。
ext4はまだ使わない方がいいらしい。
なおこの話には、さらに後日談があります。今回のサミットにはエンドユーザー枠で非カーネル開発者が何人か招待されており、その中の1人に、PostgreSQLの開発者がいました。そのエンドユーザーセッションでは「え? Linux独自機構? そんなの意味ないよ。PostgreSQLはコミッタが対応アーキテクチャより少ないぐらいで、開発力不足に苦しんでいて、開発はどうしても保守的になる。Linuxスペシャルな対応なんてしないと思うよ」と話し始めて、ちゃぶ台返し、星一徹状態。何人かの開発者は苦笑していました。
たしかにLinuxだけロックのかけ方が違う、だとメンテが大変。
ちなみにLinusは、この問題をいまいち理解できないらしく、「レイテンシ改善でスケジューラ? おいおい、普通デスクトップでのレイテンシってのはI/Oスケジューラとかその辺がネックになるわけで、スケジューラが問題になったりしないよ」とかいってましたが、その発言は全員にスルーされてました(ホント、Linusには容赦ないよな)。
glibcがfutexの能力を最大限に活用していないため、PostgreSQLがユーザーランドでスピンロックかけてるなどスケーラビリティが下がる実装している件に関して。
いいか、人に不平をいう前に自分自身を鏡で見てみろ。もし君がバグってるコミットを書き、誰かがそれをbisectしてくれたならば、女々しく泣き言をいう代わりに、
a)期待に応え、revertする
b)その人に感謝する、「あなたが」混入させたバグを見つけてくれたことを
c)自分自身を恥じるとするべきなんだ。