Как сказать, является ли продолжительность более чем одним часом через несколько сценариев оболочки?

Это - (более или менее) ожидаемое поведение. Заключение в кавычки страницы справочника:

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

Таким образом: диск не распознан как бывший член массива. При задавании субоптимального вопроса Вы ничего не сказали об этом.

Вероятно, это - причина, почему/dev/sdj1 отмечен как запчасть.

Это наоборот: Поскольку sdj1 все еще отмечен как запчасть, которая "удаленная" строка все еще там. Я не знаю хотя, почему резервный диск автоматически не используется для заполнения пустого слота (поскольку страница справочника требует). Возможно, это изменяет свое состояние от "запчасти" до "активного", если синхронизация закончена. Взгляните на /proc/mdstat.

4
20.04.2015, 04:11
2 ответа

В bash (и некоторых других оболочках, таких как zsh) можно использовать $ _ , который содержит последний аргумент предыдущей команды:

mkdir /path/to/file
cd "$_"
-121--155735-

Используйте -o или попробуйте vim-way:

$ ex -s +'%!sort' -cxa file.txt
-121--4890-
export BOOT_TIME=$(date +%s)
current=$(date +%s)
(( current - BOOT_TIME >3600 ))  && echo "More than an hour"

% s возвращает секунды, поскольку

Обсуждение: почему секунды лучше

Предположим, например, что время начала (загрузки) - 23:00, а текущее время - 00:23. Тогда $ TIME будет отрицательным, и это не сработает:

if [ $TIME -gt 0 ] && [ $START_M -lt $CURRENT_M ]; then
    echo "boot time is more than an hour"
fi

Аналогично предположим, что время начала равно 12:03, а текущее время равно 14:00. Тогда вышеперечисленное тоже не сработает, на этот раз из-за проверки минут.

8
27.01.2020, 20:47

Здесь

  1. Вы имеете потенциальное состояние гонки, когда устанавливаете Час и Минуту текущего времени в отдельных заявлениях (рассмотрим опрокидывание минут в верхней части часа).

  2. В своем первом фрагменте сценария вы используете %m для минут (но на самом деле это месяцы). Во втором вы используете %M.

Я рекомендую вам использовать HHMM=$(дата +'%H %M'), а затем разделить это на две части. Еще лучше взять время как комбинированное значение секунд с эпохи SECONDS=$(date --utc +'%s') и разрешить 3600 секунд в часу. (Часть --utc позволяет избежать перехвата изменений местного времени дважды в год)

.
3
27.01.2020, 20:47

Теги

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