How to redirect stdout and stderr to log file
วิธีการ redirect standard output และ standard error ไปเก็บไว้ยัง log file
การ redirect stdout and stderr ไปยัง log file ที่ถูกต้อง
command > /path/to/log 2>&1
ระบบจะทำการ redirect stdout ไปยัง log file และพร้อมกับ redirect stderr ไปยัง stdout ซึ่งส่งผลให้ทั้ง stdout และ stderr ถูก redirect เข้า log file
ตัวอย่างเช่น
ทดสอบการ redirect ด้วยคำสั่ง ls -l
[tum@ezylinux test]$ ls -l > log2 2>&1
ตรวจสอบข้อมูลข้างในพบว่ามีข้อมูลที่ได้ redirect ไป
[tum@ezylinux test]$ cat log2
total 0
-rw-rw-r-- 1 t1sb t1sb 0 Nov 3 17:02 log2
ทดสอบการ redirect ด้วยคำสั่ง lss -l (ตั้งใจให้เกิด error)
[tum@ezylinux test]$ lss -l > log2 2>&1
ตรวจสอบข้อมูลข้างในพบว่ามีข้อมูล error ที่ได้ redirect ไป
[tum@ezylinux test]$ cat log2
-bash: lss: command not found
การ redirect stdout and stderr ไปยัง log file ที่ผิด
command 2>&1 > /path/to/log
ระบบจะทำการ redirect stderr ไปยัง stdout ที่จะส่งผลลัพธ์ออก console และ stdout ที่ได้ทำการ redirect จะส่งเข้าไปยัง log file ซึ่งส่งผลให้เมื่อเกิด error ขึ้นจะถูกแสดงออกที่หน้า console ส่วนผลลัพธ์จะถูก redirect เข้า log file
ทดสอบการ redirect ด้วยคำสั่ง ls -l
[tum@ezylinux test]$ ls -l 2>&1 > log2
ตรวจสอบข้อมูลข้างในพบว่ามีข้อมูลที่ได้ redirect ไป
[tum@ezylinux test]$ cat log2
total 0
-rw-rw-r-- 1 t1sb t1sb 0 Nov 3 17:00 log2
ทดสอบการ redirect ด้วยคำสั่ง lss -l (ตั้งใจให้เกิด error) จะพบ error ถูกส่งออกมายัง console แทนที่จะถูกส่งเข้าไฟล์
[tum@ezylinux test]$ lss -l 2>&1 > log2
-bash: lss: command not found
ตรวจสอบข้อมูลข้างในพบว่ามีข้อมูล error ที่ได้ redirect ไป จะไม่พบ error อะไรเลย
[tum@ezylinux test]$ cat log2