シャットダウン日時の記録

パピーを名犬にするための技、テクニック

モデレータ: 暇人, YoN, nyu

返信する
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

シャットダウン日時の記録

投稿記事 by ルビー »

TIPSと言うには、ちょっと微妙ですが。

Windowsはイベントログを見れば、前回のシャットダウン日時が分かりますが、パピーではその日時を知る方法が、探しても見つかりませんでした。
そこで、シャットダウン直前に、touchコマンドでシャットダウン日時を記録する事を考えました。

起動時のコマンド実行は簡単ですが、終了時のコマンド実行方法が分からない。
ググるとランレベルを使えば良い様です。
/etc/rc.d/rc0.dに、/etc/rc.d/init.d/K01~ スクリプトのリンクを作成でうまく行ったと思ったら、起動時にも動いてしまい、希望の動作になりません。

結局は、次のファイルに直接、touchコマンドを追加しました。
/sbin/poweroff
/sbin/reboot

スクリプト冒頭(6行目)
空行も入れてます

コード: 全て選択

#シャットダウン日時の記録
touch /root/my-documents/shutdownlog

これで、再起動、シャットダウン時に、
空ファイル、
/root/my-documents/shutdownlog
のタイムスタンプに、シャットダウン日時が記録されます。

使用3カ月程になりますが、不具合は起きていません。
571JP、Tahrpup605で使っています。
Zstep
記事: 207
登録日時: 16/12/06(火) 12:49

Re: シャットダウン日時の記録

投稿記事 by Zstep »

終了時のコマンドの実行方法ですが、/etc/init.dのREADME.txtみると

At bootup, the /etc/rc.d/rc.services script will run all executable scripts found in /etc/init.d, with the commandline parameter 'start'.

At shutdown, the /etc/rc.d/rc.shutdown script will run all executable scripts found in /etc/init.d, with the commandline parameter 'stop'.

こんな感じのスクリプトを/etc/init.dに置けばうまくいきそうですね

例)/etc/rc.d/init.d/stoptime

コード: 全て選択

#!/bin/sh
case "$1" in

stop)
touch /root/my-documents/shutdownlog
    ;;
esac

端末で動作確認するときは
/etc/rc.d/init.d/stoptime stop
アバター
ルビー
記事: 1240
登録日時: 14/11/24(月) 12:12

Re: シャットダウン日時の記録

投稿記事 by ルビー »

Zstep さんが書きました:終了時のコマンドの実行方法ですが、/etc/init.dのREADME.txtみると
なるほど、スクリプトが終了時と起動時両方で動いてしまう理由が分かりました。
ありがとうです。
Zstep さんが書きました:こんな感じのスクリプトを/etc/init.dに置けばうまくいきそうですね
これは良いですね。
/sbin/poweroff を直接編集は、我ながらどうも強引ですね。
動けばいいやで、使ってましたが(^^;。

引数 stop で終了時にスクリプトを走らせる方式は、いろいろ使えて便利そうです。
poweroff の編集では、あまり余計な物を追加したくなかったので、シャットダウン日時の記録だけにしておきましたが、これなら自由に書けます。
終了時にブラウザのブックマークのバックアップも取りたかったので、さっそく入れてみました。

まずは、こんな感じで使ってみます。
/etc/init.d/end.sh
(/etc/init.d = /etc/rc.d/init.d です)

コード: 全て選択

#!/bin/sh
#終了時実行

case $1 in
  stop)
    #ブックマークバックアップ
    rsync -t /root/.mozilla/seamonkey/xxxxxxxx.default/places.sqlite \
      /root/my-documents/bkup
    #シャットダウン日時の記録
    touch /root/my-documents/shutdownlog
  ;;
esac
$1 の引数は、start か stop しか来ないので、ダブルクォートでは囲みませんでした。
無い方がすっきりするし。
ブラウザのパスが長いので、見やすい様に、\改行 入れています。

ブラウザは、SeaMonkeyの例です。
571JP、Tahrpupで試しましたが、問題無しで良い感じです。
他にも、付け足したいけど、しばらくこれで様子を見ます。
Tahrpupで試したら、Pale Moonのディレクトリパスに思いっきりスペースが入ってるし。
スペース入りファイル名は、本当に迷惑だと思う。

スクリプトの名前ですが、一応私なりに意味があって、/root/Startup/start.sh で起動時の環境を整えているので、それと対の意味で、end.sh としました。 :D
返信する