Tôi đã viết một tập lệnh bash đơn giản có tên ghi-date.sh
mà chỉ cần ghi ngày vào một tập tin:
#!/bin/bash
echo "$(date) Viết xong" >> write-date.log
Và tôi đang chạy tập lệnh bash cứ sau 60 giây như thế này:
xem -n 60 ./write-date.sh
Tuy nhiên, khi tôi chạy lệnh, đầu ra được tạo trong ghi-date.log
tệp chứa đầu ra như trong đoạn mã ở đây:
Thứ năm ngày 1 tháng 7 09:42:03 BST 2021 Viết xong
Thứ năm ngày 1 tháng 7 09:42:03 BST 2021 Viết xong
Thứ năm ngày 1 tháng 7 09:42:03 BST 2021 Viết xong
Thứ năm ngày 1 tháng 7 09:42:03 BST 2021 Viết xong
Thứ năm ngày 1 tháng 7 09:42:03 BST 2021 Viết Xong
Thứ năm ngày 1 tháng 7 09:42:04 BST 2021 Viết xong
Thứ năm ngày 1 tháng 7 09:42:04 BST 2021 Viết xong
Thứ năm ngày 1 tháng 7 09:42:04 BST 2021 Viết xong
Thứ năm ngày 1 tháng 7 09:42:04 BST 2021 Viết Xong
Thứ năm ngày 1 tháng 7 09:42:04 BST 2021 Viết xong
Thứ năm ngày 1 tháng 7 09:42:04 BST 2021 Viết xong
Thứ năm ngày 1 tháng 7 09:42:04 BST 2021 Viết xong
Thứ năm ngày 1 tháng 7 09:42:04 BST 2021 Viết xong
Thứ năm ngày 1 tháng 7 09:42:04 BST 2021 Viết xong
Thứ năm ngày 1 tháng 7 09:43:04 BST 2021 Viết Xong
Thứ năm ngày 1 tháng 7 09:43:26 BST 2021 Viết Xong
Thứ năm ngày 1 tháng 7 09:44:26 BST 2021 Viết Xong
Thứ năm ngày 1 tháng 7 09:45:26 BST 2021 Viết Xong
Thứ năm ngày 1 tháng 7 09:46:26 BST 2021 Viết Xong
Thứ năm ngày 1 tháng 7 09:47:26 BST 2021 Viết Xong
Thứ năm ngày 1 tháng 7 09:48:26 BST 2021 Viết Xong
Có thể thấy, có những lúc ngày được ghi vào tệp nhật ký nhiều hơn một lần mỗi phút (lúc 09:42 và 09:43 trong đoạn mã mẫu này) và tôi không thể hiểu tại sao điều này có thể... lệnh đồng hồ sai? Bản thân tập lệnh bash có sai không? Có một vấn đề đồng hồ hệ thống ở đâu đó?
Hệ điều hành là Ubuntu 20.04 trong đó tên -a
Là:
Máy Linux 5.4.0-77-generic #86-Ubuntu SMP Thứ Năm, ngày 17 tháng 6 02:35:03 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
Tôi cũng nên chỉ ra rằng lý do của tập lệnh này là do tôi đang gặp sự cố khi hệ thống tệp gốc của hệ điều hành chuyển sang chế độ chỉ đọc cứ sau vài giờ hoặc đôi khi vài ngày một lần và vì vậy tôi đang cố gắng tìm hiểu ngày và giờ khi điều này xảy ra để sau này tôi có thể xem xét /var/log/syslog
khoảng thời gian đó để xem có điều gì bất thường xảy ra với hệ thống vào thời điểm đó không.
--- CẬP NHẬT ---
Đã ngừng chạy lệnh và xóa tệp nhật ký và chạy lại lệnh từ đầu và bây giờ ngày được ghi lại một lần mỗi phút như người ta mong đợi.
Như đã chỉ ra trong các nhận xét, các nhật ký trùng lặp được in có thể là từ một lần chạy tập lệnh tinh ranh trước đó (có thể là lỗi người dùng) nhưng tôi không thể nghĩ điều này có thể xảy ra như thế nào hoặc khi nào. Dù sao thì nó cũng sẽ tiếp tục chạy hàng giờ/ngày vì vậy hãy để mắt đến nó.