Linux Mac シェルコマンド シェルスクリプト プログラミング

一定時間後にcrontabの実行を設定するシェルスクリプトを作った

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"

-Linux, Mac, シェルコマンド, シェルスクリプト, プログラミング