Перезагрузка системы при выполнении команды "date -s"
Моя система перезагружается, когда я даю команду "date -s". Я собрал журнал, и он говорит это
Jan 18 13:27:46 watchdog[2421]: file /tmp/cmm/strobeWDT was not changed in 1 seconds.
Jan 18 13:27:46 watchdog[3303]: shutting down the system because of error 2
Jan 18 13:27:47 watchdog[2421]: stopping daemon (5.2)
Мое приложение, запущенное в системе, записывает в файл /tmp/cmm/strobeWDT. Если ему не удается выполнить запись в файл периодически, демон watchdog отправляет команду перезагрузки. Это понятно. Но только когда я даю команду "date -s" для установки новой даты, система регистрирует вышеуказанное сообщение и перезагружается.
Где проблема существует.
Я не знаю, достаточно ли вышеуказанной информации, чтобы решить проблему с вашей стороны. Пожалуйста, помогите
Добавление дополнительной информации
Я получаю вышеуказанное сообщение журнала из кода в file_stat.c (файл внутри исходного кода для сторожевого демона)
file_stat.c
#if USE_SYSLOG
/* do verbose logging */
if (verbose && logtick && ticker == 1)
syslog(LOG_INFO, "file %s was last changed at %s.", file->name, ctime(&buf.st_mtime));
#endif
if (time(NULL) - buf.st_mtime > file->parameter.file.mtime) {
/* file wasn't changed often enough */
#if USE_SYSLOG
syslog(LOG_ERR, "file %s was not changed in %d seconds.", file->name, file->parameter.file.mtime);
#else /* USE_SYSLOG */
fprintf(stderr, "file %s was not changed in %d seconds.", file->name, file->parameter.file.mtime);
#endif /* USE_SYSLOG */
Я думаю, что проблема выходит в этой части кода, потому что ошибка происходит из этого кода. Параметр.file.mtime настраивается в /etc/watchdog.conf как "change=1"
2 ответа
Итак, вы устанавливаете дату, когда вы запускаете date -s
, Вы устанавливаете часы назад или вперед? Похоже, когда вы устанавливаете системную дату, сторожевой таймер запутывается. Часы прыгают, а затем сторожевой таймер говорит: "Эй, время вышло, давайте перезагрузиться!".
Решение: не бегать date -s
? Вы должны установить и запустить ntp вместо того, чтобы постепенно вращать часы вместо того, чтобы заставлять их прыгать с помощью date -s
, Вот пример настройки NTP, например.
Я не знаком со сторожевым таймером, но хочу дать несколько идей:
- почему вы хотели отправить в сторожевой таймер команду перезагрузки, если ваше приложение не удалось?
- Вы проверили, чтобы увидеть любую команду date -s
псевдоним?
- каково значение вашей средней нагрузки?