Cron ส่งเอาต์พุตไปยังจดหมาย หากคุณต้องการเห็นเอาต์พุตในเทอร์มินัลคุณสามารถเข้าสู่ไฟล์และใช้ tail -f เพื่อดูเอาต์พุตในเทอร์มินัลที่คุณต้องการเห็นเอาต์พุต
บันทึกลงไฟล์
- คำตอบที่ง่ายที่สุดคือการเข้าสู่ไฟล์โดยตรงด้วยรายการ crontab เช่น:
0 07-17 * * * /home/dat/scripts/cron.out > /path/to/log.txt 2> /path/to/error.txt
วิธีอื่น ๆ ในการเข้าสู่ระบบ:
- หากโปรแกรมของคุณเป็น scrip ที่สามารถเขียนได้คุณสามารถแก้ไขมันเพื่อเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์บันทึกด้วย
echo output > log.txt
หรือคุณสามารถใช้สคริปต์ตัวตัดคำอธิบายด้านล่าง
- หากโปรแกรมของคุณเป็นแบบไบนารี่หรือไม่สามารถเขียนได้คุณต้องเขียนสคริปต์ตัวคลุมเพื่อจับเอาท์พุทไปยังไฟล์
ตัวอย่างโปรแกรมและสคริปต์ตัวตัดคำ:
$ cat program.sh wrapper.sh
#!/bin/bash
# sample program
echo "arg 1=$1 arg2=$2 arg3=$3"
echo "sample error" >&2
#!/bin/bash
# sample wrapper
exec ./program.sh "$@" >log.txt 2> error.txt
ตัวอย่างการเรียกใช้ 1:
$ ./wrapper.sh 1 2 3 ; cat error.txt log.txt
sample error
arg 1=1 arg2=2 arg3=3
ตัวอย่างการรัน 2:
$ ./wrapper.sh "A B C" D E ; cat error.txt log.txt
sample error
arg 1=A B C arg2=D arg3=E
ดูเอาต์พุตในเทอร์มินัล:
ตอนนี้การบันทึกของคุณทั้งข้อผิดพลาดมาตรฐานและข้อผิดพลาดมาตรฐานไปยังไฟล์ในเทอร์มินัลใด ๆ คุณสามารถรันtail -f
บนหนึ่งหรือทั้งสองไฟล์เช่นtail -f log.txt
หรือtail -f log.txt error.txt
เพื่อให้ส่วนท้ายดูหรือค่อนข้างตามไฟล์เพื่อแก้ไข หางหน้าคน
$ tail -f log.txt error.txt
==> log.txt <==
arg 1=1 arg2=2 arg3=3
==> error.txt <==
sample error
การบันทึกไฟล์ต่อท้าย:
หาก log.txt หรือ error.txt ต่อท้ายจากโปรแกรมของคุณหรือจากเทอร์มินัลอื่นเช่น$ echo "more output" >> log.txt
ในภายหลังจะเห็นเอาต์พุตในเทอร์มินัลที่กำลังทำงานอยู่$ tail -f log.txt error.txt
==> log.txt <==
more output
นอกจากนี้$ echo code red >> error.txt
ผลลัพธ์ใน:
==> error.txt <==
code red