- OS:Ubuntu20.04LTS
Cronの設定をしているのですが、うまくいっておりません。
crontab
1SHELL=/bin/bash 2PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 3# for every month 1st Day inputted Check all clear 430 * * * * root /bin/bash /usr/local/src/apg/cron/resetCheck.sh >> /tmp/test.log
resetCheck.sh
1#!/bin/bash 2docker exec -it $(docker ps -aqf name=apg_db_1) psql -f /var/opt/sql/resetCheck.sql -U apg -d apg
cronではなく、単独で走らせるとtest.logに結果が出力され、うまくshellスクリプトが走ります。
ただ、Cronは走っているようです。/var/log/syslogにはログが残っており、また、test.logは出力されます。
test.logには何も結果が記載されていないです。
shellスクリプトは、データベースの中を書き換えるプログラムなのですが、その結果は反映されていないです。
何を疑えばよいかアドバイスいただけないでしょうか?
/usr/local/src/apg/cron/resetCheck.sh >> /tmp/test.log
を
/usr/local/src/apg/cron/resetCheck.sh >> /tmp/test.log 2>&1
に変更して、stderr への出力も /tmp/test.log に追記する様にしてみてはどうでしょうか。
ありがとうございます!
ヒントをいただけました。
the input device is not a TTY
という結果がtest.logに残るようになりました。
なんとか進めてみます!
docker exec の -i オプションはターミナル (というか標準入力) からの入力を受け付けるという意味なので…。
オプションのitをなくすことで解決いたしました。
回答1件