使用Debian GNU/Linux 10 (buster)
,我使用一个简单的脚本来保存PostgreSQL
数据库并将其上传到我的Dropbox
帐户Dropbox-Uploader工具。我用 来安排这个任务crontab
。
当我从提示符直接执行脚本时,一切正常并且执行良好,但是当它从 crontab 运行时,上传操作不会执行 ( ./dropbox_uploader.sh -d upload
)。
我是否缺少执行权限中的某些内容?
剧本(my_script.sh)
#!/bin/bash
# Database dump
pg_dump -U postgres -d my_database > /home/my_user/`date +%Y%m%d`_my_database.sql
# Upload to Dropbox
./dropbox_uploader.sh -d upload /home/my_user/`date +%Y%m%d`_my_database.sql `date +%Y%m%d`_my_database.sql
权限
ls -l my_script.sh
-rwxr-xr-x 1 my_user my_user 732 Apr 7 09:19 my_script.sh
getfacl my_script.sh
# file: my_script.sh
# owner: my_user
# group: my_user
user::rwx
group::r-x
other::r-x
ls -l dropbox_uploader.sh
-rwxr-xr-x 1 root root 52481 Apr 6 16:01 dropbox_uploader.sh
getfacl dropbox_uploader.sh
# file: dropbox_uploader.sh
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
克朗
0 9 * * * /bin/sh /home/my_user/my_script.sh
答案1
修改你的脚本并写入脚本的完整路径 dropbox_uploader.sh
#!/bin/bash
# Database dump
pg_dump -U postgres -d my_database > /home/my_user/`date +%Y%m%d`_my_database.sql
# Upload to Dropbox
/home/my_user/dropbox_uploader.sh -d upload /home/my_user/`date +%Y%m%d`_my_database.sql `date +%Y%m%d`_my_database.sql