container에서 the input device is not a TTY 로그 출력시 조치
container에 저장된 데이터를 export할때 편리하게 하려고 crontab에 걸어놨는데,
다음날 보니 export된 데이터의 사이즈가 0k.
$> ls -l
total 212
-rw-r--r-- 1 root root 0 Jan 23 01:02 back-2022-01-23.sql
혹시나 싶어서 mail로그를 보니. 이런게 똭..
$> cat /var/spool/mail/root
...
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>
Message-Id: <20220123160541.test-machine>
Date: Mon, 24 Jan 2022 01:02:01 +0900 (KST)
the input device is not a TTY
...
생각해보니 docker exec에서 input + terminal 옵션을 넣었는데 terminal때문에 꼬인듯.
$> cat /root/db_dump.sh
#!/bin/bash
NEW_DATE=$(date +%Y-%m-%d)
OLD_DATE=$(date +%Y-%m-%d -d '-30 days')
if [[ ! -d /home/backup/$NEW_DATE ]]
then
mkdir -p /home/backup/$NEW_DATE
fi
#예전코드
$> docker exec -it postgres pg_dump -U test -d testdb > back-$NEW_DATE.sql
#변경코드
$> docker exec -i postgres pg_dump -U test -d testdb > back-$NEW_DATE.sql
음.. 잘됨.
$> ls -l
total 212
-rw-r--r-- 1 root root 102488 Jan 23 09:54 back-2022-01-23.sql