質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

2回答

3098閲覧

atコマンドが実行されない

6606akira

総合スコア6

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

1グッド

0クリップ

投稿2022/12/11 04:40

編集2022/12/11 04:48

前提・ 実現したいこと

atコマンドでbashシェルスクリプトを時間指定で実行したいのですが、実行時間になっても何も起きません。atqでは実行前はちゃんとキューに入っているのですが・・・

該当のソースコード

bash

1at -f hoge.sh 12:00

試したこと

sudo権限がないので、権限の問題かと思い、at.allowファイルを探しましたが無く、代わりにat.denyというファイルは存在しました。

補足情報(FW/ツールのバージョンなど)

Ubuntu 20.04

melian😄を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2022/12/11 05:14

hoge.sh の中身(処理の内容)はどういうものなのでしょう? それから、Ubuntu の場合は /var/log/auth.log に atd の実行記録が残るので確認してみるとよいかもしれません。
6606akira

2022/12/11 05:35 編集

ありがとうございます。hoge.shの中身はかなり長いので掲載できないのですが、sudoなしでbash hoge.shは成功しますので中身は問題ないと考えています。auth.logはviで見ようとしたのですが、権限がないので見れませんでした。
melian

2022/12/11 05:49 編集

at コマンドで投入したシェルスクリプトは /bin/sh で実行されます。Ubuntu の場合、/bin/sh の実体は /bin/dash なので、hoge.sh の内部で bash 特有の機能を使用している場合にはエラーになります。
6606akira

2022/12/13 02:35

すみません、試しに #!/bin/bash echo "test" という単純なbashファイルをatコマンドで実行してみようとしましたがこれもできなかったです。 どうすれば良いかわかりますか?
melian

2022/12/13 02:50

echo 'echo "test" > /tmp/test.log; chmod 0644 /tmp/test.log' | at 12:00 を実行して(時刻は適当に調整して下さい)、/tmp/test.log の中身を確認してみて下さい。それから、at コマンドで echo "test" などとしても使用している端末(terminal)には表示されません。
6606akira

2022/12/13 04:45 編集

少し改変して echo 'bash hoge.sh > /tmp/test.log; chmod 0644 /tmp/test.log' | at 12:00 で試したら動きました! ありがとうございます。自己解決にしてもよろしいでしょうか?
melian

2022/12/13 04:49

はい、どうぞ。
guest

回答2

0

自己解決

echo 'bash hoge.sh > /tmp/test.log; chmod 0644 /tmp/test.log' | at 12:00
で動いた

投稿2022/12/13 04:51

6606akira

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

atqでは実行前はちゃんとキューに入っているのですが・・・

指定時刻前はatqで表示されるが、時刻以降はatqで表示されないと言うことなら、実行されています。
echo "pwd > $HOME/at.log" | at 12:00
等で、atコマンドの使用自体には問題が無いことを確認しましょう。

あとは、スクリプトの中身次第ですね。メール環境がちゃんとしていれば、実行時にエラーメッセージなど何か出力があれば実行ユーザー宛にメールが届きます。メール環境がちゃんとしていない場合は、スクリプトファイル先頭に、
exec >$HOME/at.log 2>&1
を入れて、出力を確認しましょう。

投稿2022/12/11 13:55

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

6606akira

2022/12/13 02:33 編集

ありがとうございます。echo "pwd > $HOME/at.log" | at 12:00で確認できるのですが、 exec >$HOME/at.log 2>&1で生成されるat.logはrootでないと閲覧できないです・・・
otn

2022/12/13 02:44 編集

sudo権限が無いと言うことなので、atコマンドをrootで実行しているわけでは無いのですよね? $HOME/at.log は実行しているユーザーが作成しますので、閲覧できないというのは何かの勘違いでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問