pmount
должен обычно использоваться для монтирования пользовательских внешних устройств, которые не находятся в fstab
. То, что Вы испытываете, является функцией pmount
- часть его политики (см. man pmount
, поиск fstab). Если Вы хотите разрешить обычным пользователям монтировать CD-ROM, можно или прокомментировать его в /etc/fstab
и используйте pmount
или настроенный запись CD-ROM в fstab
так, чтобы пользователям разрешили смонтироваться. Для последнего необходимо было бы использовать user
смонтируйте опцию (см. man fstab
для получения дополнительной информации).
Самое легкое решение могло бы состоять в том, чтобы попытаться снять видео вместо фотографии. Можно ступить через него покадровый позже.
Наблюдение журнала в режиме реального времени
Я нашел, что во время завершения работы обычно существует логотип Ubuntu и мигающие индикаторы, который показывают вместо журнала процесса завершения работы. Если существуют ошибки, то их отчасти показывают, но грязно. Однако при закрытии, если я нажимаю клавишу Windows и r
(Metar), затем я добираюсь для наблюдения успеха и отказа системных служб, как они происходят. Таким образом я знаю то, что точно повреждается. Никакая идея, характерно ли это сочетание клавиш для моей установки Kubuntu или что; я не добавил его.. Один из тех я нашел случайно, так или иначе...
Просмотр журналов после перезагрузки
Когда система перезагружается, сообщения об ошибках должны быть сохранены в файл журнала. Какой файл журнала зависит, на котором повреждается/неправильно конфигурируется сервис. Соответствующий журнал почти определенно будет в /var/log/
(или подкаталог этого). ls
, less
, grep
и find
были единственные программы, в которых я нуждался для нахождения сообщений об ошибках в журналах...
После того как Вы нашли ошибку и сервис, который вызвал ее, затем Вы не должны должны быть перезагружать для тестирования новой конфигурации; просто перезапустите сервис.. Надо надеяться, можно протестировать фиксированную конфигурацию с командой как:
sudo service <service name> restart
.
- /var/log/messages выдаст вам нужные данные. если вам этого недостаточно, модифицируйте/etc/syslog.conf
, чтобы записать в журнал все данные (я бы посмотрел, чтобы включить протоколирование ошибок ядра, так же известное как *kern), но
REVERT IT BACKпосле перезагрузки, иначе это съест много места для журналов
.
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Вышеуказанное также будет работать только в том случае, если /var/logнедостаточно, так как скрипт в какой-то момент делает
cdна
/var/log).
находится в корневых файлах. Если нет, то зависимости должны быть переработаны таким образом, чтобы
umountfs был выполнен после остановки
bootlogd.
Вам нужно отредактировать все файлы /etc/rc6.d/* и перенаправить их вывод в какой-то файл, который вы могу прочитать позже.
Это перенаправление также сообщит вам, какая программа завершилась ошибкой
и почему
.
Кроме того, вы должны изменить start-stop-daemon
, удалив параметр - quiet
и добавив параметр -v
во все эти файлы.
Если вы это делаете, убедитесь, что вы откатите все внесенные вами изменения. Резервное копирование существующих файлов перед внесением изменений будет хорошей идеей.
Для моего ноутбука sudo halt
завершит работу программного обеспечения, а не оборудования. т.е. экран и другое оборудование продолжают работать. Последним сообщением на экране будет
Система остановлена
На этом этапе я просто нажимаю кнопку питания и все выключается. Вы можете попробовать это. Вы также можете попробовать sudo halt --verbose
Похоже, что нет способа записать эти данные в файл. Для процесса загрузки есть пакет 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
.
Ошибка (и другие сообщения )обычно скрыты plymouth
из эстетических соображений.
Возможно, это поможет. :Если вы нажмете ESC во время выключения, plymouth
покажет графическую консоль. Это показывает вам полезные сообщения?
Помимо этого, вы мало что можете сделать, если машина действительно выйдет из строя, потому что она может быть не в состоянии записать файл журнала -, независимо от того, находится ли он в буфере или /var/log
уже перемонтирован только для чтения -, в зависимости от того, когда произошел сбой. Вы можете просмотреть эти файлы, выполнив ls -ltr /var/log
и посмотрев, есть ли файл журнала, соответствующий дате выключения (или новее ).
Как сказал Грэм, с ro или размонтированной файловой системой убить klogd невозможно. чтобы записать такую информацию в файл. Решением может быть использование консоли (последовательного порта ), определяется в bootargs. Просто подключите нуль-модемный кабель и другой планшет ПК (или смартфон с соответствующим адаптером )и эмулятором терминала.