Điểm:2

Xem Sự cố Lệnh, Sự cố Tập lệnh Bash hay Sự cố Hệ thống?

lá cờ in

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ó.

muru avatar
lá cờ us
Bạn đang **nối** (`>>`) vào nhật ký. Bạn có chắc chắn rằng các mục trước `09:43:26` không có ở đó trước khi bạn bắt đầu `xem` không? Không có `09:23` trong mẫu.
Going Bananas avatar
lá cờ in
@muru Xin lỗi, 09:23 là một lỗi đánh máy mà lẽ ra phải là 09:42. Tôi sẽ chỉnh sửa bài đăng để sửa lỗi đánh máy... Ngoài ra, tôi đã xóa tệp và chạy lại từ đầu và hiện tại nó chỉ viết một lần mỗi giây như người ta mong đợi nên có thể đó là dữ liệu cũ từ một lần tinh ranh trước đó tập lệnh chạy nhưng tôi không thể nghĩ khi nào điều đó có thể xảy ra nhưng nó chỉ ra lỗi người dùng. Tôi sẽ tiếp tục chạy các lần chạy khác nhau trong một thời gian để xem sự cố có tái diễn không. sẽ thêm chi tiết này trong bài quá.
muru avatar
lá cờ us
Đợi đã, nó vẫn đăng nhập một lần mỗi **giây**? Không phải một lần một phút?
Going Bananas avatar
lá cờ in
Xin lỗi @muru. Một lỗi đánh máy khác. Tôi có nghĩa là để viết một lần mỗi phút. Tôi sẽ sửa trong bài đăng ...
FedKad avatar
lá cờ cn
Có thể bạn đang chạy nhiều bản sao của tập lệnh (có thể ở chế độ nền hoặc thiết bị đầu cuối khác). Tôi sẽ làm `ps -ef | grep my_script_name` và `kill` bất kỳ phiên bản nào đang chạy, trước khi bắt đầu một phiên bản mới.
Going Bananas avatar
lá cờ in
@FedonKadifeli Tôi đã kiểm tra khả năng đó vào thời điểm đó nhưng chỉ có một tập lệnh đang chạy. Ngoài ra, nếu có n tập lệnh đang chạy thì mỗi ngày được viết sẽ xuất hiện chính xác n lần, đây không phải là trường hợp có thể thấy trong đoạn nhật ký được đăng
FedKad avatar
lá cờ cn
Một sự điều chỉnh, xin lỗi: Tôi sẽ hủy bất kỳ quy trình `watch` nào, không chỉ một quy trình có tên tập lệnh của bạn...
FedKad avatar
lá cờ cn
Một khả năng khác là bạn đã nhập '0' thay vì '60'. Trong trường hợp đó, `watch` sẽ sử dụng độ trễ là 0,1 giây, điều này giải thích tại sao bạn thấy mười mục nhập mỗi giây trong tệp đầu ra của mình.Vui lòng xem lệnh `history` của Bash để xác minh.
Going Bananas avatar
lá cờ in
Vấn đề là chỉ đôi khi nó ghi dữ liệu vào tệp nhiều hơn một lần mỗi phút trong cùng một lần chạy tập lệnh.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.