Okumatsu_Hiroshi Website
fluxboxで簡単にシャットダウンをする方法
sudoとzenityを使う
linuxでシャットダウンをするには?
一般的なLinuxマシンでは、コンピュータのシャットダウンを許されているのは通常 root ユーザーに限られています。
Ubuntuの場合は root ユーザーを使用しないという特殊なシステムになっていますが、代わりに gksu や sudo などのコマンド
を使ってシステム管理作業を行います。ほとんどの人が一人でコンピュータを使うという事情が反映しているのでしょう。
ターミナルからシャットダウンするときは、以下のようにします。
$ sudo shutdown -h now
=> パスワード入力を求められる
この sudo というコマンドは、ユーザーが管理者の権限を持っていることが必要ですが、一人でパソコンを使っているのであれば、管理者でないこと の方がめずらしいでしょう。root ユーザー(スーパーユーザー)になるか、または一時的に管理者の権限を取得してから作業を行うという、Unix系OSの考え方は、Windows に慣れている人には面倒に感じられるかもしれません。シャットダウンやインストールなど、システム全体に関わる時は必ず root パスワード(Ubuntuの場合はユーザー のパスワード)入力を求められますからね。
{gnomeでは gnome-power-manager などを使ってパスワードなしのシャットダウンを可能にしています。}
ちなみに、再起動やハイバネート、サスペンドなどは以下のようにすればできます。
$ sudo shutdown -r now => 再起動する $ sudo pm-hibernate => ハイバネートする $ sudo pm-suspend => サスペンドする
これらのコマンドはいずれもパスワードの入力を求められます。
gksuを使う方法
gksu というコマンドは、sudo コマンドのフロントエンドです。
何も引数をつけずに実行すると、
![]()
このようなダイアログが表示されて、別のユーザーとしてプログラムを実行することが可能になります。別のユーザーを 指定しない場合、デフォルトは root になっているそうです。
ただ、これではターミナルからコマンドを打つのとあまり手間が変わりませんので、メニューに登録するか、ショートカット キーを設定するといいでしょう。
例えば、
[exec] (rootでrox-filerを開く) {gksu rox-filer}
この様にメニューファイルに設定しておくと、
![]()
このようなダイアログが表示され、自分のパスワードを入力すれば root で rox-filer を開くことができます。
シャットダウンやサスペンドをメニューに追加するには同様にして、
[exec] (サスペンド) {gksu pm-suspend}
[exec] (ハイバネート) {gksu pm-hibernate}
[exec] (再起動) {gksu 'shutdown -r now'}
[exec] (シャットダウン) {gksu 'shutdown -h now'}
と編集します。
これをショートカットキーに割り当てるには、例えば以下のようにします。
Control Mod1 Delete :Exec gksu 'shutdown -h now' Control Mod1 BackSpace :Exec gksu 'shutdown -r now'
sudoをパスワードを省略して使う
ここまでの例は、パスワード入力が必要でした。ただ、個人使用のパソコンでいちいちパスワードを求められるのは 面倒くさいという方もいるでしょう。
事前に設定しておくことで、これを省略することができます。
ターミナルを開いて以下のようにしてください。
$ sudo visudo
すると、/etc/sudoers の編集画面になります。エディタはほとんどの場合、viがデフォルトになっているようでので、 使い方が分からない方は少し戸惑うかも。{このエディタを gedit などに変更することもできるようですが、ここでは そのやり方は説明しません。セキュリティ上の問題であまり推奨されないようです。}
ファイルの一番最後に以下を加えます。
%hiroshi ALL=(ALL) NOPASSWD: /sbin/shutdown, /usr/sbin/pm-suspend, /usr/sbin/pm-hibernate
これで、シャットダウン、再起動、サスペンド、ハイバネートがパスワードなしで実行できるようになります。
ただし、注意する必要があるのは、パスワード入力がないために、いきなりシャットダウンなどが実行されてしまう、 ということです。
zenityでダイアログを表示させる
メニューやショートカットキーからのコマンド実行にワンクッション置くという意味で、実行前にダイアログを表示 してみたいと思います。
以下のようなスクリプトを作ります。
system_shutdown.sh
#!/bin/bash
if zenity --question --title="system shutdown!" --text="really shutdown?"; then
sudo shutdown -h now
fi
そして、実行可能にする。
$ chmod 744 system_shutdown.sh
実行すると
![]()
このようなダイアログが表示され、OKをクリックするとコンピュータをシャットダウンします。
また、リストを表示してコマンドを選ぶ、というやり方もできます。
systam_exit.sh
#!/bin/bash
list=("suspend" "hibernate" "reboot" "shutdown")
answer=$(zenity --list --title="system exit!" --text="select option" --column entry ${list[@]})
case ${answer} in
"suspend")
sudo pm-suspend ;;
"hibernate")
sudo pm-hibernate ;;
"reboot")
sudo shutdown -r now ;;
"shutdown")
sudo shutdown -h now ;;
esac
これを実行すると、
![]()
こんなダイアログが表示されます。
リストからコマンドを選び、OKをクリックして実行してください。