Saya ingin membuat file log untuk skrip cron yang memiliki jam saat ini di nama file log. Ini adalah perintah yang saya coba gunakan:
0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log
Sayangnya saya mendapatkan pesan ini ketika itu berjalan:
/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
/bin/sh: -c: line 1: syntax error: unexpected end of file
Saya telah mencoba melarikan diri dari date
bagian ini dengan berbagai cara, tetapi tidak berhasil. Apakah mungkin membuat ini terjadi secara in-line dalam file crontab atau apakah saya perlu membuat skrip shell untuk melakukan ini?
date +\%Y\ \%m\ \%d\ \%H:\%M:\%S
-cronlogAnda juga bisa memasukkan perintah ke file shell dan kemudian mengeksekusi file shell dengan cron.
jobs.sh
cron
sumber
Jika Anda ingin menjadikan string format tanggal sebagai variabel (untuk menghindari duplikasi seluruh string), JANGAN lepas
%
dan JANGAN memasukkannya ke dalam$()
Misalnya, saat mendeklarasikan string, cukup tulis:
Kemudian, tulis pernyataan cron dengan
$($VARIABLE_NAME)
seperti ini:Berkat cyberx86 , jawabannya di ServerFault mungkin lebih lengkap:
sumber
Di cron, Anda dapat menggunakan sintaks sederhana ini:
sumber
-d
opsi, yang tidak digunakan dalam pertanyaan (dan Anda tidak menjelaskannya). Bagaimana Anda membenarkan menyebut ini "sintaks sederhana"?Semua jawaban di atas menggunakan tanda kutip ganda (tidak semuanya bekerja untuk pengaturan saya). Ini bekerja untuk saya:
sumber
Solusi dasar:
$()
untuk mengeksekusidate
perintah dan mengembalikan output%
karakter dengan\
2>&1
di akhir untuk streaming keduanyastdout
danstderr
ke file log ituContoh:
Keluaran:
sumber