web-dev-qa-db-ja.com

シェルを切り替えて、現在再生中の音楽を停止します

音楽を聴いているときに、を使用して仮想コンソールを変更しました Ctrl+Alt+F2、そして突然音楽が一時停止しました。 Xサーバーを実行しているコンソールに戻る Ctrl+Alt+F7 または、現在使用しているコンソールでユーザーにログインします(Ctrl+Alt+F2)、音楽の再生を再開します。

Linux(私はUbuntuを使用しています)はマルチユーザーオペレーティングシステムです。私の知る限り、ユーザーがログオンして同時に作業できる7つの仮想コンソールがあります。では、なぜこれが起こっているのでしょうか?コンソールの切り替え中にシステムが更新された場合はどうなりますか?

11
DScript

Linuxには複数の仮想コンソールがあります。 Ctrl+Alt+Fn これらのコンソールを切り替えます。コンソール7からコンソール2に切り替えると、入力および出力周辺機器はコンソール7からコンソール2に再ルーティングされます。コンソール7が非アクティブの場合、入力/出力周辺機器にアクセスできません。ディスプレイはに表示されません。画面、アプリケーションがキーボード入力を受け取らないなど。

歴史的な理由から、サウンドの入力と出力は、キーボードやマウスなどの入力デバイスやビデオディスプレイとはまったく異なるチャネルを使用します。コンソールデバイス(オペレーティングシステムの抽象化)は、キーボードとビデオをカバーしますが、サウンドはカバーしません。 Unixシステムでのサウンドの最も一般的な基本的な実装は、そのシステムから独立しており、サウンド周辺機器を使用する許可は、コンソールの所有権ではなく、グループメンバーシップに基づいて付与されます。これは実際には設計上の欠陥です。

Ubuntuは、セッションがコンソールにログインし、それらだけがオーディオデバイスにアクセスできるように設定しました。コンソールを切り替えると、他のコンソールにもログインしない限り、オーディオデバイスにアクセスできなくなります。これは最初から本当にすべきことでしたが、コンソールインターフェイスの設計者がサウンドについて考えていなかったためではありませんでした。

CPUはコンソールではなくマシンに関連付けられているため、別のコンソールに切り替えると、プログラムは実行され続けます。マシンにアカウントを持っている人は誰でもCPU時間を使用できます。同じことが、メモリやファイルなどの他のリソースにも当てはまります(権限が必要です)。コンソールの所有権によって管理されるのは、ユーザーとのやり取りだけです。プログラムがサウンド出力デバイスにアクセスする権限を失ったため、ログインしていないコンソールに切り替えると、サウンドの再生が停止します。

Ubuntuは Polkit を介してアクセス制御を実装していると思いますが、これがどのように機能するのか正確にはわかりません。

しばらく前、人々はコンピュータ端末を使用してUnixメインフレームにデータを入力したり、Unixメインフレームからデータを表示したりしていました。この端末ユーザーのいずれかが、たとえばcat /dev/zeroを望んでいた場合、出力は同じメインフレームに接続されたすべての端末/ユーザーにブロードキャストされませんでした(これはマルチユーザーシステムであり、各ユーザーがそのタスクを実行できるためです)他のユーザーに影響を与えることなく)。

私たちの時代では、仮想端末(または仮想コンソール)を使用しています-VC)は、物理コンピューター端末のソフトウェアエミュレーションであり、同様に機能します。 VC1にログインしてls -alR /を実行した場合、出力はすべてのVCにブロードキャストされるわけではなく、別のVCに切り替えても、lsはVC1で実行を継続して送信します。それはVC1に出力されます(同じように、更新コマンドはVC別のVCに切り替えても開始した)で実行され続けます)。

VCユーザーがログインしていても、ユーザーはログインする必要があります)に関係なく、(デフォルトでは)出力に同じデバイスを使用するため、標準出力とは少し異なります。サウンドデバイスの出力にアクセスするために。

VCに関する詳細については、 ここ を参照することもできます。

1
petry

試してみてください

usermod -a -G audio youruser

差出人: https://www.reddit.com/r/linux/comments/1ckvhd/keeping_music_playing_across_multiple_terminal/

0
Wellington1993