Cách đây một thời gian tôi đã tạo một kịch bản và tôi đã thêm một số ghi nhật ký xung quanh nó, nhưng tôi quên cách chuyển hướng cho việc ghi nhật ký hoạt động :-(
Ý chính của nó là:
#!/bin/bash
LOGFILE=/some/path/mylogfile
(
# here go my commands which produce some stdout
# and, if something goes wrong, also some stderr
) 1>>${LOGFILE} 2> >( tee -a ${LOGFILE} >&2 )
Khi tôi chạy tập lệnh, nó không in bất cứ thứ gì stdout
, mà chỉ in những gì đi đến stderr
. Logfile ${LOGFILE}
chụp cả stdout và stderr.
Khi tôi chạy tập lệnh và không có đầu ra trên thiết bị đầu cuối của mình, thì tôi biết mọi thứ đều ổn. Nếu có bất kỳ đầu ra nào, tôi biết có gì đó không ổn và tôi có thể kiểm tra logfile để tìm hiểu vấn đề là gì.
Phần chuyển hướng hiện đang đánh đố tôi là cú pháp của: 2> >( some command )
Bất cứ ai có thể giải thích những gì đang xảy ra ở đó?
echo <(date)
, nó sẽ cho tôi tên của tệp được thay thế :/dev/fd/63
. Nếu tôi thực thicat <(date)
, nó sẽ cho tôi ngày, tức là nội dung của tệp được thay thế :Fri Nov 18 14:11:09 NZDT 2016
.