Điểm:10

Làm cách nào tôi có thể khởi động lại Linux thay vì sắp xếp lại hệ thống tệp ở dạng chỉ đọc?

lá cờ us

Các hệ thống Linux đôi khi kể lại hệ thống tệp gốc ở dạng chỉ đọc, ví dụ: nếu có lỗi I/O.

Tôi có một máy trở nên vô dụng khi điều này xảy ra và cuối cùng tôi phải khởi động lại máy theo cách thủ công.

Có cách nào để Linux tự động khởi động lại khi điều này xảy ra không? Gắn kết chỉ đọc là vô dụng đối với tôi.

lá cờ br
Tôi cũng sẽ điều tra nguồn gốc của các lỗi I/O này.Lần cuối cùng một hệ thống tập tin ext2 ở chế độ chỉ đọc đối với tôi là vào năm 1994 và nguyên nhân có thể bắt nguồn từ một chiếc quạt CPU bị hỏng.
lá cờ mx
Bạn gặp [sự cố XY](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) tại đây. Giải pháp chính xác là không làm cho hệ thống khởi động lại do lỗi IO (câu trả lời được chấp nhận giải thích cách thực hiện điều đó _nhưng_ điều đó thực sự khá rủi ro vì nhiều lý do), mà là _khắc phục nguyên nhân gốc rễ của lỗi IO_ , bởi vì khi đó hệ thống tệp sẽ không ngẫu nhiên được gắn ở chế độ chỉ đọc. Nếu nó chỉ bị gián đoạn và thiết bị lưu trữ vẫn hoạt động tốt, thì có thể bạn nghi ngờ có RAM hoặc PSU bị lỗi, cả hai đều có thể gây ra sự cố lớn hơn nhiều so với lỗi hệ thống tệp đơn giản.
lá cờ us
@AustinHemmelgarn: Tôi không gặp vấn đề XY ở đây. Bạn chỉ đang đưa ra nhiều giả định không đúng trong (những) trường hợp mà tôi đang hỏi.
lá cờ us
@SimonRichter: Tôi thực sự đã thử tìm hiểu nguyên nhân, nhưng cảm ơn vì lời nhắc, những người khác có lẽ nên làm điều đó trước khi khởi động lại.
lá cờ us
Tôi chỉ nhận ra bằng cách nào đó tôi đã đăng bài này trên ServerFault chứ không phải Unix.SE như tôi đã dự định! Tôi đoán rất vui vì nó vẫn đúng chủ đề, nhưng vui lòng di chuyển nếu cần.
lá cờ cn
Khởi động lại thay vì tìm ra lý do cho việc kết nối lại R/O có nhiều khả năng làm cho sự cố *tồi tệ hơn* - đặc biệt nếu hệ thống không thể kết nối khi khởi động lại và bạn hiện đang mắc kẹt với một hệ thống hoàn toàn không phản hồi.
lá cờ mx
@ user541686 Bạn có lỗi IO ngẫu nhiên. _will_ đó cuối cùng sẽ gây ra các sự cố khác (và hãy tin tôi, chúng sẽ khó khắc phục hơn nhiều so với việc chỉ khởi động lại hệ thống), do đó tôi khẳng định rằng đây là sự cố XY. Việc bạn không nhận ra X là một vấn đề không làm cho nó bớt vấn đề XY hơn.
lá cờ us
@AustinHemmelgarn: Tôi biết rõ điều gì đang xảy ra trong hoàn cảnh của mình và tại sao tôi lại dùng đến giải pháp này. Thật không may, bạn không. Việc bạn không nhận ra rằng bạn vẫn đang đưa ra những giả định vô căn cứ về tình huống của tôi không khiến bạn đúng hơn, nhưng phải thừa nhận rằng tôi không thể ngăn bạn giảng bài.
lá cờ us
@Shadur: Tôi hoàn toàn hiểu tất cả những điều đó, tin hay không thì tùy. Không ai nói rằng giải pháp này nên được sử dụng trong mọi tình huống. Tôi chỉ đang nói với bạn rằng tôi có **một** tình huống mà giải pháp này hợp lý. Nếu bạn không thể tưởng tượng tại sao, điều đó tốt. Chỉ cần có niềm tin vào tôi rằng tôi không ngu ngốc và tôi chỉ hỏi điều này bởi vì tôi có thông tin mà bạn không biết.
Mark avatar
lá cờ tz
@ user541686, nếu có thông tin liên quan, hãy cung cấp thông tin đó. Đừng chỉ nói "hãy tin tôi".
lá cờ us
@Mark: Không, tôi sẽ không cung cấp thông tin không liên quan. Hoàn toàn không phải là việc của bất kỳ ai mà tôi đang phải đối mặt với tình huống dẫn đến câu hỏi này. Nếu bạn muốn tin rằng đó là do sự ngu ngốc của tôi, hãy tiếp tục tin vào điều đó; không cảm thấy bắt buộc phải "tin tưởng tôi". Nó không giống như tôi có thể ép buộc bạn.
Andrew Henle avatar
lá cờ ph
@ user541686 Bạn đang khắc phục các lỗi I/O trên hệ thống tệp gốc bằng cách khởi động lại, trên ***HY VỌNG*** rằng hệ thống của bạn sẽ trở lại trạng thái hoạt động. Bạn đang thể hiện mình là một người nghĩ rằng họ biết mọi thứ nhưng thực tế lại chỉ đủ thông minh để trở nên nguy hiểm. Bạn có thể nghĩ rằng mình biết lý do tại sao mình gặp phải lỗi IO, nhưng điều gì sẽ xảy ra **khi** bạn gặp lỗi không như bạn nghĩ? Bạn nhận được một hệ thống chết mà bạn không thể truy cập. "Tôi biết chuyện gì đang xảy ra!" không đưa ra bất kỳ giới hạn nào về những gì **có thể** tiếp tục - vũ trụ không quan tâm đến những gì bạn nghĩ mình biết.
marcelm avatar
lá cờ ng
@Mark (và những người khác) _"... nếu có thông tin liên quan, hãy cung cấp thông tin đó. Đừng chỉ nói rằng hãy tin tôi."_ - Tôi không nghĩ đáng để sủa cây XY ở đây. Trước hết, câu hỏi như hiện tại (hoảng loạn/khởi động lại thay vì kể lại ro) là một câu hỏi hoàn toàn hợp lệ và có thể trả lời được. Thứ hai, OP dường như nhận thức rõ rằng các lỗi I/O, e hèm, không lý tưởng và hiện đã tuyên bố rõ ràng rằng khu vực đó không có chủ đề. Đáng buồn thay, đôi khi bạn không thể làm gì để khắc phục nguyên nhân gốc _ngay bây giờ_ và cần có giải pháp thay thế. Với ý nghĩ đó, tôi không nghĩ rằng chúng ta đang ở một nơi để yêu cầu OP cung cấp thêm ngữ cảnh.
Điểm:23
lá cờ ca

Tôi suy luận bạn đang sử dụng máy lẻ3 hoặc máy lẻ4 như hệ thống tập tin. Nếu vậy, bạn có thể gắn kết nó với lỗi = hoảng loạn Tùy chọn cấu hình cơ quan giám sát để khởi động lại hệ thống của bạn trong trường hợp hoảng loạn xảy ra.

Trong khi phức tạp hơn so với câu trả lời của roelvanmeer (mà tôi đã ủng hộ), nó có thêm phần thưởng là hoạt động cho tất cả các sự cố hạt nhân cấp độ hoảng loạn.

Như được đề xuất bởi Nikita Kipriyanov, thiết lập hoảng sợ = 5 tùy chọn khởi động hạt nhân có thể là một thay thế đơn giản hơn cho cơ quan giám sát (có nhiều tùy chọn cấu hình hơn nhưng kết quả là phức tạp hơn một chút).

Nikita Kipriyanov avatar
lá cờ za
Giải pháp thay thế cho cơ quan giám sát có thể là thêm nội dung nào đó như `kernel.panic = 5` vào `/etc/sysctl.d/panic-reboot.conf`.
lá cờ us
Cảm ơn bạn! Tôi sẽ thử. Hy vọng rằng nó sẽ không [không thể khởi động lại](https://forums.debian.net//viewtopic.php?f=5&t=102033)!
shodanshok avatar
lá cờ ca
@NikitaKipriyanov gợi ý hay, tôi sẽ chỉnh sửa câu trả lời của mình. Cảm ơn.
joshudson avatar
lá cờ cn
cảnh báo: vòng lặp khởi động lại có thể xảy ra
lá cờ us
@joshudson: Vâng, tôi dự định đề phòng điều đó, đó chắc chắn là một cảnh báo quan trọng cho bất kỳ ai đang thử điều này.
Andrew Henle avatar
lá cờ ph
@joshudson Nếu nó khởi động lại được. Việc dựa vào một hệ thống biết hệ thống tệp gốc của nó có thể bị hỏng và/hoặc đĩa gốc của nó bị hỏng để khởi động lại là dựa trên suy nghĩ viển vông và kỳ lân.
joshudson avatar
lá cờ cn
@AndrewHenle: Tôi đã tạo ra rất nhiều hệ thống với hệ thống tệp gốc bị chuyển vào thùng rác. Thông thường, tôi không thể đảm nhận quá trình khởi động và chạy fsck vì thiệt hại hiếm khi xảy ra với `/sbin` hoặc các tệp không thay đổi trong một thời gian.
Andrew Henle avatar
lá cờ ph
@joshudson Bạn hy vọng... ;-) Suy nghĩ của tôi ở đây dựa trên ý tưởng rằng việc cố gắng tiếp tục khi thiết bị hệ thống tập tin gốc của bạn gặp lỗi IO là một nỗ lực sai lầm ngay từ đầu và khởi động lại chỉ khiến vấn đề trở nên nghiêm trọng hơn có khả năng - "Thiết bị gốc của tôi đang bị hỏng, vì vậy hãy làm điều gì đó *** thực sự *** phụ thuộc vào việc thiết bị gốc có đầy đủ chức năng và có quyền truy cập thích hợp vào phần lớn hệ thống tệp!"
Điểm:14
lá cờ ie

Có thể không phải là một giải pháp hay lắm, nhưng suy nghĩ đầu tiên của tôi là chạy một lệnh từ cron mỗi phút:

kiểm tra -w / || khởi động lại
lá cờ us
+1 cảm ơn, đây sẽ là một dự phòng tuyệt vời nếu giải pháp khác không thành công!
lá cờ im
Tôi nghĩ rằng không đảm bảo rằng `test -w` sẽ kiểm tra xem hệ thống tệp có đọc-ghi hay không. Mặc dù GNU `test` và `test` được tích hợp trong `bash` dường như làm được điều đó. --- Tại đây, bạn có thể thấy `kiểm tra` tuân thủ POSIX nên làm gì: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/test.html#tag_20_128_05 Theo tôi hiểu thì chỉ cần kiểm tra`` kiểm tra` quyền truy cập của tập tin.
joshudson avatar
lá cờ cn
Trong trường hợp đó `tee -a /root/.bash_history
shodanshok avatar
lá cờ ca
@joshudson Thậm chí đơn giản hơn: `touch /writecheck || khởi động lại`
lá cờ br
@shodanshok Thật tuyệt nếu bạn không phiền khi một tệp có tên `/writecheck` nằm xung quanh thư mục gốc của hệ thống tệp của bạn, vì nó sẽ được tạo khi hệ thống tệp _không_ chỉ đọc. Các phương pháp được đề xuất khác đang cố gắng tránh tạo bất kỳ tệp trống giả mạo nào. (Mặc dù nếu pabouk đúng — mà tôi đồng ý 50/50, thì cá nhân tôi— thực sự tạo một tệp có thể là điều không thể tránh khỏi, để xác định đầy đủ trạng thái chỉ đọc của hệ thống tệp.)
lá cờ im
Một câu hỏi khác về vấn đề kiểm tra quyền ghi: [Làm thế nào để kiểm tra không xâm lấn quyền ghi vào tệp?](https://unix.stackexchange.com/q/159557/19702)
lá cờ cn
@shodanshok có thể dẫn đến khởi động lại không mong muốn - hoặc vòng lặp khởi động lại - từ các điều kiện lỗi không liên quan đến lỗi hệ thống tệp, ví dụ: sự cố tạm thời của cài đặt libc, điều kiện OOM, bất kỳ điều gì có thể khiến cảm ứng không thành công....
shodanshok avatar
lá cờ ca
@rackandboneman chắc chắn rồi - nhưng tập lệnh *bất kỳ* nào có `|| reboot` là đối tượng của những vấn đề này. Ngoài ra, nếu `touch` không thành công trên hệ thống của bạn do sự cố libc, bạn có thể gặp sự cố tồi tệ hơn sau đó là vòng lặp khởi động lại. Dù sao, như đã nêu trong câu trả lời của tôi, `cơ quan giám sát` là cách để đáp ứng các nhu cầu nâng cao hơn.

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