BashスクリプトをAWKスクリプトに変換

BashスクリプトをAWKスクリプトに変換
CURTIME=$(date '+%s')
LOG=/home/apache_logs.txt
FILETIME1=$(stat $LOG -c %Y)
TIMEDIFF1=$(expr $CURTIME - $FILETIME1)

Ubuntuでこのスクリプトを作成し、そこでうまく動作しますが、SunOS(Generic_150400-64 sun4v sparc sun4v)では動作しません。

このスクリプトはログが更新されていることを確認し、そうでない場合は TIMEDIFF1 の秒単位の出力に基づいてアクションを実行します。

elseがこのようなことをしている場合は、ログが15分前に更新された場合はこれを行い、30分前に更新された場合はこれを行います...など。

したがって、if else 文の効率的な操作のためには、秒単位の出力時間が非常に重要です。

それで、ファイルの寿命(修正/更新されたかどれくらいか)を秒単位で確認しようとします。数秒が必要です。

ベストアンサー1

statの代わりに、次のPerl onelinerを使用できます。

perl -e 'print((stat("/tmp/a"))[10])'

現在の日付の問題を解決するには、touch次のコマンドを使用して一時ファイルを作成し、一時ファイルから修正タイムスタンプを読み取ることができます。

touch /tmp/currtime
CURRTIME=$(perl -e 'print((stat("/tmp/currtime"))[10])')
FILETIME=$(perl -e 'print((stat("/path/to/log"))[10])')
DIFFTIME=$(($CURRTIME - $FILETIME))
echo "Time difference is $DIFFTIME seconds"
#cleanup
rm /tmp/currtime

perl stat() コマンドへの参照は以下にあります。https://perldoc.perl.org/functions/stat.html

おすすめ記事