Моя система перезагружается, когда я даю команду "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
псевдоним? - каково значение вашей средней нагрузки?