dポイントプレゼントキャンペーン実施中!

cronでaws_s3にデータを格納するbashスクリプトのテストをしています。

構文①は以下(/home/user/sampleA.sh)###############
#!/bin/bash

aws s3 cp /A/B/C.csv s3://D/E/F/
echo $? > sample.log
#######################




cron構文②は以下(/etc/cron.d/aa-bb-cc)###############
30 10 * * * user sh /home/user/sampleA.sh
#######################


ちなみに手動でシェル①を実行するとうまくいくのですが、cronで動かすとcron
自体の処理は実行されているように思います。
※①のcat sample.log
をすると
手動→結果0
cron→127

となっています。
原因は何と考えられるか、もしくはどういった確認をしていけばよろしいでしょうか。

A 回答 (3件)

aws をフルパスで書きましょう。

    • good
    • 0

https://ja.m.wikipedia.org/wiki/%E7%B5%82%E4%BA% …

bashで127だとコマンドが見つからなかったっぽいですな。

awsコマンドは何処に?
というか…cronの時の『お約束』ですが、環境変数とかどうなってますかね?

echo $? > sample.log
の代わりに、
pintenv > env.txt
とかやってみたらどうでしょうかね?
    • good
    • 0

ご参考までに、以下のようなテストを行ってみました。



1. /var/spool/cron/crontabs/...ファイルに以下の2行を追加。

* * * * * /usr/test # 存在しないスクリプト。
* * * * * /tmp/Check # 内容に誤りがあるスクリプト。

注釈のように/usr/testなるスクリプトファイルは存在しません。Checkスクリプトの中身は次のとおりです。

#!/bin/csh -f
echo "SuccessCode"
ecoo "MistakeCode"

どちらのcron命令もエラーを発生するはずですが、システム内を探してもそのものを示すメッセージを見つけることができませんでした。

2.そこで/var/spool/cron/crontabs/...ファイルを次のように変更します。

* * * * * /usr/test > /tmp/test.log 2>&1 # 存在しないスクリプト。
* * * * * /tmp/Check > /tmp/Check.log 2>&1 # 内容に誤りがある。

しばらく経ってから次の様に確認できました。

$ cat /tmp/test.log
/bin/sh: 1: /usr/test: not found
$
$ cat /tmp/Check.log
SuccessCode
ecoo: Command not found.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!