使用 crontab 执行 ./script.sh

使用 crontab 执行 ./script.sh

使用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

我读过这个邮政和这个邮政,但我认为我缺少一些具有dropbox_uploader.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

相关内容