Что заставило мое поле CentOS 6.4 перезагружать себя?

Я люблю корректируемую горизонтальную опцию прокрутки, т.е. предварительно ожидаю слева/справа клавишу со стрелкой с числом и less прокрутит то число столбцов с тех пор, работы лучше всего с опцией строк прерывания -S.

less переключатели командной строки чтений от $LESS переменная на запуске, вот мои предпочтительные переключатели:

$ echo $LESS
-JMQRSi
  • -J добавьте столбец состояния слева, столбцы меток с поисковыми хитами.
  • -M больше подробной строки состояния.
  • -Q никакие звонки.
  • -R не преобразовывайте необработанный вход, позволяет escape-последовательностям интерпретироваться.
  • -S отключите обертывание строки.
  • -i нечувствительный к регистру поиск.
0
18.04.2013, 17:39
2 ответа

В этой точке похоже на исчерпание всех категорических источников для ответа на этот вопрос. Я сказал бы, что Ваш лучший выбор теперь будет состоять в том, чтобы попытаться воспроизвести проблему. Этот подход не собирается когда-либо говорить Вам наверняка, что произошло, но он проверит, есть ли у Вас все еще хорошие аппаратные средства (который более важен, чем ПОЧЕМУ так или иначе). Я выполнил полный тест памяти и тест диска как минимум.

Вот хороший сценарий тестирования, который не только тестирует Вашу память, но также и Ваши аппаратные средства доступ DMA (который так же вероятен быть проблемой): http://people.redhat.com/dledford/memtest.shtml

Я определенно также проверил бы Ваш жесткий диск на наличие ошибок; даже видео и звуковое оборудование могло использовать тест только, чтобы быть уверенным.

0
28.01.2020, 02:53
  • 1
    я не думаю, что когда-либо видел эту проблему, вызванную отказом оборудования. Каждый раз, когда я видел его, это была паника ядра или перебой в питании. Не высказывание этого не происходит, но это не столь распространено, как люди думают. –  Patrick 12.02.2014, 07:54

После того, как вы сообщили о получении выходных данных, таких как

total nodes=1

и

This node=0 

, распечатанных 4 раза, я сделал вывод, что вы пытаетесь сделать это: mpirun -np 4 script-name.sh . Это происходит потому, что mpirun запускает 4 копии сценария оболочки, который не понимает семантику связи MPI.

Если вы можете каким-то образом получить запуск mpirun на скрипте, то помните (1) сценарий выполняется в среде локального «головного» узла, а не удаленного, (2) сценарий должен exec к вашей программе в качестве последнего и последнего вдоха, и (3) когда программа запускается, она находится в среде, возможно, на другом узле - возможно, не имея доступа к файлам, которые у вас были на голове.

Сценарий должен выглядеть следующим образом:

PROG="$1"; shift;
OPT="$2"; shift    
for FILE in "$@"
do
     echo "Processing ${FILE}..."
     ./makeInp.sh ${FILE} ${FILE} >INP/${FILE}.inp
done
exec $PROG $OPT "$@"

В PROG необходимо индексировать ARGV в соответствии с текущим узлом/потоком. (Проверьте, не превышено ли значение argc , или будет получено нарушение указателя NULL.) Я не думаю, что есть другой/лучший способ.

-121--114224-

Если перейти по следующей ссылке на странице документации: http://www.centos.org/docs/5/html/5.2/Deployment_Guide/s2-pam-timestamp-remove.html , можно найти ссылку на утилиту pam_timestamp_check.

Утилита pam _ timestamp _ check проверяет действительность файла, и возвращаемое значение может быть проверено.

Подробнее см. также man pam_timestamp_check.

В моей системе (Linux Mint) я также обнаружил, что pam_timestamp_check всегда возвращает код выхода 7 - временная метка недействительна. Использование strace pam_timestamp_check для отладки процесса возвращает код выхода 2 - двоичный файл не является корнем setuid. После выполнения двоичного setuid с помощью chmod u + s/usr/bin/strace я смог проследить процесс:

lambert # strace pam_timestamp_check root
.
.
lstat("/var/run/sudo/lambert/9:root", {st_mode=S_IFREG|0600, st_size=57, ...}) = 0
access("/var/run/utmpx", F_OK)          = -1 ENOENT (No such file or directory)
open("/var/run/utmp", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
access("/var/run/utmpx", F_OK)          = -1 ENOENT (No such file or directory)
open("/var/run/utmp", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
exit_group(7)                           = ?
+++ exited with 7 +++

На этом выходе я вижу, что /var/run/utmp проверен и не может быть найден.

Поиск в моей файловой системе показывает, что файл utmp находится в /run/utmp вместо /var/run/utmp . После создания файла с помощью:

touch /var/run/utmp
chmod 664 /var/run/utmp
chown root:utmp /var/run/utmp

я смог начать новую сессию sudo (с нового терминала):

lambert $ sudo su
lambert # ls -l /var/run/utmp
-rw-rw-r-- 1 root utmp 384 mei 12 21:59 /var/run/utmp
#logout
lambert $ pam_timestamp_check root
lambert $ echo $?
0
-121--133405-

Когда происходит сбой Linux, он происходит тяжело и редко оставляет за собой полезное ядро ядра, которое дает вам какую-либо помощь. Для такой системы есть несколько вещей, которые вы должны сделать:

  1. Увеличить выход системного журнала. Ваша система использует rsyslogd, что еще лучше. В конечном счете у вас есть правило, например:

     *. */var/log/debug
    

    Убедитесь, что модуль ядра включен в rsyslogd. Я видел, как некоторые установки комментируют это. Это

     $ modLoad imklog
    

    Убедитесь, что вы вращаете этот файл каждый день. Необходимо сохранить только 2 поворота. В/etc/logrotate.d/syslog

    /var/log/debug
    {
    компресс
    ежедневно
    повернуть 2
    sharedscripts
    постсменить друг друга
    / bin/kill -HUP 'cat/var/run/syslogd.pid 2 >/dev/null '2 >/dev/null | | true
    endscript
    }
    

    Я также хочу включить функцию mark для вывода каждые 5 минут, но это более полезно в сети, когда вы не выполняете другой мониторинг.

  2. У меня есть сценарий, который я создал, чтобы захватить таблицу ps. Он бежит каждую минуту через крон. Это отлично позволяет определить, какие процессы имеют утечки памяти и тому подобное. Для этого используется более или менее команда:

    /bin/ps -A --sort tty, comm, pid -ww -o pgrp: 8, tty: 7, pid, c, pmem: 5, rss: 8, sz: 8, size: 8 = TSIZE, vsz: 8, nlwp, lstart, args
    

    У меня есть канал внутри perl-скрипта, который удаляет вывод «мертвого веса», такой как оболочки пользователя и потоки ядра. Комментарий, если заинтересован в полном сценарии. Файлы могут вырасти до 12 МБ в день, но ежедневное сжатие уменьшает это до нескольких сотен КБ.

  3. Я считаю использование пакета sysstat необходимым. Вот как часто настраивается мой (/etc/cron.d/sysstat )

     */10 * * * * root/usr/lib64/sa/sa1 10 60
    58 23 * * * корень rm -f/var/lib/sa/sa $ (дата +% d --date = завтра)
    

    Сбор системных данных каждые 10 секунд в течение 10 минут. Не стесняйтесь снижать это на сильно загруженной системе. Также помните, что это занимает много места на диске . Чтобы предотвратить повреждение файла sar, завтрашний файл sar с прошлого месяца удаляется незадолго до полуночи. (Однако если месяц заканчивается на 30 день, то 31 день прошлого месяца все равно останется. пожать плечами )

Поместите эти три вещи в вашу систему, и если вам снова не повезет, в вашем распоряжении будет МНОГО данных. Возможно, некоторые из них могут быть полезны.

1
28.01.2020, 02:53

Теги

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