デスクトップは、30分間操作がないとスリープ状態になるように構成されています。ハードドライブからホームネットワークまで、Sambaで映画を共有しています。問題は、ホームネットワークで映画をストリーミングしているのに、30分後に一時停止することです。どうやら、Samba共有はアクティビティとして登録されていません。 Samba共有が進行中であることを確認し、一時停止を延期するにはどうすればよいですか? OSはLinuxMintです。
Caffeineは、スクリプトと同様の機能を提供するパッケージマネージャーで使用可能なユーティリティです。システムがアイドル状態であるように見えないように、意味のないキーボードアクティビティを定期的に挿入します。カフェインは、オンとオフを切り替えることができるアイコンをシステムトレイに貼り付けます。これは便利です。出版社の説明では、全画面モードで機能することに言及しています。私が最後に使用したときは、フルスクリーンモードは必要ないと思います。ただし、最悪の場合、そのワークスペースでアプリケーションを全画面表示にします。
やったよ!私はその方法を説明します、多分それは他の人を助けるでしょう。
Xdotoolをインストールします
Sudo apt install xdotool
次に、/ usr/local/bin /にスクリプトを作成します
Sudo xed /usr/local/bin/checksmb.sh
これをxedにコピーします。
#!/bin/bash
export DISPLAY=:0
export XAUTHORITY=/home/sinisab89/.Xauthority
if [ `Sudo smbstatus | grep DENY | wc -l` != 0 ]
then
xdotool key F9
exit 0
fi
ファイルを保存。
CRONが正しく機能するには、DISPLAYとXAUTHORITYが必要です。 smbstatusはSudoでのみ実行されます。私はF9キーを選びました、多分もっと良いオプションがあります。スクリプトはsmbstatusを読み取り、レポートに0を超える「DENY」エントリがある場合(Sambaのアクティブな接続)は、システムアイドルタイマーをリセットして一時停止を防ぐF9キーの押下をシミュレートします。 「DENY」エントリが0の場合、スクリプトは何もしません。
Checkmb.shを実行可能にする
Sudo chmod +x /usr/local/bin/checksmb.sh
次に、x分ごとにスクリプトを実行するようにCRONを設定します。私は20分を選びました。
Sudo crontab -e
一番下までスクロールして追加します
*/20 * * * * /usr/local/bin/checksmb.sh >> /home/YOUR USERNAME/cron.log 2>&1
/ home/YOUR USERNAME/cron.log 2>&1は、ホームフォルダにcron.logファイルを作成します。スクリプトが正しく実行されない場合のトラブルシューティングに使用できます。
このコマンドを使用すると、CRONが特定の時間にスクリプトを実行しているかどうかを確認できます。
less /var/log/syslog | grep checksmb
これは最も洗練されたソリューションではありませんが、機能します。たとえば、ビデオプレーヤーがシステムのスリープを防ぐ方法を誰かが知っている場合は、xdotoolを使用しないようにこのスクリプトを変更するとよいでしょう。システムサスペンド抑制剤が必要ですが、オンラインで何も見つかりませんでした。
カフェインはユーザー入力が必要で、自動的には実行されないと思います。 Sry私はこれとして返信していますが、コメントすることはできません...
記事 buntu – sambaを介してファイルを共有している間スリープを防ぐ は、 smbstatusコマンド を使用して、ファイル共有中にUbuntuがスリープしないようにするスクリプトを提案しています。
#!/usr/bin/env bash
# sleep prevent command - "gnome-screensaver-command --poke" resets idle timer
PREVENTSLEEP='gnome-screensaver-command --poke'
# gnome-screensaver-command uses X11 which expects this ENV to be set
export DISPLAY=:0.0
smbstatus | grep -q "DENY_WRITE"
if [ $? == 0 ]; then $PREVENTSLEEP ; fi
この記事では、スクリプトの定期的な実行にcrontabを使用することを提案しています。