Как я могу получить точную копию файла Ubuntu по умолчанию / etc / crontab из любого официального (локального или удаленного) репозитория? [дубликат]

Короче говоря : я случайно удалил содержимое по умолчанию, которое установщик 64-разрядной Ubuntu 20.04 поместил в / etc / crontab во время установки Ubuntu на моем компьютере, поэтому теперь я пытаюсь выяснить, возможно ли это чтобы получить точную копию такого файла либо изнутри установочного файла Ubuntu ISO (например, «локальный репозиторий», например ubuntu-20.04-amd64.iso ), либо из удаленного репозитория (например, размещенного в ubuntu.com или что-то в этом роде), поэтому я могу поместить этот файл по умолчанию crontab обратно в / etc .

Я смонтировал Ubuntu 2 0.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 всего одной строкой, вместо того, чтобы добавлять такую ​​строку в конец такого файла. Отчаяние!

К моему счастью, это был первый раз, когда я пытался изменить такой файл, поэтому его содержимое было стандартным, созданным 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, и я не знаю, как получить точный копия такого исходного файла / файла по умолчанию (если он где-то имеется).

0
задан 14 December 2020 в 14:33

2 ответа

При условии, что у вас установлен 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 $_

$ _ - это сокращение от последнего аргумента предыдущей команды.

1
ответ дан 3 January 2021 в 22:46

на моем рабочем столе 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, вы также можете рассмотреть возможность добавления файлов в некоторые каталоги

  • файл в /etc/cron.d/ с фрагментом cron
  • исполняемым файлом (скриптом) в соответствующем / etc / cron. [ ежечасно | ежедневно | еженедельно | ежемесячно].
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

​​
1
ответ дан 3 January 2021 в 22:46

Другие вопросы по тегам:

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