Inilah yang saya ingin otomatiskan:
00 08 * * * psql -Uuser database < query.sql | mail [email protected] -s "query for `date +%Y-%m-%dZ%I:%M`"
Inilah pesan kesalahannya:
/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
Jawaban:
Dari crontab (5) :
Cukup tambahkan garis miring terbalik sebelum tanda%:
sumber
Untuk menyelesaikan masalah, lepaskan% karakter Anda .
date +%Y-%m-%d
seharusnyadate +\%Y-\%m-\%d
Sayangnya jawaban ini agak terlambat tetapi masalahnya bukan PATH atau backticks - masalahnya hanya bahwa karakter% '%' adalah karakter khusus yang digunakan untuk menunjukkan NEWLINE atau STDIN dalam entri crontab .
Ini bertentangan dengan input pemformatan
date
perintah. Dengan demikian perintah yang meliputi:date +%Y-%m-%d
akan diartikan sebagai:date Y- m- d
sumber
Saya punya banyak masalah dengan backticks juga. Terkadang Anda membutuhkan lebih dari satu kemunculan kutipan dan backticks. Cukup ganti mereka dengan $ ().
Contoh:
-Gilson Soares
sumber
Itu tidak ada hubungannya dengan backsticks. Suatu hal yang mengerikan adalah bahwa cron JANGAN melihat PATH, dan Anda HARUS memberi tahu cron "apa PATH itu?" berulang-ulang dalam skrip cron.
Dan saya lebih suka menulis perintah di file daripada melewati perintah secara harfiah di baris cron. Jauh lebih elegan untuk dimiliki
dari
baris ini dapat masuk ke dalam satu file, file chmod + x, dan file ini untuk dipanggil.
sumber