タグ付けされた質問 「tty」

シリアルデータを非同期で送受信するデバイスの表現。

1
孤立したプロセスグループでインタラクティブシェルは何をすべきですか?
(/programming/13718394/what-should-interactive-shells-do-in-orphaned-process-groupsの提案に従ってUNIXに再投稿する) 簡単な質問は、ttyを所有していない孤立したプロセスグループ内にある場合、シェルは何をすべきかということです。しかし、面白いので、長い質問を読むことをお勧めします。 以下は、お気に入りのシェルを使用して、ラップトップをポータブルスペースヒーターに変える楽しくてエキサイティングな方法です(tcshの変人の1人でない限り)。 #include <unistd.h> int main(void) { if (fork() == 0) { execl("/bin/bash", "/bin/bash", NULL); } return 0; } これにより、bashはCPUを100%に固定します。zshとfishは同じことをしますが、kshとtcshはジョブ制御について何かをつぶやいてからキールします。これは少し優れていますが、それほど多くはありません。ああ、それはプラットフォームにとらわれない犯罪者です。OSXとLinuxの両方が影響を受けます。 私の(潜在的に間違っている)説明は次のとおりです:子シェルがそれがフォアグラウンドにないことを検出しました:tcgetpgrp(0) != getpgrp()。したがって、それ自体を停止しようとしますkillpg(getpgrp(), SIGTTIN)。しかし、その親(Cプログラム)がリーダーで死亡したため、そのプロセスグループは孤立SIGTTINしています。孤立したプロセスグループに送信されたものは削除されるだけです(それ以外の場合は、再び起動できません)。したがって、子シェルは停止されませんが、まだバックグラウンドにあるので、すぐにすべてが再び実行されます。すすぎ、繰り返します。 私の質問は、コマンドラインシェルがこのシナリオをどのように検出できるか、そしてそれを行うための正しいことは何ですか?私には2つの解決策がありますが、どちらも理想的ではありません。 pidがグループIDと一致するプロセスにシグナルを送ろうとします。それがで失敗する場合ESRCH、それはおそらく孤立していることを意味します。 から1バイトのノンブロッキング読み取りを試みます/dev/tty。それがで失敗する場合EIO、それはおそらく孤立していることを意味します。 (これを追跡する私たちの問題はhttps://github.com/fish-shell/fish-shell/issues/422です) あなたの考えをありがとう!

1
.ttc形式のフォントをコンソールフォントとして使用するにはどうすればよいですか?
利用可能なttyフォントが嫌いで、OS Xのターミナルで使用しているMenloを使用したい。Menloは.ttcフォーマットになっていますが、(のコンテンツから/usr/share/consolefonts)Linuxには.psf.gzフォントが必要で、スタイルとサイズの組み合わせごとに異なるファイルが必要です。それを適切な形式に変換し、ttys のフォントとして使用するように設定するにはどうすればよいですか? (私はUbuntu Server 12.04を実行しているPowerBook G4とOS X Mountain Lionを実行しているIntel MacBook Proを持っています。)
10 ubuntu  fonts  tty  ttf 

3
画面でも、端末がサポートするUnicodeの量を検出します
ここに問題があります:私の端末がまともなユニコードに対応しているかどうかを確認できるようにしたいです。 どんな種類の仮想端末でもまともなフォントが得られるので動機が生まれますが、基本的なLinuxコンソールには256または512の同時記号の文字セットがあるため、完全なフォントサポートは期待できません。 最初は$TERM、またはttyを使用できると思っていましたが、ここが落とし穴です。私はbyobuも使用しているため$TERM、常に「screen.linux」を使用します。ttyの出力もあまりわかりません/dev/pts/<some number>。「実際の」用語と仮想の用語の両方で。 $BYOBU_TTYたとえば、それが可能で/dev/tty1あり、セッションがCtrl+ Alt+で開かれF1たときに文字が表示されないが、一部のX用語から同じセッションにアタッチすると、正しく表示され、$BYOBU_TTY変更されないためです。その上、屏風があるかどうかを推定せずにこれを検出できるようにしたいと思います。 また、ロケールはすべての場合にen_US.UTF-8を示します それでも、byobuの内部であっても、どういうわけか(私がこれを検出した特定のツールの名前を示すために)一見すると、byobuセッションに接続している端末に応じて異なる出力が使用されます。 端末とttyがあまりにも一般的な検索語のように見えるため、Googleで問題が発生しています。せいぜい$TERMttyを推奨するソリューションにたどり着きます。
10 linux  terminal  tty  unicode 

2
ttyログインのタイムアウトを変更する-ArchLinux
デフォルトでは、ttyでArch linuxボックスにログインすると、ユーザー名を入力した後、パスワードを入力する前にタイムアウトが発生します。 だからこのようになります Login: mylogin <enter> Password: (+ 60 seconds) Login: ご覧のとおり、パスワードを入力しないと、プロンプトが再利用されます。ログインプロンプトを再利用するのではなく、パスワードを無期限に待機させます。 これは可能ですか? それが私が望むものになる--timeoutオプションのようagettyです。ただし、このフラグをgettyファイルに追加し/usr/lib/systemd/system/(オプションはデフォルトでは使用されません)、再起動しました-効果がないようです。
10 linux  login  tty  timeout  getty 

4
端末ユーザーから別のユーザーにメッセージを送信する
tty1にx、tty2にyという名前のユーザーがいます。ここで、xはyにメッセージを書き込み、逆も同様です。今私はTTY1端子に入力されたwrite y tty2 ことが表示されています 書き込み:書き込み:書き込み権限がオフになっています write:yはメッセージを無効にします yがメッセージをxに送信するときに同じことが示されていますが、最終行は 'x'です。私は何をすべきか?
10 terminal  tty  write 

1
TTYが表示されるモニターを変更するにはどうすればよいですか?
起動時、またはを押すCtrlAltF*と、物理端末/ TTYが表示されます。問題は、TTYが私のHDMIモニターに表示されることです。これは、実際には私と同じ部屋にさえありません。 DisplayPortモニターにTTYを表示するようにPCを構成することはできますか?CtrlAltF1わかりやすくするために、を押したときに、TTYをHDMIモニターではなくDisplayPortモニターに表示させます。 編集:少し掘り下げた後、ブートローダーがここに含まれているように見えるので、GRUB 2.02〜beta2-20を使用していることを指定する必要があります

3
制御端末から切断されたコマンド/スクリプトを呼び出しますか?
通常は自動化されたプロセスとして実行されるスクリプト(cron、Jenkinsなど)の動作を調査しています。スクリプトは、対話的に実行すると、(最終的に)動作が異なる(ユーザー入力を求める)コマンドを呼び出すことができます。たとえば、patchリバースパッチで何をするかをsvn尋ね、パスワードを要求しますが、非対話的に実行するとどうなるかを確認する必要があります。 patch非インタラクティブであることを説得するのはかなり簡単です。stdout非ttyになるようにリダイレクトする必要があります。 $ </dev/null > >(cat) /path/to/myscript --args ただしsvn、存在する場合は制御端末に接続します。渡すスクリプトを編集すること--non-interactiveは、実際にはオプションではありません。これはいくつかのレベルの深さから来ており、すべての呼び出しを見つけたと確信するのは難しいためです。 (/dev/tty存在しないため)制御端末なしで、非対話的にスクリプト/コマンドを呼び出す方法はありますか?私はまだ端末に行くよりstdout / stderrを好みます。 (「非対話型シェルでスクリプトを実行する」という質問を見つけましたが、その答えはcronとユーザー環境の違いについて説明しています。非対話型以外のすべての違いはすでに排除しています。)

1
指定されたtty / ptyで端末を開くことは可能ですか?
(私はUbuntuを使用しています。)私の理解では、ttyは単なるポートの一種です。何かを入力すると、何かが出力されます。そして、端末(エミュレータ)はそれらの入出力を扱うソフトウェアです。文字通り端末は接続するポートを選択できます。 / devに多くのttyファイルが見られ、/ dev / pts /に多くのptsファイルが見られました。なぜそんなにたくさんあるのかわかりません。それらはすべて使用されていますか? そうでない場合、指定したptyで端末を起動できますか? 例えば gnome-terminal /dev/pts/47 更新 これを行う理由は、リモート端末を持ちたいからです。適切なアプローチはsshまたはtelnetを使用することです。 しかし、一時的なアクセスでは、あまり便利ではありません。socatを使用してttyまたはptyをクライアントに転送したい。次に、クライアントはそのptyまたはttyで端末を起動できます。 次のコードは正常に動作します。これはクライアントで実行され、サーバー側で「こんにちは」と表示されます。 echo "hello" > /home/myhomefoler/pty_created_by_socat
9 terminal  tty 


2
コマンドは、80文字の後に同じ行を折り返します
Yocto Linuxマシンのシリアルコンソールに接続されたminicomに迷惑な問題があります。 入力したコマンドは、80番目の文字の後の同じ行で折り返されています。これは、作業するのに非常に不便になります。行の最初に入力したものはすべて、その行の最後の文字で上書きされます。 同じマシンへのSSH接続は問題なく機能します。80番目の文字の後、sshは次の行に進みます。 これはstty設定です: stty -a speed 115200 baud; rows 24; columns 80; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; …

1
bash:このシェルにはジョブ制御がありません
最小限のLinuxシステムを使用しています。 initは/bin/bash、の最小限のライブラリのみが静的に読み込まれ/lib/、/dev/デーモンは実行されていません(udevなどはありません)。 bashが起動すると、次のエラーが発生します。 bash: cannot set terminal process group (-1) inappropriate ioctl for device bash: no job control in this shell straceでbashを開始すると、次の出力が表示されます。 rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0 open("/dev/tty", O_RDWR|O_NONBLOCK) = -1 ENXIO (No such device or address) ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0 …
8 bash  terminal  tty  ioctl 

1
保留中の文字が256文字を超えると、8250 UARTドライバーがTTYを起動しないのはなぜですか?
このif条件の動機は何void serial8250_tx_chars(struct uart_8250_port *up)ですか? if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS) uart_write_wakeup(port); Linux 1.1.13(1994年5月)から存在し、ほとんどのUARTドライバーで繰り返されています。 背景:カスタマイズされたLinux 3.4.91、ARMv7の組み込みシステム、UARTポート0は、38400ボー、I / O用の16バイトFIFOに設定されています。これは、セットアップでは変更できません。 UARTを介してコンソールで非常に重いprintfを実行すると、内部の4kBバッファー(UART_XMIT_SIZE)がいっぱいになり、バッファーが空になるまで(38400ボーで1秒かかります)、ユーザー空間プロセスが停止します。その後、この動作が繰り返されます。これはn_tty_write()、バッファがいっぱいになると関数がスリープ状態になり、上記の疑わしい状態のために長時間ウェイクアップされないためです。 このチェックを削除するだけで、より自然で効率的になります。次に、printfsはできるだけ早くバッファーをいっぱいにして、私が観察しているバースト処理ではなく、バッファーが空になる速度で続行します。 私の環境では問題なく動作しますが、確かに何かが足りない、または誤解しています。現在の実装には理由があるはずです。その状態を取り除くと副作用はありますか? 余談ですが、この動作を調整するための構成オプションはありますか。たとえば、printfが常にすぐに戻り、バッファーがいっぱいの場合は出力を破棄するように設定しますか?


3
ジェンキンスからsudoを呼び出す
abcsudoアクセスが制限されているユーザーがいるビルドマシンを1つ持っています。ソースコードをチェックアウトしてビルドスクリプトを実行すると、問題なく動作します。ビルドスクリプトにsudoは、「sudo:ttyが存在せず、askpassプログラムが指定されていません」と書かれていない呼び出しが含まれています。しかし、スレーブとして追加されたビルドマシンでJenkinsを使用して同じことを実行すると、「sudo:ttyが存在せず、askpassプログラムが指定されていません」と表示されます。 Default requirettyファイルでコメント化するという解決策が1つ見つかりました/etc/sudoers。しかし、私はこのファイルにアクセスできません。 この問題を解決するにはどうすればよいですか?


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.