質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

解決済

sshdデーモン と gnome-terminal-serverデーモン について

akiyama3284pga
akiyama_pga

総合スコア178

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

2回答

0リアクション

0クリップ

279閲覧

投稿2022/09/22 13:54

sshd(ssh*2ログイン時の ps -fx)

1718 ? S 0:00 sshd: aki@pts/1 1719 pts/1 Ss 0:00 \_ -bash 1734 pts/1 R+ 0:00 \_ ps xf 1546 ? S 0:00 sshd: aki@pts/0 1547 pts/0 Ss+ 0:00 \_ -bash

gnome-terminal-server(gunorm端末*2起動時の ps -fx)

15862 ? Ssl 0:09 \_ /usr/libexec/gnome-terminal-server 15871 pts/0 Ss 0:00 \_ bash 18065 pts/0 R+ 0:00 | \_ ps -fx 15976 pts/1 Ss+ 0:00 \_ bash

2つを見比べますと、
両方ともデバイスファイルが別々のシェルに紐づいていることがわかりますが、
後者は一つのプロセスに複数のデバイスファイルが紐づいています。

これが問題にならない理由がわかりません。
gui環境では、疑似端末というxクライアントを通じてデバイスファイルに書き込まれ、それから各紐づくシェルに送られると考えているため、このあたりの理解が上手くいきません。
一つのxクライアントプロセスが全てのデバイスファイルへの書き込み、出力を担当しているのでしょうか...?

ご助言等頂けましたら幸いです。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

otn

2022/09/22 14:04

> 両方ともデバイスファイルが別々のシェルに紐づいていることがわかりますが、 これは具体的に何のことを言ってますか? 2つのbashプロセスの制御端末が異なると言うことを言っていますか? > 後者は一つのプロセスに複数のデバイスファイルが紐づいています。 これも具体的に何のことを言ってますか?これは全くわかりません。
akiyama3284pga

2022/09/22 14:51

お世話になります。 別々に…といいますのは仰る通りでございます。 制御端末のことをデバイスファイル書いておりました。 また、後者の件では、 実際にターミナルが2枚開いているため、例のsshdのようにgnome-terminal-server(擬似端末)のプロセスが2つあって、それぞれの子プロセスとしてそれぞれのシェルが紐付いているのが正しいのではないかと、考えております。
winterboum

2022/09/23 03:00

「正しい」というところがよくわかりません 正しい、正しくない の基準は何でしょう?
akiyama3284pga

2022/09/23 03:47

https://ttssh2.osdn.jp/manual/4/ja/reference/sourcecode.html 上記の記事を参考にしております。 記事中、 "シェルは、sshdからforkされて子プロセスとなり、親プロセス(sshd)が初期化済みのスレーブデバイスドライバとお話をすることになる" とあります。 これが意味するものは、sshdが接続が来るたびに増えているため、その子プロセスとしてのシェルは、親プロセスのsshdの開いた制御端末を一意に選択できるということだと思います。 これはsshdの場合ですが、これがguiログイン時の疑似端末(xterm, グノム端末等)の場合(後者の例)で考えますと、 疑似端末に対応する制御端末が複数あるため(例ではpts/1とpts/2)、どちらに対して書き込めばよいのか判断できないのではないかと考えております。
winterboum

2022/09/23 03:54 編集

その記事はsshでの接続の話ですよね? 私が知りたいのは、guiログインの時に「正しい、正しくない 」としているのはなにを基準にしているのか、 です
akiyama3284pga

2022/09/23 04:07

疑似端末により、制御端末(pts/#)に書き込みが行われる。 この自分の理解が間違っていない場合、 疑似端末と制御端末が、 1:1 で対応しているのが正しく、 1:多で対応しているのは正しくない、 という判断をしております。 そもそも見方等に誤りがあるのか、それともその理解からすでに間違っているのか、 自分の検索力ではわからずにおります。
winterboum

2022/09/23 06:12

1:多で対応しているのは なぜ 正しくない、 のでしょう。そこに判断基準があります
akiyama3284pga

2022/09/23 08:17

失礼いたしました。 擬似端末は、グノーム端末のようなターミナルエミュレータのことを意味したかったです。上の文では制御端末が制御端末に書き込むのような意味不明な意味となっておりました。 デーモンプロセスは特定のttyに紐付いている必要は無いと思います。 例ではsshdの立ち位置に、guiの場合ターミナルエミュレータが来ると思います。 なので、一つのデーモンプロセスに複数の制御端末とそれに紐付くシェルが対応していると、 例えばターミナルエミュレータ1で入力したコマンドと、 ターミナルエミュレータ2で入力したコマンドをどの制御端末に書き込むべきか、区別がいかないのではないかと考えております。 いくつターミナルエミュレータを立ち上げても、シェルや制御端末が増える一方、肝心のターミナルエミュレータのプロセスが増えていないことが不思議でなりません。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。