Рассмотрение образца mcelog.conf
файл конфигурации, который это надеется содержать больше всего, если не все типы триггеров это может иметь дело с.
[dimm]
#
# execute these triggers when the rate of corrected or uncorrected
# errors per DIMM exceeds the threshold
# Note when the hardware does not report DIMMs this might also
# be per channel
# The default of 10/24h is reasonable for server quality·
# DDR3 DIMMs as of 2009/10
#uc-error-trigger = dimm-error-trigger
uc-error-threshold = 1 / 24h
#ce-error-trigger = dimm-error-trigger
ce-error-threshold = 10 / 24h
[socket]
# Threshold and trigger for uncorrected memory errors on a socket
# mem-uc-error-trigger = socket-memory-error-trigger
mem-uc-error-threshold = 100 / 24h
# Threshold and trigger for corrected memory errors on a socket
mem-ce-error-trigger = socket-memory-error-trigger
mem-ce-error-threshold = 100 / 24h
[cache]
# Processing of cache error thresholds reported by Intel CPUs
cache-threshold-trigger = cache-error-trigger
[page]
# Memory error accouting per 4K memory page
# Threshold for the correct memory errors trigger script
memory-ce-threshold = 10 / 24h
# Trigger script for corrected errors
# memory-ce-trigger = page-error-trigger
Триггерами можно управлять в этом разделе.
[trigger]
# Maximum number of running triggers
children-max = 2
# execute triggers in this directory
directory = /etc/mcelog
Существуют некоторые демонстрационные триггеры здесь на mcelog странице GitHub.
dimm-error-triggers
:#!/bin/sh
# This shell script can be executed by mcelog in daemon mode when a DIMM
# exceeds a pre-configured error threshold
#
# environment:
# THRESHOLD human readable threshold status
# MESSAGE Human readable consolidated error message
# TOTALCOUNT total count of errors for current DIMM of CE/UC depending on
# what triggered the event
# LOCATION Consolidated location as a single string
# DMI_LOCATION DIMM location from DMI/SMBIOS if available
# DMI_NAME DIMM identifier from DMI/SMBIOS if available
# DIMM DIMM number reported by hardware
# CHANNEL Channel number reported by hardware
# SOCKETID Socket ID of CPU that includes the memory controller with the DIMM
# CECOUNT Total corrected error count for DIMM
# UCCOUNT Total uncorrected error count for DIMM
# LASTEVENT Time stamp of event that triggered threshold (in time_t format, seconds)
# THRESHOLD_COUNT Total umber of events in current threshold time period of specific type
#
# note: will run as mcelog configured user
# this can be changed in mcelog.conf
logger -s -p daemon.err -t mcelog "$MESSAGE"
logger -s -p daemon.err -t mcelog "Location: $LOCATION"
[ -x ./dimm-error-trigger.local ] && . ./dimm-error-trigger.local
exit 0
Так что после установки других вещей, чтобы исправить драйверы, сообщение обстановки ушло, и исправление завершилось добавлением режимов «1280x1024»
до подраздела в разделе Экран в xorg.conf
Это более оптимизировано;
Вы можете сделать что-то в одной простой команде, а не два
(Например, [[-ZZ $ var]] && var = / temp
) или сложная команда, такая как
if [[ -z $var ]]
then
var=/temp
fi
. Также не требуется, чтобы условное значение быть назначенным для переменной. Например,
#!/bin/sh
prog="$1"
# Do sanity checks & input validation here.
cc "$prog" -o "${2:-$(basename "$prog")}"
, если это вызывается как COMP FOO.C
,
Это будет компилировать foo.ch
и напишите скомпилированный выход на foo
.
Но COMP FOO.C FU
будет компилироваться foo.c
И напишите скомпилированный выход на Фу
.
Это становится особенно значимым Если вы хотите использовать несколько параметров с значениями по умолчанию:
some_command ${1:-default_value1} ${2:-default_value2} ${3:-default_value3} ${4:-default_value4} ${5:-default_value5} ${6:-default_value6} ${7:-default_value7} ${8:-default_value8} ${9:-default_value9}
выполнение этого способа потребует около 18 команд настроить параметры.
Еще один пример того, как использовать это где вам не нужно назначать условное значение переменной Является ли сценарий, который хочет позволить пользователю редактировать файл:
#!/bin/sh ⋮ file=something ⋮ "$(EDITOR:-vi}" "$file"
, который вызывает любимый редактор пользователя
(как указано через редактор
переменной среды),
или VI
Если пользователь не указан.
Существует три случая: VAR
, возможно, было первоначально не рассеяно, пустым или непустым. В первых двух случаях он установлен на / TEMP
; В последнем случае он остался один.
Другим способом сделать то же самое, является
: "${var:=/temp}"
Я предпочитаю, что один, потому что цепочка назначений яснее, но это вопрос эстетики.
При нормальных настройках это эквивалентно
if [ -z "$var" ]; then var="/temp"; fi
, которое, возможно, более четко. Тем не менее, синтаксис $ {var: - ...}
или $ {var: = ...}
имеет преимущество: он работает даже в , набор
, который Причины $ var
к ошибке, если var
unset. Преимущество установлено -U
заключается в том, что он позволяет легко поймать ошибки из-за неправильного использования имени переменной или забывающей, чтобы определить его при определенных условиях. Тем не менее, он может использоваться только с сценариями, которые не предполагают, что расширение переменных unset всегда возможна.
Это не «Обшивок» - это «значение по умолчанию», в другом слове, если значение не установлено (или пустое) Используйте значение по умолчанию.
Это компактная идиома . Вы можете использовать ее inline, где выполняются команды:
cmd "${arg1}" "${arg2}" "${arg3:-42}"
или в начале программы (или в качестве первого утверждения в функциях) на утверждение интерфейса параметров (с помощью команды :
):
: "${1:?} ${2:?}"
или проверить и назначить ее семантически названным переменным, над которыми Вы работаете в программе или или в ответ на которые Вы работаете в программе или в ответ на которые Вы работаете в программе, или наоборот. функции:
foo=${1:?} bar=${2:?} baz=${3:-42}
где первые два аргумента (в данном примере) являются обязательными, а третий имеет значение по умолчанию (выше "42"), если оно не задано.
Вы также можете использовать для этой цели связанные конструкции ${var:=val}
(или ${var=val}
), если задействованы не позиционные параметры, а переменные:
: "${foo:=${1:?}} ${bar:=${2:?}} ${baz:=${3:-42}}"
Идиома ${var:-42}
также имеет вариант ${var-42}
(i. e. без двоеточия :
) до различать неотсыпанных параметров от пустых параметров; конструкции теста
не могут напрямую различать пустые переменные от неотсыпанных переменных.