2010-08-09 24 views
6

Các công việc sau tốt từ dòng lệnhlỗi Cron với việc sử dụng backquotes

/usr/bin/mysqldump -uUser -pPass Db_name > /var/www/db_backup/db.`date +%Y%m%d%H%M`.sql 

nhưng khi tôi cố gắng làm điều đó trong cron, tôi nhận được lỗi:

bad ` sign 
errors in crontab file, can't install 

tôi thấy một người nào khác trên net giải quyết cùng một vấn đề bằng cách thoát khỏi các dấu hiệu phần trăm, nhưng điều đó đã không giúp đỡ và tôi đã thử nó chỉ với ngày bên trong backquotes không có định dạng specifiers và vẫn có lỗi.

Tôi cũng đã thấy đối số của ngày được đính kèm trong dấu ngoặc đơn hoặc kép, nhưng điều đó cũng không giúp ích gì.

Cấp cho tôi chỉ có thể ném nó vào một kịch bản và thực hiện mà tôi giả sử - nhưng điều thú vị là gì?

Bất kỳ ý tưởng nào? Tôi đang sử dụng RHEL 5.

+0

đọc 'man crontab' để xem phải làm gì với các ký hiệu phần trăm. –

Trả lời

14

Hãy thử nó với $() thay vì backticks. Và bạn có thể cần phải thoát khỏi các dấu hiệu phần trăm kể từ khi cron chuyển đổi chúng thành newlines nếu không.

* 0 * * * /usr/bin/mysqldump -uUser -pPass Db_name > /var/www/db_backup/db.$(date +\%Y\%m\%d\%H\%M).sql 

Ngoài ra, bạn nên store the password in an option file với quyền bảo mật (ví dụ: 600 hoặc 640) thay vì truyền trên dòng lệnh.

+0

Cảm ơn bạn! Đó chỉ là những gì tôi đang tìm kiếm. Và cảm ơn cho tip về tập tin tùy chọn là tốt. – amac44

4

Đặt một kịch bản đơn hàng (như hình) vào một tập tin kịch bản thích hợp và gọi đó từ cron:

$ cat /usr/local/bin/db-backup 
#!/bin/sh 
/usr/bin/mysqldump -uUser -pPass Db_name > \ 
    /var/www/db_backup/db.`date +%Y%m%d%H%M`.sql 
$ # use RHEL commands to add db-backup to your crontab 
Các vấn đề liên quan