Назад | Перейти на главную страницу

Перезагрузка системы при выполнении команды «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. Если периодически не удается выполнить запись в файл, демон сторожевого таймера отправляет команду перезагрузки. Это понятно. Но только когда я даю команду «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"

Итак, вы устанавливаете дату при запуске date -s. Вы переводите часы назад или вперед? Похоже, когда вы устанавливаете системную дату, сторожевой таймер путается. Часы прыгают, а затем сторожевой таймер говорит: «Эй, время истекло, давайте перезагрузимся!».

Решение: не бегать date -s? Вам следует настроить и запустить ntp вместо того, чтобы постепенно переводить часы, вместо того, чтобы заставлять их прыгать, используя date -s. Вот Как настроить NTP например.

Я не знаком со сторожевым псом, но хочу поделиться некоторыми идеями: - почему вы хотите отправить сторожевому таймеру команду перезагрузки, если ваше приложение не удалось? - проверяли ли вы какую-либо команду date -s псевдоним? - каково значение вашей средней нагрузки?