Створюйте новий архів раз на хвилину, використовуючи "crontab"


9

Я намагаюся створити crontabновий .tarфайл щохвилини кожного робочого дня, використовуючи наступний код:

*/1 * * * 1,2,3,4,5 tar -cf /home/user/Archiv/$(date +"%Y%m%d%H%M").tar /home/user/Textverarbeitung/ -P

Це не працює. Чому?


Я не можу перестати читати заголовок як "Зробіть кожну хвилину архіву за допомогою crontab" (хвилина як маленька), оскільки стаття відсутня (не з вини ОП), тому я її виправляю.
кіт

3
Навіщо використовувати */1? Хіба це не те саме, що просто *?
naught101

Відповіді:


15

cronтрактує %як нові рядки. Вам потрібно використовувати escape it, тобто використовувати, \%щоб отримати буквальне, %як використовується date.

Тож вам потрібно:

date +"\%Y\%m\%d\%H\%M" 

Або ви можете використовувати скрипт і використовувати всі команди в скрипті і зателефонувати з нього crontab.

Від man 5 crontab:

Знаки відсотків (%) у команді, якщо не уникнути зворотної косої риски (\), будуть змінені в символи нового рядка, і всі дані після першого% будуть відправлені в команду як стандартне введення. Немає способу розділити один командний рядок на кілька рядків, як, наприклад, оболонка "\".


4

Використовуйте \%замість %- cron використовує %як новий рядок.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.