Как читать, закрытие обменивается сообщениями впоследствии?

pmount должен обычно использоваться для монтирования пользовательских внешних устройств, которые не находятся в fstab. То, что Вы испытываете, является функцией pmount - часть его политики (см. man pmount, поиск fstab). Если Вы хотите разрешить обычным пользователям монтировать CD-ROM, можно или прокомментировать его в /etc/fstab и используйте pmount или настроенный запись CD-ROM в fstab так, чтобы пользователям разрешили смонтироваться. Для последнего необходимо было бы использовать user смонтируйте опцию (см. man fstab для получения дополнительной информации).

18
28.04.2019, 19:07
9 ответов

Самое легкое решение могло бы состоять в том, чтобы попытаться снять видео вместо фотографии. Можно ступить через него покадровый позже.

4
27.01.2020, 19:46
  • 1
    я не могу полагать, что нет никакого файла с теми зарегистрированными сообщениями!!! Я попытаюсь записать видео. –  Sigur 30.10.2012, 01:59
  • 2
    Некоторые из тех сообщений печатаются после того, как файловые системы размонтированы! Таким образом, они не могут все закончить в файле. –  Jim Paris 30.10.2012, 02:31

Наблюдение журнала в режиме реального времени

Я нашел, что во время завершения работы обычно существует логотип Ubuntu и мигающие индикаторы, который показывают вместо журнала процесса завершения работы. Если существуют ошибки, то их отчасти показывают, но грязно. Однако при закрытии, если я нажимаю клавишу Windows и r (Metar), затем я добираюсь для наблюдения успеха и отказа системных служб, как они происходят. Таким образом я знаю то, что точно повреждается. Никакая идея, характерно ли это сочетание клавиш для моей установки Kubuntu или что; я не добавил его.. Один из тех я нашел случайно, так или иначе...

Просмотр журналов после перезагрузки

Когда система перезагружается, сообщения об ошибках должны быть сохранены в файл журнала. Какой файл журнала зависит, на котором повреждается/неправильно конфигурируется сервис. Соответствующий журнал почти определенно будет в /var/log/ (или подкаталог этого). ls, less, grep и find были единственные программы, в которых я нуждался для нахождения сообщений об ошибках в журналах...

После того как Вы нашли ошибку и сервис, который вызвал ее, затем Вы не должны должны быть перезагружать для тестирования новой конфигурации; просто перезапустите сервис.. Надо надеяться, можно протестировать фиксированную конфигурацию с командой как:

sudo service <service name> restart

4
27.01.2020, 19:46
  • 1
    Это - Windows+r или Alt+r, который Вы нажимаете? Отображения по умолчанию отображают ключ окон к супер и метаклавишу к высокому звуку, таким образом, это неясно точно, какой ключ Вы описываете. –  casey 18.02.2014, 02:20

  • /var/log/messages выдаст вам нужные данные. если вам этого недостаточно, модифицируйте/etc/syslog.conf, чтобы записать в журнал все данные (я бы посмотрел, чтобы включить протоколирование ошибок ядра, так же известное как *kern), но REVERT IT BACK после перезагрузки, иначе это съест много места для журналов
.
0
27.01.2020, 19:46

После изучения того, как
bootlogd на самом деле умудряется вести журнал, получается, что его можно убедить протоколировать как процесс выключения/перезагрузки, так и процесс запуска. bootlogd запускается на ранней стадии процесса загрузки. Затем он делает некоторую магию с устройствами tty и pts, чтобы записать в журнал все выходные данные на терминал, к которому он подключен. Затем он останавливается позже в процессе загрузки, предположительно до того, как он начнет протоколировать выход пользователя, работающего на tty.

sudo port -d selfupdate
sudo port clean gnuplot
sudo port install gnuplot

Если bootlogd будет снова запущен во время процесса выключения/перезагрузки и остановлен до того, как какая файловая система, содержащая журнал, будет размонтирована, то запись большей части процесса выключения будет доступна для чтения при следующей загрузке.

bootlogd может быть запущен и остановлен во время запуска при помощи двух сценариев init. Один из них является обычным сценарием init, который запускает/останавливает процесс как обычно. Другой - это 'обратный' скрипт init

  • , в котором при вызове с помощью
  • start
  • вызывается первый скрипт со стопом. Этот "хитрый" процесс
  • sysvinit
  • , кажется, что он запускает два отдельных сервиса, когда он действительно начинает и останавливает один и тот же сервис. Это необходимо для того, чтобы убедиться, что все происходит в правильном порядке.


    #!/usr/bin/env bash
    
    cd /2/screenshots/
    x=$(date +"%y%m%d%H%M%S")
    screencapture -i -o $x.png
    sips -s format jpeg -s formatOptions 60 $x.png -o $x.jpg
    rm $x.png
    

    Для того, чтобы

  • bootlogd
  • запустился во время выключения, необходимо:

    • Установить [11962]bootlogd[11963], если вы еще этого не сделали.
    • Скопируйте два init-скрипта
    Сделайте остановку изменения LSB-скрипта 'в обратном направлении' вместо остановки.

    Измените заголовки LSB так, чтобы оба скрипта выполнялись в нужное время во время выключения/перезагрузки

    rename ' ' '_' [filenames...]
    
    Установите их с помощью [11964]updateate-rc.d[11965].

    Вот мои изменения в качестве скрипта копирования/вставки bash (если вы хотите сделать изменения вручную, заголовки LSB, которые я использовал, находятся в патче):

    rename 's/ /_/g' *
    
    Все сообщения, которые появляются перед остановкой
    bootlogd, будут сохранены в /var/log/boot. bootlogd удаляет экранирующие символы из текстового потока. Следующая команда (bash

    ) отобразит журнал в цвете, как он появляется во время выключения:

    См. этот вопрос -

    https://stackoverflow.com/questions/10757823/display-file-with-escaped-color-codes-boot-messages-from-bootlog-daemon/19011140

    Местоположение журнала может быть изменено путем дальнейшего редактирования скриптов. К сожалению, каждый внешний вид файла должен быть изменен (также, замены

    /ver/log/boot недостаточно, так как скрипт в какой-то момент делает cd на /var/log).

    Вышеуказанное также будет работать только в том случае, если /var/log находится в корневых файлах. Если нет, то зависимости должны быть переработаны таким образом, чтобы umountfs был выполнен после остановки bootlogd
    . Или войдите в файл rootfs.

    .

  • 3
    27.01.2020, 19:46

    Вам нужно отредактировать все файлы /etc/rc6.d/* и перенаправить их вывод в какой-то файл, который вы могу прочитать позже.

    Это перенаправление также сообщит вам, какая программа завершилась ошибкой и почему .

    Кроме того, вы должны изменить start-stop-daemon , удалив параметр - quiet и добавив параметр -v во все эти файлы.

    Если вы это делаете, убедитесь, что вы откатите все внесенные вами изменения. Резервное копирование существующих файлов перед внесением изменений будет хорошей идеей.

    1
    27.01.2020, 19:46

    Для моего ноутбука sudo halt завершит работу программного обеспечения, а не оборудования. т.е. экран и другое оборудование продолжают работать. Последним сообщением на экране будет

    Система остановлена ​​

    На этом этапе я просто нажимаю кнопку питания и все выключается. Вы можете попробовать это. Вы также можете попробовать sudo halt --verbose

    0
    27.01.2020, 19:46

    Похоже, что нет способа записать эти данные в файл. Для процесса загрузки есть пакет bootlogd, который создает файл /var/log/boot, но нет ничего для процесса выключения/перезагрузки. Насколько я могу судить, нет способа вести журнал с помощью rsyslog, и даже если бы он был, сообщения печатаются после остановки rsyslog. Частью моего процесса выключения/перезагрузки является перемонтирование rootfs readonly и umount всего остального, после чего запись логов в файл, который все еще будет там при следующей загрузке, практически невозможна.

    Самый простой способ просмотреть сообщения - отредактировать скрипты /etc/init.d/halt и/или /etc/init.d/reboot, чтобы сделать паузу непосредственно перед фактическим halt/reboot. Для сценария halt выполните команду sudoedit /etc/init.d/halt (или используйте редактор GUI) и найдите строку, которая выполняет фактический останов. Для меня это строка:

    halt -d -f $netdown $poweroff $hddown
    

    Иначе она должна быть в конце функции do_stop и единственной строкой, которая вызывает команду halt. Как только вы найдете эту строку, просто вставьте новую строку выше со следующим текстом:

    read -p "Press enter to halt" reply
    

    Сохраните файл и выйдите. Теперь при выключении система будет приостанавливаться до тех пор, пока вы не нажмете Enter (или CTRL-C, CTRL-D и т.д.). Вы можете прочитать сообщения, выведенные на экран. Если текста больше, чем на один экран, вы можете прокрутить терминал назад, нажав Shift+PgUp. Если этого все еще недостаточно, есть способы увеличить размер буфера прокрутки (возможно, это другой вопрос).

    Чтобы сделать то же самое при перезагрузке системы, нужно отредактировать файл /etc/init.d/reboot. Здесь, конечно, используется команда reboot, а не halt, и она снова должна быть в конце функции do_stop. Для меня строка выглядит так:

    reboot -d -f -i
    

    Снова просто вставьте следующее в новую строку выше:

    read -p "Press enter to reboot" reply
    

    Обратите также внимание, что эти файлы перечислены как конфиги для пакета initscripts. Эти правки не будут снесены по умолчанию при обновлении пакетов, хотя они вызовут конфликт.


    Более полным решением будет использование следующего скрипта:

    #! /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
    

    Он должен быть помещен в /etc/init.d/pause_hook и может быть включен для запуска при выключении/перезагрузке следующей командой:

    sudo update-rc.d pause_hook defaults
    

    Чтобы затем включить фактический хук, создайте файлы /etc/pause_hook. conf, содержащий строку:

    PAUSE_HOOK_ENABLED=true
    

    Теперь процесс выключения/перезагрузки должен приостанавливаться непосредственно перед вызовом сценария halt или reboot, давая время для просмотра сообщений. Ее также можно легко отключить/включить, закомментировав/отменив строку enable в /etc/pause_hook.conf. Кроме того, при обновлении таким образом не будет конфликтов файлов dpkg.

    14
    27.01.2020, 19:46

    Ошибка (и другие сообщения )обычно скрыты plymouthиз эстетических соображений.

    Возможно, это поможет. :Если вы нажмете ESC во время выключения, plymouthпокажет графическую консоль. Это показывает вам полезные сообщения?

    Помимо этого, вы мало что можете сделать, если машина действительно выйдет из строя, потому что она может быть не в состоянии записать файл журнала -, независимо от того, находится ли он в буфере или /var/logуже перемонтирован только для чтения -, в зависимости от того, когда произошел сбой. Вы можете просмотреть эти файлы, выполнив ls -ltr /var/logи посмотрев, есть ли файл журнала, соответствующий дате выключения (или новее ).

    -1
    27.01.2020, 19:46

    Как сказал Грэм, с ro или размонтированной файловой системой убить klogd невозможно. чтобы записать такую ​​информацию в файл. Решением может быть использование консоли (последовательного порта ), определяется в bootargs. Просто подключите нуль-модемный кабель и другой планшет ПК (или смартфон с соответствующим адаптером )и эмулятором терминала.

    0
    27.01.2020, 19:46

    Теги

    Похожие вопросы