linuxでコマンドを時刻指定する方法(at コマンド)
指定の日時にコマンドを実行する方法。
crontabと違って、単発で実行することができる。
sqlを時間指定で実行するために調べた。
実行環境
RHEL 6.5
使い方
実行例:
[user@host]$ sudo at hh:mm DD/MM/YY (20YY下2桁)
at> /usr/local/pgsql -U role dbName < /home/user/Query.sql
at> <EOT>
job 1 at 20YY-MM-DD hh:mm
- at 時間:分 日/月/年(下2桁)を入力する。
※このとき、管理者権限で実行すること - カーソルが「at> 」に移動するので、設定したいコマンドを入力する。
※実行したいファイルには、実行権限を付けておくこと。 - 設定したいコマンドを入力後「Enter」を入力すると、次の「at>」の行に飛ばされる。
「ctrl+d」を押すと<EOT>が表示され、設定完了。
注意点
atコマンド設定、実行時は、atdを起動しておくこと。
RHEL 7.X~の場合、
systemctl atd start
または、RHEL6.Xの場合、
/etc/init.d/atd start
atでコマンドを設定する際に、以下の「Can't open ...」メッセージが表示されることがある。
この場合、atdのサービスが起動していないため、コマンドは指定時刻に実行されない。
[user@host]$ sudo at hh:mm DD/MM/YY (20YY下2桁)
at> /usr/local/pgsql -U role dbName < /home/user/Query.sql
at> <EOT>
job 1 at 20YY-MM-DD hh:mm
Can't open /var/run/atd.pid to signal atd. No atd running?