как определить начало часа в сценарии оболочки

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

Поскольку iso9660 распознается по данным в первом секторе, lsblkне смотрит дальше и также извлекает оттуда метку тома.

Простое создание таблицы разделов оставляет большую часть первого сектора нетронутой, вот почему вы видите это.

Сначала необходимо стереть первый сектор, например, с помощью. dd if=/dev/zero of=/dev/sdc count=1, а затем заново создайте таблицу разделов. Если вы создадите его заново с теми же параметрами, файловая система NTFS, которую вы создали ранее, должна остаться нетронутой.

1
24.04.2021, 13:34
2 ответа

В целом, лучше оставить принятие решений по планированию cron или другим процессам, не входящим в расписание.

Используйте расписание cron, которое запускает ваш скрипт или код каждые 10 минут таким образом, чтобы избежать запуска в течение часа:

10,20,30,40,50 * * * * my-command-here

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

В зависимости от вашей реализации cron вы можете возможно использовать

10-50/10 * * * * my-command-here

, при котором задание будет выполняться каждые десять минут с 10 часов до 50 часов (, т. е. будет пропущен полный час ).

Или даже просто

10/10 * * * * my-command-here

т. е. каждые десять минут с 10 мин. до 59 мин.

Вам необходимо проверить, действителен ли синтаксис в этих двух последних примерах в вашей системе, и я предлагаю вам прочитать crontab(5)руководство(man 5 crontab).

3
28.04.2021, 22:51

Чтобы ответить на ваш вопрос, следующий bashскрипт пропустит "начало часа", но ответ Кусалананды более эффективен, -это лучший ответ.

#!/usr/bin/env bash

nowminute=$(date +%M)
topofhr="00"
if [ $nowminute == $topofhr ]; then exit 0; fi 

...

balance of your script

date +%Mполучает минуты из текущего значения date; после этого сравнивается, чтобы увидеть, является ли это «началом часа» (00 минут ).

1
28.04.2021, 22:51

Теги

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