非アクティブなユーザーセッションで自動一時停止プロセスを防ぐ方法


14

しばらくの間、2つのユーザーセッションを切り替えると、非アクティブなセッションがGUIプロセスの実行を停止することがあります。この方法では、別のセッションがロードされるのを強制的に待たされ、別のセッションで何かを行うことができません。しばらくしてから切り替えて戻ると、それはまだ同じポイントにあります。影響を受けるソフトウェアには、rsync、rdiff-backup、KDEバックグラウンドプロセス、Openboxセッションで起動されたSteam(ダウンロードの停止も含む)、および少なくともいくつかのゲームが含まれます。VLCは影響を受けません。少なくとも切り替えた後、必要な時間にスキップしますが、しばらくの間、古いフレームと時間がウィンドウに表示されます。

そのような振る舞いにはどのプロセスが関与していますか?なんとか再構成できますか?

更新:メモリとスワップの使用

追加のコンテキスト:皮肉なことに、古いbrainstorm.ubuntu.com(現在は機能していません)でこの正確な動作を提案しました。


1
@Fabbyが完了したら、それがあなたが暗示しているものであれば、スワップの問題のようには見えません。
int_ua

2
うん、それは私が暗示していたものです... ;-)私はあなたが経験している振る舞いをシミュレートしようとしました:ユーザーとしてログオンし、セカンダリーユーザーとしてログオンし、映画を開始し、[Ctrl] [Alt ] [F7]を最初のユーザーに開始し、findon /、[ctrl] [Alt] [F8]を2番目のユーザーに開始し、すべてが実行を続けます...(ただし、ユーザーを切り替えると映画の音声はミュートされます。)テストしますか?
ファビー

1
@int_ua具体的にはスチームについては知りませんが、ユーザーを切り替えるときに一時停止する特定のコードを含むゲームがありました...私はKDEを使用していないので、これ以上助けられないと思います...ごめんなさい!
ファビー

1
別のユーザーに切り替える前後に出力状態を記録し、別のセッションがアクティブになっている間は外部HDDライトがすべてのアクティビティを停止することによって。
int_ua

2
以下のためにrsyncあなたが使用しているverbose進捗状況を印刷するには?それなしで試しましたrsync .... &か?それをバックグラウンドに直接送信してみましたか?どうnohup rsync .... & ?唯一つの出力リソースがあるのでGUIのために、彼らは中断しなければならないし、それが別のユーザーのセッションで取らず、彼らが一時停止します。)
αғsнιη

回答:


1

コンソールとグラフィカル仮想端末を定期的に切り替えるため、この問題も発生します。Xorgは設計上、VT切り替え中にクライアントを一時停止します。そのため、XorgのVTがアクティブでなくなると、クライアントは「フリーズ」するように見えます。Waylandはサポートしていないため、バックグラウンドVTで実行し続ける必要があるプログラムが新しい表示プロトコルをサポートしている場合は、Xorgの代わりにWaylandコンポジターを使用します。

この問題を回避する1つの方法は、ローカルVNCサーバーでグラフィカルプログラムを実行して、一時停止しないようにすることです。これは、私が最も頻繁に使用する回避策です。


0

そのような振る舞いにはどのプロセスが関与していますか?

ディスプレイマネージャー(DM)が探しています。誰も:lightdmgdmkdm(古いKDE)、 sddm(新しいKDE)、xdm...

なんとか再構成できますか?

私の知る限り、それはXサーバーでそのようにする必要があります。ただし、以下を使用してその動作をスキップしていました。

  • 別の仮想コンソールTTYのCLIツール
  • initサービスとしてのCLIツール

2006年にGNU / Linuxを使い始めたときのオーディオストリームについて。オーディオデバイスはディスプレイとは別に管理されていました。現在、HDMIなどの新しい統合デバイス/ポートにより、状況は大きく変わりました。したがって、PulseサーバーはいくつかのX表示イベントを認識する必要があります。私が覚えているように(これを再確認します)、Pulseサーバーはユーザープロセスとして実行されます。


最初のポイントを証明してもらえますか?どのように正確に、またはコードのどこでこれを行いますか?TTYのCLIがオプションではなく、ダウンロードとバックアップが本当の問題であり、オーディオが軽微な問題である多くの状況があります。
-int_ua

0

あなたは起動できscreenbashのでCLIからセッションをして、このセッション内で、あなたは、アプリケーションを起動することができます。そして今、あなたは問題なくこのターミナルを閉じて、screen -rコマンドを使用して回復することができます。多かれ少なかれこれです:

screen bash
rsync -V xxx yyy

また、CLIを閉じて、必要なものを何でも返して実行できます。

screen -r

ジョブが完了したことを確認します。これが次のようなコマンドを使用してGUIアプリで機能するかどうかはわかりません:

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