【Linux】at コマンドが上手く動かなかった


初歩的なところだけど、atコマンドで指定した時間にスクリプトファイルを

実行するように指示してもうまく動いてくれなかったので

いろいろ試行錯誤してみたら初歩的なミスだったので

直したら動いたって話です。

 

↓やらかしてたパターン


at now+10 minutes -f "/usr/local/share/hogehoge.sh"

 

↓動いたパターン


echo /usr/local/share/hogehoge.sh | at now+10 minutes

 

イケてなかったほうは、atq -> at -c [num] で登録内容確認しても

スクリプトのコードが表示されたのに実行されなかった。

権限の問題か?と思ったけど、

manによると

su でユーザを切り替えた場合は、カレントユーザの権限で実行する

とあったので、特に問題ない認識だった。

 

【原因】-f オプションのミスリード

cronと同じように使えるのかと思ったら、そうでもなかったようです。

 

↓ man の引用

-f file Reads the job from file rather than standard input.

標準入力として受け取るとある。

ファイルとして読み込むだけで

シェルスクリプトとして「実行」はしないからかな、と。

なので -c オプションで実行内容を確認した際、

/usr/local/share/hogehoge.sh の中身が展開されるけど

1行単位で実行できる代物ではなかったので、正常に動作しなかった、と。

 

早とちりはいけませんな。

 

/以上


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です