web-dev-qa-db-ja.com

(2時間)アイドル状態の後にUbuntuをシャットダウンする方法は?

実行中:Xubuntu 14.04 32ビット。

私はいくつかの時代遅れの、働いていない、違う仕事を読んでいますが、ここと他の場所で答えが欲しいです。自動起動に設定した後、ブート時にラップトップをシャットダウンするスクリプトがありました。

2011年にこのツールが死に、Lauchpadに彼の正確なオプションが利用できないというバグがあるにもかかわらず、私はcomplexshutdownのインストールも試みました。ここでは14.04にもインストールされていません。

したがって、「の重複」で罰せられることなく、この質問を再度尋ねることができれば...

私は実際にテストされて動作しているシンプルな簡単なスクリプトを探しています。これは自動スタートに入れて、アクティビティ(マウス/キーボード)をチェックし、2時間何もなかった場合はラップトップをシャットダウンするだけです。

ありがとう。

6
redanimalwar

これがおそらく最良のソリューションです。スクリーンセーバーの調整と実行の必要はありません。

インストールSudo apt-get install xprintidle

このスクリプトを自動起動に入れます:

#!/bin/bash

idletime=$((1000*60*60*2)) # 2 hours in milliseconds

while true; do
    idle=`xprintidle`
    echo $idle
    if (( $idle > $idletime )); then
        #Sudo shutdown -P now
        dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true
    fi
    sleep 1
done

コメントと@Jobinの答えは、私自身を再び調査することにつながり、実際にxprinttimeを含む未完成のスクリプトを見つけましたが、スクリプトにループはありません。私のlinux/bashの知識は当時良くなかったので、おそらくこれを終えていません。また、持っていたスクリプトをrc.localに入れたり、ブート時にシャットダウンをトリガーしたようなものを入れたりしました。 XFCEにスタートアップアプリを追加する方法を思い出させてくれた@Jobinのおかげで、私はすでにこれを知っていましたが...そしてdbusのことを信じて、それを見たことはありません。

6
redanimalwar

一定の非アクティブ時間後にシャットダウンするためのいくつかのオプションを調べた後、xautolockが最も簡単な方法であるように思われます。 Sparhawk へのすべてのクレジットは、xautolockについて言及しています。

Xscreensaverを指摘してくれた Sneetsher に感謝します。 xscreensaverを使用すると、一定の非アクティブ時間が経過した後の処理を手動で指定できます。 xscreensaverを使用するには、次を使用してインストールする必要があります。

Sudo apt-get install xscreensaver

または、ソフトウェアセンターからインストールし、次を使用して1回実行します。

xscreensaver-demo

または、ダッシュボードで「xscreensaver」と入力し、「スクリーンセーバー」を開きます。

これにより、~/.xscreensaverファイルが作成されます。それを開き、行を検索します。

programs:                                                                     \

追加します:

dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true \n\

すぐ下

programs:                                                                     \

ライン。

timoutで始まる行を変更することにより、シャットダウンがトリガーされるまでの時間を指定できます。変更する

timeout:        2:00:00

2時間後にシャットダウンします。

.xscreensaverファイルをご覧ください here

これにより、非アクティブな状態が2時間続くか、スクリプトで指定した時間にマシンの電源が切れます。

ノート:

  • 起動時にxscreensaverを追加する方法については、 この質問 をご覧ください。

  • 複雑なシャットダウンを使用してみましたが、バグ ここ が私に影響を与えているようで、発生しませんでした。そうでなければ、このためにグラフィカルアプリケーションが使用可能になります。

  • これはxautolockを使用して実現できますが、 redanimalwar が指摘したように、ソースコードを変更して再コンパイルしない限り、1時間を超えるタイムアウトは不可能です。

6
jobin

これは私の単純なスクリプトです。これには、「xprintidle」パッケージをインストールし、sudo/passwordなしで実行できるようにシャットダウンコマンドを変更する必要があります。

Sudo chmod u+s /sbin/shutdown
Sudo apt-get install xprintidle

脚本

#!/bin/bash
idletime=$((15*60*1000)) # 15 min in milliseconds
idle=0

while [ $idle -lt $idletime ];do
    idle=`xprintidle`
    sleep 1
done
shutdown -P now
2
Krypstocken

@redanimalwarスクリプトを修正して、ユーザーに警告し、シャットダウンをキャンセルする機会を与えました。テストでは、3秒と簡単なメッセージを使用しています。好みに合わせて調整してください。 HTH。

#!/bin/bash
#https://askubuntu.com/questions/442795/
#http://ubuntuforums.org/showthread.php?t=2172828

function showProgress(){
#
# Force Zenity Status message box to always be on top.
sleep 1 && wmctrl -r "Progress Status" -b add,above &

(
echo "# Shutting Down in 5" ; sleep 2
echo "25"
echo "# Shutting Down in 4" ; sleep 2
echo "50"
echo "# Shutting Down in 3" ; sleep 2
echo "75"
echo "# Shutting Down in 2" ; sleep 2
echo "99"
echo "# Shutting Down in 1" ; sleep 2
echo "# Shutting Down now" ; sleep 2
echo "100"

) |
zenity --progress \
  --title="Progress Status" \
  --text="First Task." \
  --percentage=0 \
 --auto-close

return $?

}


#idletime=$((1000*60*60*2)) # 2 hours in milliseconds
idletime=$((1000*3)) # test, 3seconds

while true; do
    idle=`xprintidle`
    echo $idle
    if (( $idle > $idletime )); then
        showProgress && \
        #Sudo shutdown -P now
        #dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true
        #echo for tests. use command above to actually shutdown
        echo shuting down the system. Just kidding  ^_^ \
        && exit 0
    fi
    sleep 1
done
1
Marco Linux