Raspberry Pi シェル内でOS経過時刻を判定する

Raspberry Pi Zero WHに4Gモジュールを接続する3にて、OS起動時から規定経過時間以内に、PPP接続できなかった場合、OSリブートするように仕込みました。その仕込み先は、シェルスクリプトですが、規定経過をどのように判定したかを解説します。

通常、シェル内で現在時や取得できますが、OS起動からの経過時刻を取得するコマンドが見つかりませんでした。..しかし、 pythonでは組みたくない。言われてみるとWindowsにもないような... .困りました...そうだ 新しいコマンドを作ってしまえばいい。

OS起動からの経過時刻は、カーネルシステムコール:times() です。コマンドのソースコードは以下の通りです。ラズパイでは単位はmsecになるようです。

#include <stdio.h>
#include <sys/times.h>
#include <memory.h>

struct	tms	tmwk;

int main(int ac, char **av)
{
	printf("%lu\n", times( 0 ) );
}

デバック不要なので、コマンドラインで一回だけビルトします。

cc -o passtime passtime.c 

このpasstimeコマンドを、シェルから ` …` で呼出し、シェル変数に取り込みます。

START_10MSEC=`passtime`

while [ 1 ];do
   NOW_10MSEC=`passtime`
   PASS_10MSEC=$(( $NOW_10MSEC - $START_10MSEC ))

   # pass 5 min
   if [ $PASS_10MSEC -gt 30000 ];then
	shutdown -r now 
   fi

   # under flow timer
   if [ $PASS_10MSEC -lt 0 ];then
	shutdown -r now >> $ASAHI_LOG
   fi

一応、アンダーフロー時も処置しておきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です