ฉันจะเพิ่มการประทับเวลาที่ส่วนท้ายของชื่อไฟล์เอาต์พุตของ cron


5

ฉันต้องการติดตามเอาต์พุต crontab แต่ละรายการเพื่อแยกไฟล์ ปกติฉันจะใช้สิ่งนี้เป็นรายการ crontab:

1  *    * * *   root    php /mix/dostuff.php > /tmp/dostuff.txt

ตอนนี้ฉันต้องการให้มันเขียนแทน /tmp/dostuff.txtถึง /tmp/dostuff-YYYY-MM-DD-HH-II-SS.txt

ฉันจะได้รับส่วนวันที่โดยใช้สิ่งนี้:

TIMESTAMP=`date +%Y-%m-%H\ %k:%M:%S`

ตอนนี้ฉันจะติด TIMESTAMP นี้ในไฟล์เอาต์พุตได้อย่างไร

คำตอบ:


1

crontabs ทำงานในสภาพแวดล้อมที่แตกต่างจากเชลล์เริ่มต้นดังนั้นคุณสามารถใช้เชลล์สคริปต์ขนาดเล็กภายใต้โฮมไดเร็กตอรี่ของคุณด้วยสิ่งนี้ (เราจะตั้งชื่อมัน) script.sh ):

#!/bin/bash
php /mix/dostuff.php > /tmp/dostuff-`date +%Y-%m-%H\ %k:%M:%S`.txt
exit

จากนั้นเปลี่ยนการอนุญาตสคริปต์นี้เพื่อให้แน่ใจว่าสามารถเรียกใช้งานได้ 755 ควรจะใช้ได้ จากนั้นใน crontab ของคุณ:

1  *    * * *   root    /home/yourusername/script.sh

อย่างไรฉันเห็น ขอบคุณสำหรับการตรัสรู้
ariefbayu

1
ระวัง %Y-%m-%H ไม่ใช่ชุดค่าผสมวันเดือนปี - ลอง %Y-%m-%d !
shuckc

8
1  *    * * *   root    php /mix/dostuff.php > "/tmp/dostuff-`date +\%Y-\%m-\%H\ \%k:\%M:\%S`.txt"

เรียบง่ายเหมือนที่


จะไม่ทำงาน crontabs ไม่ได้รับการประเมินในสภาพแวดล้อมเดียวกันกับเชลล์เริ่มต้น
John T

2
ฉันไม่เห็นว่าสิ่งนี้จะเป็นปัญหาได้ที่นี่ สภาพแวดล้อม cron นั้นเพียงพอสำหรับคำสั่งนี้ นอกจากนี้ยังใช้งานได้ฉันเพิ่งทดสอบด้วยตัวเอง
Etienne Dechamps

cron แยกวิเคราะห์ไฟล์ไม่ใช่ /bin/bashนั่นคือเหตุผล
John T

3
crontab (5): "ฟิลด์` `six '' (ส่วนที่เหลือของบรรทัด) ระบุคำสั่งที่จะรันส่วนคำสั่งทั้งหมดของบรรทัดจนถึงบรรทัดใหม่หรืออักขระ% จะถูกดำเนินการโดย / bin / sh หรือเชลล์ที่ระบุในตัวแปร SHELL ของไฟล์ crontab " คุณยังสามารถเขียนเชลล์สคริปต์ทั้งหมดในบรรทัด crontab หากคุณต้องการ!
Etienne Dechamps

1
ช่องว่างระหว่างวันที่และ + เป็นสิ่งสำคัญมากสำหรับคนต่อไปที่เข้ามา
jcollum

2

บน CentOS 6.6 ฉันใช้

*/10 * * * * /usr/bin/php -q /var/www/script.php > cron-job-log-$(date +\%Y\%m\%d\%H\%M\%S).txt

มันจะสร้างไฟล์ทุก 10 นาที

cron-job-log-20150401124001.txt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.