タスクを実行した後、クローンメール転送が機能するかどうかをテストしたいと思います。これをテストしてから、数秒ごとに実行するようにcronジョブを設定するよりエレガントな方法はありますか?それでは、cronジョブの実行をシミュレートするか、cronジョブを手動で起動しますが、cronが自動的に実行されたときと同じ動作を実行する方法はありますか?
ベストアンサー1
コマンドラインでcronジョブを実行することとcron内でcronジョブを実行することの主な違いは、環境です。他の潜在的な違いには、現在のディレクトリ、端末の可用性、使用されているシェルなどがあります。
これは、cronを介してcronジョブを実行する非常に正確なシミュレーションです。シェルによる違いを避けるために、タスクをスクリプトに入れ、スクリプトパスのみをcrontabに入力してください。 cronが渡す環境変数の正確な設定と値は実装によって異なります。crontab(5)
システムのマニュアルページを確認してください。ifne
入力を受け取ると、引数で指定されたコマンドを実行するコマンドです。その他のユーティリティ。
env -i HOME="$HOME" LOGNAME="$LOGNAME" PATH=/usr/bin:/bin SHELL=/bin/sh USER="$USER" \
/path/to/script </dev/null 2>&1 |
ifne mail -r "Cron Daemon" -s "Cron <$USER@$(hostname)> /path/to/script" "$USER"
cronに似た設定を作成する別の方法は次のとおりです。at
。ただし、プロセスで受け取った環境変数をat
使用してコマンドを実行する役割を担うので、この部分は依然として模擬作業を必要とします。at
echo /path/to/script |
env -i HOME="$HOME" LOGNAME="$LOGNAME" PATH=/usr/bin:/bin SHELL=/bin/sh USER="$USER" \
at now