我正在尝试创建一个每晚创建数据库备份的 cronjob。
我的 crontab 有这个任务:(
* * * * * /home/user/scripts/backup.sh
为了测试,将其设置为每分钟执行一次)
在 backup.sh 中,我有:
docker exec -it dbContainer pg_dump -U username -d dbName > /home/user/backups/testingBackup.sql
该文件始终为空:
-rw-rw-r-- 1 user user 0 Jul 14 08:39 testingBackup.sql
但是,如果我自己运行该文件并输入命令/home/user/scripts/backup.sh
,它就不为空:
-rw-rw-r-- 1 user user 30813 Jul 14 08:45 testingBackup.sql
我觉得权限问题很正常,但一切都是从“用户”那里完成的。我没有从 root 那里执行任何操作,例如 sudo crontab... sudo /home/user/backups/testingBackup.sql 等。
我很困惑为什么在一种情况下,生成的文件是空的,而在另一种情况下,生成的文件不是空的。
谢谢你的帮助
答案1
对于我在 sh 文件中的命令:
docker exec -it dbContainer pg_dump -U username -d dbName > /home/user/backups/testingBackup.sql
它以交互模式 (-it) 运行。如果我删除它,一切正常(因此命令是:
docker exec dbContainer pg_dump -U username -d dbName > /home/user/backups/testingBackup.sql