Как вставить строку в crontab ПОСЛЕ ключевого слова или строки с помощью скрипта

105.45M 13% 602.83kB/s 0:02:50 (xfr#495, ir-chk=1020/3825)

Означает, что:

  • Получатель / адресат восстановил 105,45 мегабайт (или 13% ) из примерно 811,15 мегабайт (100%) отправителя / источника файлы.
  • Эти файлы восстанавливаются со скоростью 602,83 килобайт в секунду , и эта операция передачи данных пока занимала 2 минуты и 50 секунд (прошедшее время).

Кроме того, xfr # 495 означает, что в настоящее время передается 495-й файл, а ir-chk = 1020/3825 указывает, что из общего количества (пока) 3825 файлов рекурсивно просканированы (обнаружены), на данный момент 1020 из них еще предстоит проверить / верифицировать.

Это означает, что если сканирование обнаруживает, например, если нужно проверить еще 100 файлов, обе стороны увеличиваются на 100 (тогда будет прочитано ir-chk = 1120/3925 ). После того, как все файлы были просканированы (обнаружены с помощью инкрементального рекурсивного сканирования), число справа от косой черты останется неизменным до конца всего процесса, а число слева от косой черты начнет уменьшаться. по мере того как проверяется (проверяется) все больше и больше файлов. Кроме того, из-за окончания рекурсии ir-chk изменится на to-chk , указывая на то, что сканирование с добавочной рекурсией завершилось, выполняя свою проверку (операцию обнаружения файлов).Тем не менее, поскольку файлы будут продолжать проверяться / проверяться до тех пор, пока все они не будут проверены, количество файлов, которые еще предстоит проверить / проверить (левая часть косой черты), будет уменьшаться до тех пор, пока это число не станет равным нулю (что указывает на конец процесса проверки файла) .

Пусть N будет фактическим общим количеством файлов, которые необходимо проверить / подтвердить, когда весь процесс завершится, вы увидите:

to-chk=0/N

... означает, что файла нет осталось проверить / проверить из общего числа N файлов, которые были обнаружены с помощью инкрементального рекурсивного сканирования.

О ir-chk (из справочной страницы rsync):

При инкрементном рекурсивном сканировании rsync не будет знать общее количество файлов в списке файлов, пока он достигает конца сканирования , но поскольку он начинает передавать файлы во время сканирования, он отображает строку с текстом "ir-chk" (для инкрементальной рекурсии {{1} } check) вместо "to-chk" до тех пор, пока он не узнает полный размер списка, после чего он переключится на использование "to-chk". Таким образом, вид «ir-chk» позволяет узнать, что общее количество файлов в списке файлов все еще будет увеличиваться (и каждый раз, когда это происходит, количество файлов, оставшихся для проверки увеличится на количество файлов, добавленных в список).

0
26.02.2019, 17:38
3 ответа

Это вставляет после всех строк # SPECIAL_JOBстроки $line.

crontab -l | sed '/# SPECIAL_JOB/a'"$line" | crontab -
3
28.01.2020, 02:22

Чтобы избежать проблем со специальными символами в тексте замены, я бы поместил новую запись cron в файл с именем, например new-entry, а затем использовал:

{ crontab -l | sed '/^# SPECIAL_JOB/{
n
r /path/to/new-entry
d
}' } | crontab -

Я сделал незначительное изменение скобок подоболочки (... )на простые фигурные скобки {... }, потому что нет реальной необходимости создавать подоболочку; тоже без вреда!

Затем я использую sed для разбора входящего текста; он ищет строку, начинающуюся с # SPECIAL_JOB, а затем выполняет три действия:

  1. печатает текущую строку, затем читает в следующей строке (это позволяет напечатать # SPECIAL_JOB)
  2. rчитает задание из вашего файла
  3. Затем
  4. dудаляет строку, которая раньше следовала за# SPECIAL_JOB--старым заданием.
1
28.01.2020, 02:22

Я бы предложил использовать ansible un большего масштаба.

-1
28.01.2020, 02:22

Теги

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