我正在尝试将SQL文件导入到我的mysqlDB中,这应该每5分钟发生一次,因此我使用了crontab -e:
*/5 * * * * /usr/bin/mysql -u root -pexpress azuzDB < /home/admin/Desktop/backups/backup_n1.sql
好吧,cron工作正常,但是在问题上,backup_n * .sql名称也每5分钟更改一次,我对文件夹中的最新sql文件感兴趣所以我想知道获取最新文件通过应用此命令:
ls /home/admin/Desktop/backups -Art | tail -n 1
所以我想传递这个命令输出,它是=(backup_n * .sql&#34;最近的&#34;)
在import cron job命令中我在crontab中使用任何解决方案来传递centos的crontab中的变量?
最后一个输出是这样的:
* * * * * lastSQL= ls /home/admin/Desktop/backups -Art | tail -n 1
*/5 * * * * /usr/bin/mysql -u root -pexpress azuzDB < /home/admin/Desktop/backups/$lastSQL
答案 0 :(得分:1)
我建议你创建一个shell脚本,比如叫/home/admin/import.sh
$ cat import.sh
#! /bin/bash
dir=/home/admin/Desktop/backups/
file=$( ls -At $dir )
/usr/bin/mysql -u root -pexpress azuzDB < ${dir}/${file}
让你的crontab看起来像:
*/5 * * * * /bin/bash /home/admin/import.sh
答案 1 :(得分:0)
如评论中所示,获取最后一个文件的方式可以是:
ls -Art | tail -n 1
如果将其包裹在$()
内,则无论何时放置它都会进行评估。因此,您可以这样做:
/usr/bin/mysql -u root -pexpress azuzDB < /home/admin/Desktop/backups/$(ls -Art /home/admin/Desktop/backups -Art | tail -n 1)