2014-05-15 1 views
0

난 내 mysqlDB에 SQL 파일 수입을 수행하기 위해 노력하고있는 변수 값을 전달, 잘은 매 5 개 민트을 발생한다, 그러므로 나는의 crontab -e를 사용 미세하지만 문제의 문제에 backup_n는 * .SQL 이름은 매 5 개 민트을 변경하고 난 그래서 난이 명령을 적용하여 최신 파일을 얻을 아이디어와 함께 폴더에 최신 SQL 파일에 관심이 :가 crontab을

ls /home/admin/Desktop/backups -Art | tail -n 1 

그래서이 명령 출력을 전달하고 싶습니다 = (backup_n * .sql "most recen t ")의 난에 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 
+2

이 모든 작업을 수행하는 스크립트를 만드는 것이 좋습니다. 그렇지 않으면 cronjob을 읽기가 어려울 것입니다. 'file = $ (ls -Art | tail -n 1)'도해야합니다. – fedorqui

+0

나는 그것을 가져 오지 못했습니다. 스크립트가 import 명령으로 즉시 실행되어야합니다. 그래서 import 명령의 끝에서 스크립트의 출력을 어떻게 만들 수 있습니까? –

+0

파이프가 "트릭"합니까? –

답변

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) 
1

을 나는 당신이 쉘 스크립트를 작성하는 것이 좋습니다,

$ cat import.sh 
#! /bin/bash 
dir=/home/admin/Desktop/backups/ 
file=$(ls -At $dir) 
/usr/bin/mysql -u root -pexpress azuzDB < ${dir}/${file} 

을 /home/admin/import.sh 전화를 같이하기 위해 crontab을이 말 :

*/5 * * * * /bin/bash /home/admin/import.sh 
+0

네, 더 적절하고 쉽게 구현할 수 있습니다. –

관련 문제