ログアウトしてもバックグラウンド ジョブを継続する方法

バックグラウンド ジョブとして実行する

もうひとつ、nohup は実行したプログラムを自動的にバックグラウンド ジョブにするものではありません。バックグラウンドで実行するなら & を付けて実行するか bg コマンドで移行させましょ

psコマンドの結果の、 TTYの項の、 tty2やpts/0はそれぞれどんな意味を持つのでしょうか? - 人力検索はてな

そのプログラムが,どの端末から実行されているかを表わす情報です.

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 などの仮想端末をいくつか立ち上げたあと,数字をいろいろ変えて遊んでみると,なんとなく感じがわかるかと思います.

Manpage of PTS

ファイル /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) に渡すと知ることができる。

擬似端末のマスタとスレーブ。

ssh_exchange_identification: Connection closed by remote host - Edoceo, Inc.

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 host

Or 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 host

Try re-learning the host identity first after seeing the above message message:

$ cd ~/.ssh/
$ mv known_hosts known_hosts.tmp

When you re-connect you will be prompted to accept the host identity again.

怒りのLinus――メンテナにかんしゃく玉爆発(1/2) - @IT

ext4にはジャーナルチェックサムという機能があり、ジャーナルログにチェックサムを付加することができます。これにより、ハード障害やカーネルバグによってトランザクションログ破損が発生した状況では、fsckが不正トランザクションデータをロールフォワードしてしまうことによりファイルシステムを破壊してしまう状況を防ぐことができます。

 このチェックサム機能、従来はオプション機能だったのですが、今回のマージウィンドウでオプション扱いではなくなり、デフォルトでenableに変更されました。ところが、ジャーナルログが一周した場合の考慮が抜けている個所があり、ジャーナルが一周したところでリブートすると、チェックサムエラーが発生し、おかしなことになっていました。

 結局、このオプション変更commitがLinus自身の手によりrevert(バグなどの判明により、あるパッチの変更を元に戻すこと)され、問題は解決。Linusは2.6.32-rc6のリリースノートで、「ext4のバグがrc6のリリース遅延の一因だった」と書いたうえで、Ericおよびほかの障害切り分け協力者たちに特に感謝をしたいと、ねぎらいの言葉を述べました。Linusは「だって、ファイルシステム破損はほかのどんなバグよりも僕をナーバスにさせるからね」とメールを締めくくりました。

ext4はまだ使わない方がいいらしい。

怒りのLinus――メンテナにかんしゃく玉爆発(1/2) - @IT

 なおこの話には、さらに後日談があります。今回のサミットにはエンドユーザー枠で非カーネル開発者が何人か招待されており、その中の1人に、PostgreSQLの開発者がいました。そのエンドユーザーセッションでは「え? Linux独自機構? そんなの意味ないよ。PostgreSQLはコミッタが対応アーキテクチャより少ないぐらいで、開発力不足に苦しんでいて、開発はどうしても保守的になる。Linuxスペシャルな対応なんてしないと思うよ」と話し始めて、ちゃぶ台返し、星一徹状態。何人かの開発者は苦笑していました。

たしかにLinuxだけロックのかけ方が違う、だとメンテが大変。

怒りのLinus――メンテナにかんしゃく玉爆発(1/2) - @IT

 ちなみにLinusは、この問題をいまいち理解できないらしく、「レイテンシ改善でスケジューラ? おいおい、普通デスクトップでのレイテンシってのはI/Oスケジューラとかその辺がネックになるわけで、スケジューラが問題になったりしないよ」とかいってましたが、その発言は全員にスルーされてました(ホント、Linusには容赦ないよな)。

glibcがfutexの能力を最大限に活用していないため、PostgreSQLがユーザーランドでスピンロックかけてるなどスケーラビリティが下がる実装している件に関して。

怒りのLinus――メンテナにかんしゃく玉爆発(2/2) - @IT

いいか、人に不平をいう前に自分自身を鏡で見てみろ。もし君がバグってるコミットを書き、誰かがそれをbisectしてくれたならば、女々しく泣き言をいう代わりに、

a)期待に応え、revertする
b)その人に感謝する、「あなたが」混入させたバグを見つけてくれたことを
c)自分自身を恥じる

とするべきなんだ。