前提・ 実現したいこと
atコマンドでbashシェルスクリプトを時間指定で実行したいのですが、実行時間になっても何も起きません。atqでは実行前はちゃんとキューに入っているのですが・・・
該当のソースコード
bash
1at -f hoge.sh 12:00
試したこと
sudo権限がないので、権限の問題かと思い、at.allowファイルを探しましたが無く、代わりにat.denyというファイルは存在しました。
補足情報(FW/ツールのバージョンなど)
Ubuntu 20.04
hoge.sh の中身(処理の内容)はどういうものなのでしょう? それから、Ubuntu の場合は /var/log/auth.log に atd の実行記録が残るので確認してみるとよいかもしれません。
ありがとうございます。hoge.shの中身はかなり長いので掲載できないのですが、sudoなしでbash hoge.shは成功しますので中身は問題ないと考えています。auth.logはviで見ようとしたのですが、権限がないので見れませんでした。
at コマンドで投入したシェルスクリプトは /bin/sh で実行されます。Ubuntu の場合、/bin/sh の実体は /bin/dash なので、hoge.sh の内部で bash 特有の機能を使用している場合にはエラーになります。
すみません、試しに
#!/bin/bash
echo "test"
という単純なbashファイルをatコマンドで実行してみようとしましたがこれもできなかったです。
どうすれば良いかわかりますか?
echo 'echo "test" > /tmp/test.log; chmod 0644 /tmp/test.log' | at 12:00
を実行して(時刻は適当に調整して下さい)、/tmp/test.log の中身を確認してみて下さい。それから、at コマンドで echo "test" などとしても使用している端末(terminal)には表示されません。
少し改変して
echo 'bash hoge.sh > /tmp/test.log; chmod 0644 /tmp/test.log' | at 12:00
で試したら動きました!
ありがとうございます。自己解決にしてもよろしいでしょうか?
はい、どうぞ。
回答2件
あなたの回答
tips
プレビュー