実行中:Xubuntu 14.04 32ビット。
私はいくつかの時代遅れの、働いていない、違う仕事を読んでいますが、ここと他の場所で答えが欲しいです。自動起動に設定した後、ブート時にラップトップをシャットダウンするスクリプトがありました。
2011年にこのツールが死に、Lauchpadに彼の正確なオプションが利用できないというバグがあるにもかかわらず、私はcomplexshutdownのインストールも試みました。ここでは14.04にもインストールされていません。
したがって、「の重複」で罰せられることなく、この質問を再度尋ねることができれば...
私は実際にテストされて動作しているシンプルな簡単なスクリプトを探しています。これは自動スタートに入れて、アクティビティ(マウス/キーボード)をチェックし、2時間何もなかった場合はラップトップをシャットダウンするだけです。
ありがとう。
これがおそらく最良のソリューションです。スクリーンセーバーの調整と実行の必要はありません。
インストール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のことを信じて、それを見たことはありません。
一定の非アクティブ時間後にシャットダウンするためのいくつかのオプションを調べた後、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時間を超えるタイムアウトは不可能です。
これは私の単純なスクリプトです。これには、「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
@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