Таймер systemd при загрузке, но не слишком часто

Лучше всего это делать с помощью ассоциативного массива. например.

declare -A array

while IFS=: read key val; do
  array["$key"]="$val"
done < input.txt

for key in Total_Test_Cases_Count Total_Pass; do
  printf '%s=%s\n' "$key" "${array[$key]}"
done

Выход:

Total_Test_Cases_Count=25
Total_Pass=24

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

while IFS=$'\t' read key val; do
  array["$key"]="$val"
done < <(sed -e 's/:/\t/1' input.txt)

IFS настроен на использование табуляции в качестве разделителя, а команда sedзаменяет первый (и только первый )символ двоеточия на табуляцию.

0
19.11.2020, 15:35
1 ответ

Следующий файл таймера взят из здесь , но в основном это файл по умолчанию для многих систем. Ваша система может на самом деле включать один, он может быть ниже /lib/systemd/system/fstrim.timerили вы можете проверить с помощьюsystemctl status fstrim.timer

fstrim.timer

[Unit]
Description=Discard unused blocks once a week
Documentation=man:fstrim

[Timer]
OnCalendar=weekly
AccuracySec=1h
Persistent=true

[Install]
WantedBy=timers.target

Это будет выполняться один раз в неделю, если вы оставите свой компьютер включенным -и немедленно, если вы пропустите последний раз (включите его снова через более чем неделю)(также см. Arch Wiki:Таймер реального времени):

When activated, it triggers the service immediately if it missed the last start time (option Persistent=true), for example due to the system being powered off

2
18.03.2021, 22:48

Теги

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