Как прокомментировать все записи crontab, а затем раскомментировать их с помощью скрипта

Perl one -вкладыш здесь:

perl -F'\t' -lane '$r{$F[0].$F[1].$F[2].$F[3].$F[4]}=$_ if $F[8]=~/\// or $F[8]=~[A-Z] or $F[7]=~/\d/ or $F[6]=~/\b(\d\d)[ACTG]/ and $1<=50; END{print $r{$_} for (keys %r)}' file

Комментарии:

Решение perlбыло предложено при условии, что оно доступно в вашей системе. При необходимости его будет легко переписать в awk, учитывая, что логика и синтаксис очень похожи.

Условия основаны на ваших спецификациях и awkсниппете. Как уже указывалось в комментариях, по крайней мере один из них не соответствует вашему образцу входного файла.

Распечатывается последняя найденная запись с таким же ключом.

Записи печатаются в случайном порядке.

0
06.02.2020, 10:46
4 ответа

Экспортируйте текущий crontab в файл, удалите crontab, затем используйте ранее созданный файл.

$ crontab -l > cron_content
$ crontab -r
$ <this is where you do your stuff>
$ crontab cron_content
4
28.04.2021, 23:24

Вы можете использовать приведенный ниже скрипт для добавления или удаления комментариев из crontab.

#!/bin/bash

# you must have permission to read the crontab

if [[ $1 == "-add" ]]; then
        crontab -l > /tmp/cron_export
        awk '$0="#"$0' /tmp/cron_export > /tmp/cron_comment
        crontab -r
        crontab cron_comment
elif [[ $1 == "-remove" ]]; then
        crontab -l > /tmp/cron_export
        awk '{ print substr($0,2) }' /tmp/cron_export > /tmp/cront_uncomment
        crontab -r
        crontab cron_uncomment
else    
        echo "no option was selected. Please use -add to add comments or -remove to remove comments"
fi

# Remove all the create files for the operations

for f in /tmp/cron*; do
    [ -e "$f" ] && rm cron* || echo "No files to remove were found"
    break
done

Использование скрипта должно быть:

добавить комментарии

./youscriptname.sh -add

чтобы удалить комментарии

./youscriptname.sh -remove
0
28.04.2021, 23:24

Скопируем cron в какой-нибудь другой файл, внесем изменения и снова применим cron.

Скопируйте ваш cron в какой-нибудь файл,

crontabl -l > filename

Теперь у filenameесть ваш cron, вы можете применить свой cron, используя

crontab filename

Комментарии начинаются с #, поэтому мы будем добавлять и удалять #в начале строки.

Чтобы добавлять и удалять комментарии, вы можете использоватьsed

Удалить комментарии(#)

sed -i -e 's/^# //g' filename

Добавить комментарии(#)

sed -i -e 's/^/# /g' filename

Применить cron с помощью

crontab filename

Проверьте хрон

crontab -l

Happy Scripting
0
28.04.2021, 23:24

Старый пост, но я думаю, что есть гораздо более быстрое и простое решение:

В Linux все является файлом.Crontab хранит cron каждого пользователя в /var/spool/cron/

  • В Ubuntu 20.04:/var/spool/cron/crontabs/
  • В RHEL7:/var/spool/cron/<пользователь>

Так что вы можете просто:

# comment
sed -i 's/^/#/' /var/spool/cron/<user>

# uncomment
sed -i 's/^#//' /var/spool/cron/<user>
0
18.11.2021, 13:29

Теги

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