30分後にコマンドやスクリプトを動かしたいがcrontabの設定が面倒くさい
指定した時間にコマンドやスクリプトを実行するのにはcrontabを使います。
「何時何分に実行して欲しい」という絶対時間が決まっているときは
普通にcrontab -e
で設定を編集すればいいですが、
「今から80分後にコマンドを実行したい」というときはちょっと面倒なんですよね。
80分後が何時何分かを計算する必要があります。
そんなわけで、「今から●●分後」にcrontabを設定するシェルスクリプトを作りました。
ChatGPTに作ってもらったのですが、とりあえずうまく動いています。
使い方は、まず、chmod 755 setcrontab.sh
でスクリプトの実行権限を設定します。
実行は以下のようにします。
./setcrontab.sh 時間(分) 実行するコマンドやスクリプトのパス
例:./setcrontab.sh 60 ~/workspace/push_sw.sh
crontabに設定が追記されます。
一応、crontab -e
や crontab -l
で確認しておきましょう。
#!/bin/bash
# 引数の確認
if [ "$#" -ne 2 ]; then
echo "使用法: $0 分 'コマンド'"
exit 1
fi
# 引数から時間(分)とコマンドを取得
MINUTES=$1
COMMAND=$2
# 現在時刻に指定された分を加算
EXEC_TIME=$(date -d "+$MINUTES minutes" '+%M %H %d %m *')
# crontabに追加するためのエントリを生成
CRON_JOB="$EXEC_TIME $COMMAND"
# 現在のcrontabを取得し、新しいジョブを追加
(crontab -l 2>/dev/null; echo "$CRON_JOB") | crontab -
# 確認メッセージ
echo "Crontabに追加されました: $CRON_JOB"