Короче говоря : я случайно удалил содержимое по умолчанию, которое установщик 64-разрядной Ubuntu 20.04 поместил в / etc / crontab
во время установки Ubuntu на моем компьютере, так что теперь я пытаясь выяснить, можно ли получить точную копию такого файла изнутри установочного файла Ubuntu ISO (например, из «локального репозитория», такого как ubuntu-20.04-amd64.iso
) или из удаленный репозиторий (например, размещенный на ubuntu.com или что-то в этом роде), поэтому я могу поместить этот файл по умолчанию crontab
обратно в / etc
.
Я смонтировал Ubuntu 20.04 ISO и запустил sudo ls -lR | grep -i crontab
внутри него, но файл crontab
не был найден, поэтому я предполагаю, что он может быть сжат внутри одного из файлов внутри такого файла ISO, или, возможно, системы crontab доступен для загрузки где-нибудь в сети ubuntu.com или PPA Launchpad: я просто не знаю.
Краткая история :
При использовании конвейерной обработки с |
, чтобы добавить однострочный вывод команды в / etc / crontab
, Я случайно набрал:
| sudo tee /etc/crontab
... вместо:
| sudo tee -a /etc/crontab
... и поэтому в конечном итоге заменил все содержимое / etc / crontab
всего на 1 строку вместо добавления такой 1 строки в конец такого файла. Отчаяние!
К моему счастью, это был первый раз, когда я пытался изменить такой файл, поэтому его содержимое было тем, что было по умолчанию, созданным Ubuntu во время его установки. Но что это за контент?
Я решил запустить info crontab
и обнаружил, что кажется тем же содержимым по умолчанию для / etc / crontab
] (но я не совсем уверен):
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Example of job definition:
#.-------------<-------- minute (0 - 59)
#| .------------<------- hour (0 - 23)
#| | .-----------<------ day of month (1 - 31)
#| | | .----------<----- month (1 - 12) OR jan,feb,mar,apr ...
#| | | | .---------<---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
#| | | | | .-------<--- user
#| | | | | | .--<-- command
#| | | | | | |
#v v v v v v v
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
Затем я решил сохранить приведенный выше код в новом файле / etc / crontab
с владельцем: group = root: root ( sudo chown root: root / etc / crontab
), а затем восстановите его разрешения с помощью sudo chmod 755 / etc / crontab
. После того, как я это сделал, я также создал его резервную копию с помощью sudo cp / etc / crontab /etc/crontab.bak
, а также создал его скелет (т.е. шаблон) с помощью sudo cp / etc / crontab / etc / skel / crontab
...
... но я не могу не задаться вопросом, действительно ли приведенный выше код точно такой же, как и установщик Ubuntu 20.04 были созданы внутри / etc / crontab
во время установки Ubuntu, и я не знаю, как получить точную копию такого исходного файла / файла по умолчанию (если он где-то доступен).
При условии, что у вас установлен cron или хотя бы один пакет, содержащий файл, вы можете найти пакет с помощью:
$ dpkg -S /etc/crontab
cron: /etc/crontab
далее, загрузить и распаковать пакет в настраиваемую папку ( Папка DEBIAN также находится в / var / lib / dpkg / info):
mkdir -p cron && \
cd $_ && apt-get download $_ && \
dpkg-deb --raw-extract ${_}*.deb $_
$ _
- это сокращение от последнего аргумента предыдущей команды.
на моем рабочем столе ubuntu 20.04 содержимое / etc / crontab выглядит следующим образом
koen@hpubuntu:/etc$ cat crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
вместо изменив файл / etc / crontab, вы также можете рассмотреть возможность добавления файлов в некоторые каталоги
dpkg -S can help to find the package linked to some source
> dpkg -S "/etc/crontab"
cron: /etc/crontab
кажется, что код можно найти здесь: https://git.launchpad.net/ubuntu/+source/cron/tree/debian/crontab.main