ホームページをリニューアルしました。旧HPはこちら
ソフト・ハードウェア Linux さくら

2024-03-10 FreeBSD dateコマンドとWSL2の時刻合わせ

備忘録1、FreeBSDのdate関数と変数代入

FreeBSDにおいてdate関数の出力結果を変数に代入する方法がわからなかったので、chatGPTに聞いてみた。

FreeBSDでは、dateコマンドを使用して現在の日付や時刻を取得し、変数に代入することができます。
以下に、その例を示します。

# 現在の日時を取得し、変数に代入する例
current_date=$(date "+%Y-%m-%d")
current_time=$(date "+%H:%M:%S")

echo "現在の日付は $current_date です。"
echo "現在の時刻は $current_time です。"

これを使って、ESP32-CAMで撮影したimgファイルを定期的にarchive fileに移動するシェルスクリプトを作成し、さくらのサーバー ./wstat/job_daily3.shに追記した。追記スクリプトは下記の通り。

##### mv_file_iotcam.sh #####

# ファイルの移動元ディレクトリ
source_dir="./iot-cam/uploads"
# ファイルの移動先ディレクトリ
destination_dir="./iot-cam/archive_image"

# ubuntu --> B4DAY=`date -d '-4day' "+%Y-%m-%d"`  ;`` <-- shift+@
# BSD format: 10日前の作成ファイルを移動する
B10DAY=$(date -v -10d "+%Y-%m-%d")
mv ${source_dir}/${B10DAY}* ${destination_dir}/
備忘録2、WSL2(Windows Subsystem for Linux)の時刻合わせ

WSL2のUbuntuの時刻がかなりの勢いでずれる。これはWSL2ではHyper-Vを利用して完全なエミュレーションでLinuxカーネルそのものが動作するので、仮想マシンとしてWindowsから独立したからだと思われる。ネット記事でもこの時刻合わせの問題が取り上げられている。
その対処方法としては、WSL2を起動した時点で毎回、”sudo hwclock -s”
コマンドを打ち込んでいたが、パスワードを入れるのも面倒なので、起動時に自動的にsudoコマンドなしで時刻合わせできるようようにした。

1、/etc/sudoersにhwclockコマンドをパスワードなしで実行できるように設定
sudo visudoコマンドを実行して、/etc/sudoersファイルを下記のように編集

# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
%sudo ALL=(ALL) NOPASSWD: /usr/sbin/hwclock -s    #この行を追加

2、~/.bashrcにhwclockコマンドを追加
ホームディレクトリにある.bashrcファイルの最後に下記の行を追加

# sync HW clock
sudo hwclock -s

これで時計合わせのわずらわしさから解放された・・・。

参考記事:

 

コメント

タイトルとURLをコピーしました