Рейтинг:2

Проблема с командой Watch, проблема со сценарием Bash или проблема с системой?

флаг in

Я написал простой bash-скрипт с именем запись-date.sh который просто записывает дату в файл:

#!/бин/баш

echo "$(date) Write Done" >> write-date.log

И я запускаю скрипт bash каждые 60 секунд следующим образом:

смотреть -n 60 ./write-date.sh

Однако, когда я запускаю команду, вывод создается в запись-date.log файл содержит вывод, как в фрагменте здесь:

Чт 1 июля 09:42:03 BST 2021 Запись Готово
Чт 1 июля 09:42:03 BST 2021 Запись Готово
Чт 1 июля 09:42:03 BST 2021 Запись Готово
Чт 1 июля 09:42:03 BST 2021 Запись Готово
Чт 1 июля 09:42:03 BST 2021 Запись Готово
Чт 1 июля 09:42:04 BST 2021 Запись Готово
Чт 1 июля 09:42:04 BST 2021 Запись Готово
Чт 1 июля 09:42:04 BST 2021 Запись Готово
Чт 1 июля 09:42:04 BST 2021 Запись Готово
Чт 1 июля 09:42:04 BST 2021 Запись Готово
Чт 1 июля 09:42:04 BST 2021 Запись Готово
Чт 1 июля 09:42:04 BST 2021 Запись Готово
Чт 1 июля 09:42:04 BST 2021 Запись Готово
Чт 1 июля 09:42:04 BST 2021 Запись Готово
Чт 1 июля 09:43:04 BST 2021 Запись Готово
Чт 1 июля 09:43:26 BST 2021 Запись Готово
Чт 1 июля 09:44:26 BST 2021 Запись Готово
Чт 1 июля 09:45:26 BST 2021 Запись Готово
Чт 1 июля 09:46:26 BST 2021 Запись Готово
Чт 1 июля 09:47:26 BST 2021 Запись Готово
Чт 1 июля 09:48:26 BST 2021 Запись Готово

Как видно, бывают случаи, когда дата записывается в файл журнала более одного раза в минуту (в 09:42 и 09:43 в этом примере фрагмента), и я не понимаю, почему это может быть... команда часов неверна? Является ли сам скрипт bash неправильным? Есть ли где-то проблема с системными часами?

ОС - Ubuntu 20.04, где uname -а является:

Linux-машина 5.4.0-77-generic #86-Ubuntu SMP Чт, 17 июня, 02:35:03 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

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

--- ОБНОВИТЬ ---

Остановили выполнение команды, очистили файл журнала и снова запустили команду с нуля, и теперь дата регистрируется один раз в минуту, как и следовало ожидать.

Как указано в комментариях, напечатанные повторяющиеся журналы могли быть результатом предыдущего запуска хитроумного сценария (вероятно, ошибка пользователя), но я не могу представить, как и когда это могло произойти. Все равно будет работать часами/днями, так что буду следить за этим.

muru avatar
флаг us
Вы **добавляете** (`>>`) к журналу. Вы уверены, что этих записей до `09:43:26` уже не было до того, как вы начали `смотреть`? В образце нет `09:23`.
Going Bananas avatar
флаг in
@muru Извините, 09:23 было опечаткой, вместо этого должно было быть 09:42. Я отредактирую сообщение, чтобы исправить опечатку ... Кроме того, с тех пор я удалил файл и повторно запустил его с нуля, и теперь он пишет только один раз в секунду, как и следовало ожидать, так что, возможно, это были устаревшие данные из предыдущего хитроумного script запускается, но я не могу понять, когда это могло произойти, но это указывает на ошибку пользователя. Я буду продолжать запускать разные прогоны некоторое время, чтобы посмотреть, не возникнет ли проблема снова. добавит эту деталь в пост тоже.
muru avatar
флаг us
Подождите, он по-прежнему регистрируется один раз в **сек**? Не раз в минуту?
Going Bananas avatar
флаг in
Прости @муру. Еще одна опечатка. Я хотел писать раз в минуту. поправлю в посте...
FedKad avatar
флаг cn
Вероятно, вы запускаете несколько копий скрипта (возможно, в фоновом режиме или на другом терминале). Я бы сделал `ps -ef | grep my_script_name` и `убить` любую работающую версию перед запуском новой.
Going Bananas avatar
флаг in
@FedonKadifeli В то время я проверял это как возможность, но работал только один скрипт. Кроме того, если бы было запущено n сценариев, то каждая записанная дата появлялась бы ровно n раз, что было не так, как видно из опубликованного фрагмента журнала.
FedKad avatar
флаг cn
Поправка, извините: я бы убил любой процесс `watch`, а не только процесс с именем вашего скрипта...
FedKad avatar
флаг cn
Другая возможность заключается в том, что вы ввели «0» вместо «60». В этом случае `watch` будет использовать задержку 0,1 секунды, что объясняет, почему вы видите десять записей в секунду в выходном файле.Пожалуйста, посмотрите на свою команду `история` Bash, чтобы проверить.
Going Bananas avatar
флаг in
Дело в том, что только иногда он записывал данные в файл чаще, чем раз в минуту во время одного и того же запуска скрипта.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.