Shellscript 可以通过命令行运行,但是不能通过 cron 运行

Shellscript 可以通过命令行运行,但是不能通过 cron 运行

我正在为我们的网站设置备用或故障转移服务器。其中一部分是每晚从生产服务器转储数据库,然后通过 ftp 将其传输到备用服务器。一旦进入备用服务器,我就会清除副本数据库,然后导入新数据转储。我在凌晨 2:00 到 2:25 之间执行此操作,因此两个数据库基本上是同步的。(执行所有这些操作有一个 github 原因,但我不会详细介绍,因为它与我的问题无关。)我有一个非常简单的脚本来执行此操作:

############################
# clear data first - truncate all tables in mydatabase_db1 

echo "purging current standby database"

mysql -uUSER -pPASSWORD -Nse 'show tables' mydatabase_db1 | while read table; do mysql -uUSER -pPASSWORD -e "drop table $table" mydomains_db1; done 

echo 'Data purged from current database'>>/var/www/vhosts/standby.piccexcellence.com/import.log

#import data

echo "Importing production data dump"
mysql -uUSER -ppPASSWORD mydatabase_db1 < pe_data_dump.sql

echo 'Data imported into standby database' >>/var/www/vhosts/standby.piccexcellence.com/import.log
# remove todays data dump (not really, I'm still testing)

# rm /var/www/vhosts/standby.piccexcellence.com/pe_data_dump.sql >> /var/www/vhosts/standby.piccexcellence.com import.log 2>&1

echo 'Data dump file removed'>>/var/www/vhosts/standby.piccexcellence.com/import.log

###########################

我可以毫无问题地从 shell 运行此脚本。但是我无法让 cron 成功运行它。此 cron 作业由 root 设置并由 root 运行。

25      2      *       *       *       /var/www/vhosts/standby.piccexcellence.com/importData.sh

数据转储已从生产服务器成功传送:

-rw-r--r--  1 admin_ftp psacln 621487802 Jun 26 02:00 pe_data_dump.

我不明白为什么 cron 不运行这个。

答案1

好的,没关系,已经明白了。

mysql -uUSER -ppPASSWORD mydatabase_db1 < pe_data_dump.sql

我需要添加转储文件名的完整路径,即 /var/www/vhosts/standby.piccexcellence.com/pe_data_dump.sql

cron 喜欢这个......

相关内容