Làm thế nào để đọc các tin nhắn tắt sau đó?


18

Tôi đang sử dụng Lubfox 11.10. Mỗi lần tắt máy tôi có thể đọc FAIL bằng chữ màu đỏ, nhưng tôi không thể đọc thêm.

Vì vậy, làm thế nào để đọc các thông điệp tường trình và cố gắng giải quyết vấn đề?


Hãy xem câu trả lời này trên Askubfox. Nó có thể giúp bạn với vấn đề của bạn.
selle9

tất cả mọi thứ được thu thập tại /var/log/syslog/var/log/messages, vì vậy bạn cần phải đọc chúng và tập hợp lại. Bạn có thể sử dụng io redirectionvới error redirectionkhi bạn sử dụngshutdown command
Vịnh Ba Tư

Câu trả lời:


14

Dường như không có cách nào để ghi dữ liệu này vào một tệp. Đối với quá trình khởi động, có bootlogdgói tạo tệp /var/log/boot, nhưng không có gì cho quá trình tắt / khởi động lại. Theo như tôi có thể thấy, không có cách nào để đăng nhập rsyslogcả, và ngay cả khi có, có những tin nhắn được in sau đó rsyslogbị dừng lại. Một phần trong quá trình tắt / khởi động lại của tôi là để nhắc lại các rootfs chỉ đọc và bỏ qua mọi thứ khác, sau khi đăng nhập vào một tệp vẫn sẽ ở đó trong lần khởi động tiếp theo là gần như không thể.

Cách dễ nhất tôi có thể thấy để xem các tin nhắn là chỉnh sửa /etc/init.d/haltvà / hoặc /etc/init.d/reboottập lệnh để tạm dừng ngay trước khi thực tế halt/ reboot. Đối với halttập lệnh, hãy chạy lệnh sudoedit /etc/init.d/halt(hoặc sử dụng trình soạn thảo GUI) và tìm dòng tạm dừng thực tế. Đối với tôi đây là dòng:

halt -d -f $netdown $poweroff $hddown

Nếu không thì nó sẽ ở cuối do_stophàm và dòng duy nhất gọi haltlệnh. Khi bạn tìm thấy dòng, chỉ cần chèn một dòng mới ở trên với những điều sau đây:

read -p "Press enter to halt" reply

Lưu file và thoát. Bây giờ khi bạn tắt máy, hệ thống sẽ tạm dừng cho đến khi bạn nhấn enter (hoặc CTRL-C, CTRL-D, v.v.). Bạn có thể đọc các tin nhắn được in trên màn hình. Nếu có nhiều hơn một màn hình văn bản, bạn có thể thấy cuộn ngược thiết bị đầu cuối bằng cách nhấn Shift+PgUp. Nếu điều này vẫn chưa đủ, có nhiều cách để tăng kích thước của bộ đệm cuộn lại (có lẽ là một câu hỏi khác).

Để làm tương tự khi hệ thống khởi động lại, bạn phải chỉnh sửa /etc/init.d/reboottệp. Tất nhiên, lệnh được sử dụng ở đây reboottrái ngược với haltvà sẽ lại nằm ở cuối do_stophàm. Đối với tôi dòng là:

reboot -d -f -i

Một lần nữa chỉ cần chèn dòng sau vào một dòng mới ở trên:

read -p "Press enter to reboot" reply

Cũng lưu ý rằng các tệp này được liệt kê dưới dạng conffiles cho initscriptsgói. Các chỉnh sửa này sẽ không bị chặn theo mặc định khi các gói được nâng cấp, mặc dù chúng sẽ gây ra xung đột.


Một giải pháp hoàn chỉnh hơn sẽ là sử dụng tập lệnh sau:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          pause_hook
# Required-Start:
# Required-Stop:     halt reboot
# Default-Start:
# Default-Stop:      0 6
# X-Stop-After:      umountroot
# X-Interactive:     true
# Short-Description: Pause before halt or reboot
# Description:
### END INIT INFO

do_stop () {
    [ -r /etc/pause_hook.conf ] && . /etc/pause_hook.conf

    [ "$PAUSE_HOOK_ENABLED" = true ] && read -p "Press enter to continue" reply
}

case "$1" in
    start)
        # No-op
        ;;
    restart|reload|force-reload)
        echo "Error: argument '$1' not supported" >&2
        exit 3
        ;;
    stop)
        do_stop
        ;;
    *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac

Điều này nên được đặt trong /etc/init.d/pause_hookvà có thể được kích hoạt để chạy khi tắt / khởi động lại bằng lệnh sau:

sudo update-rc.d pause_hook defaults

Để sau đó kích hoạt hook thực tế, hãy tạo các tệp /etc/pause_hook.confchứa dòng:

PAUSE_HOOK_ENABLED=true

Quá trình tắt / khởi động lại bây giờ sẽ tạm dừng ngay trước khi halthoặc reboottập lệnh được gọi, dành thời gian để xem các tin nhắn. Nó cũng có thể dễ dàng bị vô hiệu hóa / kích hoạt lại bằng cách bình luận / không thông báo dòng kích hoạt trong /etc/pause_hook.conf. Cũng sẽ không có dpkgxung đột nào trong quá trình nâng cấp theo cách này.


Một giải pháp khá hay, đặc biệt là tập lệnh init.
Mikhail Morfikov

4

Giải pháp dễ nhất có thể là thử quay video thay vì chụp ảnh. Bạn có thể bước qua từng khung hình sau.


2
Tôi không thể tin rằng không có tập tin nào được ghi lại !!! Tôi sẽ cố gắng ghi lại bằng video.
Sigur

7
Một số trong những tin nhắn được in sau khi hệ thống tập tin không được đếm! Vì vậy, tất cả họ không thể kết thúc trong một tập tin.
Jim Paris

4

Xem nhật ký trong thời gian thực

Tôi đã thấy rằng trong quá trình tắt máy thường có logo Ubuntu và đèn nhấp nháy, được hiển thị thay vì nhật ký của quá trình tắt máy. Nếu có lỗi, thì chúng là loại hiển thị, nhưng lộn xộn. Tuy nhiên, trong khi tắt, nếu tôi nhấn phím Windows và r( Metar), thì tôi sẽ thấy sự thành công và thất bại của các dịch vụ hệ thống, khi chúng xảy ra. Vì vậy, sau đó tôi biết chính xác những gì bị hỏng. Không biết liệu phím tắt này có dành riêng cho thiết lập Kubfox của tôi hay không; Tôi đã không thêm nó .. Một trong những người tôi tình cờ tìm thấy, bằng cách nào đó ...

Xem nhật ký sau khi khởi động lại

Khi hệ thống được khởi động lại, các thông báo lỗi sẽ được lưu vào logfile. Logfile nào phụ thuộc vào dịch vụ nào bị hỏng / cấu hình sai. Nhật ký liên quan gần như chắc chắn sẽ nằm trong /var/log/(hoặc thư mục con của chúng). ls, less, grepfindđã được các chương trình duy nhất mà tôi cần thiết cho việc tìm kiếm các thông báo lỗi trong các bản ghi ...

Khi bạn đã tìm thấy lỗi và dịch vụ gây ra lỗi đó, thì bạn không cần phải khởi động lại để kiểm tra cấu hình mới; chỉ cần khởi động lại dịch vụ .. Hy vọng bạn có thể kiểm tra cấu hình cố định bằng một lệnh như:

sudo service <service name> restart


Là Windows + r hay Alt + r bạn đang nhấn? Ánh xạ mặc định ánh xạ khóa cửa sổ thành siêu và phím meta thành alt để không rõ chính xác bạn đang mô tả khóa nào.
casey

3

Sau khi xem xét cách bootlogdthực sự quản lý để thực hiện ghi nhật ký, hóa ra nó có thể được thuyết phục để ghi lại quá trình tắt / khởi động lại cũng như khởi động. bootlogdđược bắt đầu sớm trong quá trình khởi động. Sau đó, nó thực hiện một số phép thuật với ttyptscác thiết bị để ghi nhật ký tất cả đầu ra vào thiết bị đầu cuối mà nó được kết nối. Sau đó, nó được dừng lại trong quá trình khởi động, có lẽ trước khi nó bắt đầu đăng nhập đầu ra từ một người dùng làm việc trên tty.

Nếu bootlogdđược kích hoạt lại trong quá trình tắt / khởi động lại và dừng trước khi bất kỳ hệ thống tệp nào chứa nhật ký bị ngắt, sẽ có một bản ghi của hầu hết quá trình tắt có sẵn để đọc ở lần khởi động tiếp theo.

bootlogdquản lý để được bắt đầu và dừng lại trong quá trình khởi động bằng cách có hai inittập lệnh. Một là một initkịch bản bình thường bắt đầu / dừng quá trình như bình thường. Cái còn lại là một inittập lệnh 'đảo ngược' trong đó khi được gọi bằng start, nó gọi tập lệnh đầu tiên là dừng. Đây là 'thủ thuật' sysvinitquá trình, có vẻ như nó đang bắt đầu hai dịch vụ riêng biệt khi nó thực sự bắt đầu và dừng cùng một dịch vụ. Điều này là cần thiết để đảm bảo mọi thứ xảy ra theo đúng thứ tự.

Để thực hiện bootlogdchạy trong khi tắt máy, những gì được yêu cầu là:

  1. Cài đặt bootlogdnếu bạn chưa có.
  2. Sao chép hai tập lệnh init
  3. Làm cho thay đổi tập lệnh 'đảo ngược' dừng lại để bắt đầu thay vì bắt đầu dừng.
  4. Thay đổi các tiêu đề LSB để cả hai tập lệnh chạy đúng thời điểm trong khi tắt / khởi động lại
  5. Cài đặt chúng với update-rc.d.

Dưới đây là những thay đổi của tôi dưới dạng bashtập lệnh sao chép / dán (nếu bạn muốn thực hiện thay đổi theo cách thủ công, các tiêu đề LSB tôi đã sử dụng nằm trong bản vá):

cd /etc/init.d
cp bootlogd shutdown-bootlogd
cp stop-bootlogd shutdown-start-bootlogd

echo -e 'diff -ur ./shutdown-bootlogd /etc/init.d/shutdown-bootlogd
--- ./shutdown-bootlogd\t2014-02-20 13:59:23.426109512 +0000
+++ /etc/init.d/shutdown-bootlogd\t2014-02-20 11:10:56.238656828 +0000
@@ -1,14 +1,13 @@
 #! /bin/sh
-### BEGIN INIT INFO
-# Provides:          bootlogd
-# Required-Start:    mountdevsubfs
-# X-Start-Before:    hostname keymap keyboard-setup procps pcmcia hwclock hwclockfirst hdparm hibernate-cleanup lvm2
-# Required-Stop:
-# Default-Start:     S
-# Default-Stop:
-# Short-Description: Start or stop bootlogd.
-# Description:       Starts or stops the bootlogd log program
-#                    which logs boot messages.
+### BEGIN INIT INFO 
+# Provides:          shutdown-bootlogd 
+# Required-Start:
+# Required-Stop:     umountroot halt reboot 
+# Default-Start:      
+# Default-Stop:      0 6 
+# X-Stop-After:      umountfs 
+# Short-Description: Stop bootlogd at shutdown. 
+# Description: 
 ### END INIT INFO

 PATH=/sbin:/bin  # No remote fs at start
diff -ur ./shutdown-start-bootlogd /etc/init.d/shutdown-start-bootlogd
--- ./shutdown-start-bootlogd\t2014-02-20 13:59:23.430107513 +0000
+++ /etc/init.d/shutdown-start-bootlogd\t2014-02-20 11:10:56.238656828 +0000
@@ -1,24 +1,24 @@
 #! /bin/sh
 ### BEGIN INIT INFO
-# Provides:          stop-bootlogd
-# Required-Start:    $local_fs $all
-# Required-Stop:
-# Default-Start:     2 3 4 5
-# Default-Stop:
-# Short-Description: Stop bootlogd
-# Description:       See the init.d/bootlogd script
+# Provides:          shutdown-start-bootlogd
+# Required-Start:
+# Required-Stop:     $local_fs $all
+# Default-Start:
+# Default-Stop:      0 6
+# Short-Description: Start or stop bootlogd at shutdown.
+# Description:
 ### END INIT INFO

-NAME=stop-bootlogd
+NAME=shutdown-start-bootlogd
 DAEMON=/sbin/bootlogd

 [ -x "$DAEMON" ] || exit 0

 case "$1" in
-  start)
-\t/etc/init.d/bootlogd stop
+  stop)
+\t/etc/init.d/bootlogd start
 \t;;
-  stop|restart|force-reload)
+  start|restart|force-reload)
 \t# No-op
 \t;;
   status)
' | patch

update-rc.d shutdown-bootlogd defaults
update-rc.d shutdown-start-bootlogd defaults

Tất cả các tin nhắn xuất hiện trước khi bootlogddừng lại sẽ được lưu trữ trong /var/log/boot. bootlogdloại bỏ các ký tự thoát khỏi luồng văn bản. Lệnh ( bash) sau sẽ hiển thị màu nhật ký, như xuất hiện trong khi tắt máy:

sed $'s/\^\[/\E/g;s/\[1G\[/\[27G\[/' /var/log/boot | less -r

Xem câu hỏi này để biết thêm chi tiết về điều này - /programming/10757823/display-file-with-escoped-color-codes-boot-messages-from-bootlog-daemon/19011140

Vị trí của nhật ký có thể được thay đổi bằng cách chỉnh sửa thêm các tập lệnh. Đáng tiếc là mỗi sự xuất hiện của tập tin phải được thay đổi (còn, thay thế /ver/log/bootlà không đủ như kịch bản hiện một cdđến /var/logtại một thời điểm).

Ở trên cũng sẽ chỉ hoạt động nếu /var/loglà trên rootfs. Nếu không phụ thuộc cần phải được làm lại để umountfsđược thực hiện sau khi bootlogddừng lại. Hoặc người khác đăng nhập vào một tập tin trên rootfs.


1

Bạn cần chỉnh sửa tất cả các tệp /etc/rc6.d/* và chuyển hướng đầu ra của chúng sang một số tệp mà bạn có thể đọc sau.

Chuyển hướng này, cũng sẽ cho bạn biết, chương trình nào failedwhy.

Ngoài ra, bạn phải sửa đổi start-stop-daemonbằng cách xóa --quiettham số và thêm -vtham số trong tất cả các tệp đó.

Nếu bạn đang làm như vậy, thì hãy chắc chắn, bạn sẽ phục hồi tất cả những thay đổi mà bạn đã thực hiện. Sao lưu các tập tin hiện có trước khi thực hiện thay đổi sẽ là ý tưởng tốt.


ĐỒNG Ý. Điều này sẽ mất rất nhiều công việc từ tôi. Tôi sẽ thử. Cảm ơn.
Sigur

Hãy cho tôi biết kết quả sau đó
SHW

Chỉnh sửa tập lệnh trong /etc/init.d(mọi thứ trong /etc/rc?.dliên kết đến đây) sẽ không làm gì cả. Đầu ra không trực tiếp, nó thông qua các chức năng trong /lib/lsb/init-functionsvà các tệp khác mà nó lần lượt là nguồn. Bạn có thể chỉnh sửa những điều này, một số nâng cấp sẽ ghi đè các thay đổi mặc dù.
Graeme

Hàm duy nhất hoặc nhị phân có liên quan, là start-stop-daemontừ OP PoV. Bây giờ đang chờ trả lời của anh ấy
SHW

@SHW Không, nhìn vào các kịch bản. Hầu hết các đầu ra đến từ các phần khác của kịch bản. Tôi không nghĩ start-stop-daemonsản xuất bất kỳ đầu ra, ít nhất là không bình thường. Các tập lệnh tạo đầu ra ok / fail dựa trên đầu ra trả về của nó bằng cách sử dụng log_end_msg. Xem /lib/lsb/init-functions.d/20-left-info-blocks.
Graeme

0

/var/log/messagessẽ cung cấp cho bạn dữ liệu bạn cần. nếu nó không đủ cho bạn, hãy sửa đổi /etc/syslog.confđể ghi nhật ký tất cả dữ liệu (tôi sẽ tìm cách kích hoạt lỗi ghi nhật ký kernel, còn gọi là * kern) nhưng REVERT IT BACK sau khi bạn khởi động lại, hoặc nó sẽ ngốn nhiều không gian cho nhật ký


Không có /etc/syslog.conf. Chỉ có vậy sysctl.conf sysctl.d/ systemd/.
Sigur

1
thử
/etc/rsyslog.conf

0

Đối với máy tính xách tay của tôi sudo haltsẽ làm phần mềm tắt máy không phải phần cứng. tức là màn hình và phần cứng khác vẫn chạy. Tin nhắn cuối cùng trong màn hình sẽ là

Hệ thống tạm dừng

Lúc này tôi chỉ cần nhấn nút Nguồn và mọi thứ tắt. Bạn có thể thử điều này. Bạn cũng có thể thửsudo halt --verbose


Vì vậy, tôi đoán rằng đây là một nhượng quyền hoàn toàn an toàn. Không có thiệt hại cho phần cứng?!
Sigur

0

Giống như Graeme đã nói, với hệ thống tập tin ro hoặc bị gỡ bỏ, klogd bị giết, không có cách nào để ghi thông tin đó vào một tập tin. Một giải pháp có thể đang sử dụng bàn điều khiển (cổng nối tiếp), được xác định trong bootargs. Chỉ cần kết nối cáp modem null và một PC khác (máy tính bảng hoặc điện thoại thông minh với bộ điều hợp phù hợp) và trình giả lập thiết bị đầu cuối.


-1

Thông báo lỗi (và khác) thường được ẩn bởi plymouthlý do thẩm mỹ.

Có lẽ điều này giúp: Nếu bạn nhấn ESC trong khi tắt máy, plymouthhiển thị bảng điều khiển đồ họa. Điều đó cho bạn thấy những thông điệp hữu ích?

Ngoài ra, có rất ít bạn có thể làm nếu máy thực sự gặp sự cố bởi vì nó có thể không thể ghi tệp nhật ký - cho dù nó được đệm, hoặc /var/logđã được ghi lại chỉ đọc, tùy thuộc vào thời điểm xảy ra sự cố. Bạn có thể xem các tệp này bằng cách thực hiện ls -ltr /var/logvà xem liệu có tệp nhật ký nào khớp với ngày tắt máy của bạn (hoặc mới hơn) không.

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.