crontab -e
изначально выбирает текстовый шаблон, видимо, из этого файла https://anonscm.debian.org/cgit/pkg-cron/pkg-cron.git/tree/crontab.c . Я хотел бы программно извлечь этот блок текста, чтобы затем я мог добавить строки с заданиями cron в конце шаблона, чтобы он выглядел как отредактированный вручную файл cron.
crontab -e > somefile
не работает, потому что застревает в интерактивной оболочке.
crontab -l > somefile
также не работает, потому что нет файла crontab при создании учетной записи пользователя.
Я мог бы попробовать и sed
текстовый шаблон, но где бы он находился в работающей системе? А также, будет ли он присутствовать, скажем, в образе (Ubuntu), развернутом хостинг-провайдером, или мне сначала нужно будет добавить репозиторий источников в список apt?
Может быть, проще было бы, export VISUAL=nano; crontab -e
а затем отправить Ctrl + o, Enter, Ctrl + X, чтобы создать новый файл crontab без участия пользователя? Но как мне отправить нажатия клавиш в интерактивную оболочку внутри bash-скрипта?
Ответы:
Поскольку шаблон встроен в
crontab
саму программу, нет необходимости его существования в каком-либо другом файле.Чтобы извлечь его в системе, где у вас нет crontab, попробуйте временно установить редактор в
touch
.Вы также можете извлечь его
strings
или просто встроить как документ здесь в свой собственный скрипт.источник
strings
локальныйcrontab
двоичный файл, но выходной поток обычно довольно шумный.touch
простойsed
скрипт, который добавляет комментарий. Синтаксис варьируется между диалектами, но попробуйтеVISUAL='sed -i \$a\\#' crontab -e