Возможно, я ошибаюсь (довольно новичок в этом, не уверен в нюансах между сборками), но вы можете попробовать:
sudo apt-get remove [package_to_be_removed] # удаляет связанные папки и файлы
# удаляет связанные папки, файлы и файлы конфигурации.
Cron действительно является неправильным инструментом для этого. На самом деле есть обычно используемый и подложенный инструмент, на который может работать. в основном предназначен для интерактивного использования, и я уверен, что кто-то найдет лучший способ сделать это.
В моем случае у меня будет скрипт, который я запускаю, указанный в файле testjobs.txt, и включаю строку, которая читает.
В качестве примера у меня было бы это как testjob. txt
echo "cat" >> foo.txt
date >> foo.txt
at now + 3 days < testjobs.txt
У меня есть две невинные команды, которые могут быть вашими shellscripts. Я запускаю эхо, чтобы убедиться, что у меня есть детерминированный вывод, а дата для подтверждения выполнения команды по мере необходимости. Когда при выполнении этой команды она завершится добавлением нового задания на 3 дня. (Я тестировал с одной минутой - что работает)
Я почти уверен, что меня вызвали к тому, как я злоупотреблял, но его удобный инструмент для планирования команды, которую нужно запустить в основном время или x дней после предыдущей команды.
Во-первых, фрагмент кода выше недействителен синтаксисом Bash, выглядит как Perl. Во-вторых, параметр z на date заставляет его выводить числовой часовой пояс. +%j - номер дня. Вам нужно:
if [[ ! $(( $(date +%j) % 3 )) ]] ;then
exit
fi
Но вы все равно увидите странность в конце года:
$ for i in 364 365 1 ; do echo "Day $i, $(( $i % 3 ))"; done
Day 364, 1
Day 365, 2
Day 1, 1
Вам может быть повезло с сохранением количества в файле, и тестирование / обновление.
Если вы можете просто оставить сценарий, выполняемый постоянно, вы могли бы сделать:
while true; do
[inert code here]
sleep 259200
done
Этот цикл всегда верен, поэтому он всегда будет выполнять код, а затем ждать три дня перед запуском цикла .
Вы можете использовать anacron вместо cron, он предназначен именно для того, чтобы делать то, что вам нужно. Из manpage:
Anacron может использоваться для выполнения команд периодически, с частотой, указанной в днях. В отличие от cron (8), он не предполагает, что машина работает непрерывно. Следовательно, он может использоваться на машинах, которые не работают 24 часа в сутки, для контроля ежедневных, еженедельных и ежемесячных заданий, которые обычно контролируются cron. При выполнении Anacron считывает список заданий из файла конфигурации, обычно / etc / anacrontab (см. Anacrontab (5)). Этот файл содержит список заданий, которые контролирует Anacron. Каждая запись задает период в днях, задержку в минутах, уникальный идентификатор задания и команду оболочки. Для каждого задания Anacron проверяет, выполнялось ли это задание за последние n дней, где n - период, указанный для этого задания. Если нет, Anacron запускает команду оболочки задания, после ожидания количества минут, заданных в качестве параметра задержки. После выхода команды Anacron записывает дату в специальном файле timestamp для этого задания, поэтому он может знать, когда его снова выполнить. Для расчета времени используется только дата. Час не используется.