Đợi máy linux được khởi động lại


2

Tôi có một đoạn script nhỏ để cài đặt trên máy từ xa.

Tôi muốn khởi động lại máy từ xa và nếu nó được khởi động lại, hãy tiếp tục với một số lệnh khác. Những gì tôi hiện đang làm là:

ssh root@myMachine << COMMANDS_ISSUED
   ###... Tasks
   init 6
COMMANDS_ISSUED
sleep 180s
ssh root@myMachine << POST_REBOOT_COMMANDS
   ###.... More stuff
POST_REBOOT_COMMANDS

Có cách nào thanh lịch hơn để làm điều đó? Giống như ping máy tất cả 5 giây lên đến tối đa 4 phút? Tôi chơi với một số máy linux có thời gian khởi động khác nhau và nếu tập lệnh của tôi sẽ tiếp tục ngay sau khi khởi động lại, điều này có thể an toàn khá lâu cho tôi. (Lưu ý: Tôi không muốn song song thực thi trên tất cả các máy như tôi muốn xem cho mỗi máy nếu mọi thứ đều hoạt động tốt)

Câu trả lời:


2

Tôi sẽ nói ping máy cho đến khi nó lên.

while ! ping -c 1 192.168.1.1 &>/dev/null; do :; done

"c 1" sẽ gửi một yêu cầu tại một thời điểm, vì vậy mỗi vòng lặp. Nếu không có phản hồi ping sẽ trả về false và vòng lặp sẽ tiếp tục.

Phần thân của vòng lặp trống - bạn có thể đặt một lệnh ngủ ngắn trong đó nếu bạn muốn. Mặt khác, dấu hai chấm ":" là [lệnh no-op] [1], được sử dụng. Điều này là do bạn không thể có một vòng lặp trống.


Mặc dù thực tế là tôi cần sử dụng ping -n thay vì ping -c nhưng nó hoạt động như một cơ duyên, cảm ơn :)
Theo

-1

bạn có thể định nghĩa một crontab như thế này:

@reboot script-to-execute
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.