Điểm:0

Làm cách nào để lên lịch một hành động xảy ra sau 5 giây?

lá cờ by

Tôi đang ở trong tình huống bắt buộc phải khởi động lại máy chủ SSHD cùng với tất cả các quy trình kết nối mở của nó. Vì vậy, tôi nghĩ rằng tôi có thể sử dụng cron hoặc tại các lệnh để lên lịch khởi động lại dịch vụ trong vài giây tới tương lai (... và hủy quy trình ngay bây giờ). Vấn đề là, cả hai bộ lập lịch không được tạo cho lịch trình vài giây. Ví dụ: hiện tại + 1 phút là một lệnh hợp pháp trong khi: hiện tại + 5 giây không phải là một đầu vào khả thi. Bất cứ ý tưởng làm thế nào để giải quyết điều đó?

FedKad avatar
lá cờ cn
Tôi không nghĩ rằng các lệnh này hỗ trợ mức độ chi tiết ít hơn một phút. Bạn có thể viết tập lệnh của riêng mình: sử dụng vòng lặp có ký tự `sleep` ở giữa.
muru avatar
lá cờ us
"(... và hủy quy trình ngay bây giờ)" quy trình nào?
rubmz avatar
lá cờ by
@muru - "(... và hủy tiến trình ngay bây giờ)" - Tôi chạy: "kill -1 sshd" (giết tất cả các tiến trình sshd và chấm dứt mọi khả năng kết nối lại cho đến khi khởi động lại SSHD.
rubmz avatar
lá cờ by
@FedonKadifeli, vấn đề là tập lệnh đang chạy phải tắt một quy trình/quy trình gốc khác với SSHD, đó là cách tôi chạy tập lệnh trên máy chủ. Nếu không, việc hủy quá trình sshd cũng sẽ chấm dứt tập lệnh đó.
muru avatar
lá cờ us
@rubmz nếu bạn làm vậy, `systemd` sẽ tự động khởi động lại SSH.
rubmz avatar
lá cờ by
@muru Tôi đã không xảy ra như mong đợi lần trước đối với: 1. trạng thái dịch vụ đã hết trong khi quá trình kết thúc, 2. hệ thống mất quá nhiều thời gian để xác định quá trình đã đóng/dịch vụ đã dừng hoặc quá lâu để khởi động lại (nên xảy ra nhanh nhất có thể và trong ít nhất một phút, nó đã ngừng hoạt động) 3. bằng cách nào đó, dịch vụ không được định cấu hình để theo dõi/tự động khởi động lại.
muru avatar
lá cờ us
Không ai trong số đó có vẻ rất có thể xảy ra.Đây là phiên bản Ubuntu nào? Bạn đã sửa đổi dịch vụ ssh chưa? `systemctl status ssh.service` hiển thị gì?
danzel avatar
lá cờ cn
Bạn không thể đơn giản là `systemctl restart ssh` sao?
rubmz avatar
lá cờ by
@muru Đây là Ubuntu 18. Tôi vừa kích hoạt lại dịch vụ sshd của mình và dường như tôi không thể kết nối lại nữa... Tôi đã kiểm tra tệp init systemd và thay đổi thông số khởi động lại của nó từ "Restart=on-failure" thành " Khởi động lại = luôn luôn". Phần còn lại của các thông số có vẻ khá chuẩn (đó là máy AWS ...)
rubmz avatar
lá cờ by
@danzel dịch vụ sshd đang duy trì quá trình của nó khi khởi động lại. Đó là cách này vì việc giữ các kết nối mở dễ dàng hơn. Vấn đề là đôi khi bạn cần thiết lập lại cứng một trong các kết nối (trường hợp của chúng tôi không thể phân biệt được đó là quá trình sshd nào ...)
Điểm:3
lá cờ cn

Trả lời câu hỏi ban đầu:

Thay vì lập lịch để chạy một công việc trong vài giây, bạn có thể lên lịch để chạy hiện nay và trì hoãn thực hiện khi bắt đầu công việc. Ví dụ:

echo "ngủ 5; tường Công việc được thực thi" | ngay bây giờ

Lưu ý rằng tạitrang người đàn ông nói về hiện nay:

Cho biết ngày và giờ hiện tại. Gọi tại hiện nay nên gửi một công việc để thực hiện ngay lập tức (điều đó là, chỉ phụ thuộc vào độ trễ lập lịch không xác định).

Vì vậy, nó có thể là ngay bây giờ sẽ không thực hiện công việc ngay lập tức, nhưng ít nhất là trong bản cài đặt 18.04 của tôi, nó thực hiện được.

rubmz avatar
lá cờ by
Câu trả lời hay và hữu ích! Vì vậy, tôi đánh dấu nó là một trong những chính xác.

Đă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.