![Shellscript 可以通过命令行运行,但是不能通过 cron 运行](https://linux22.com/image/1533904/Shellscript%20%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E5%91%BD%E4%BB%A4%E8%A1%8C%E8%BF%90%E8%A1%8C%EF%BC%8C%E4%BD%86%E6%98%AF%E4%B8%8D%E8%83%BD%E9%80%9A%E8%BF%87%20cron%20%E8%BF%90%E8%A1%8C.png)
我正在为我们的网站设置备用或故障转移服务器。其中一部分是每晚从生产服务器转储数据库,然后通过 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 喜欢这个......