Где хранятся инструкции по умолчанию crontab?

[Примечание: если у вас нет подключенного адаптера WiFi, опустите команды, содержащие wlan0]

После загрузки попробуйте запустить следующие команды:

sudo su
service network-manager stop
ifconfig wlan0 down
ifconfig eth0 down
ifconfig wlan0 up
ifconfig eth0 up
service network-manager start
0
задан 14 April 2018 в 20:14

4 ответа

Текст фактически кажется встроенным в исходный код crontab.c вместо чтения из файла во время выполнения:

if (add_help_text) { fprintf(NewCrontab, "# Edit this file to introduce tasks to be run by cron.\n" "# \n" "# Each task to run has to be defined through a single line\n" "# indicating with different fields when the task will be run\n" "# and what command to run for the task\n" "# \n" "# To define the time you can provide concrete values for\n" "# minute (m), hour (h), day of month (dom), month (mon),\n" "# and day of week (dow) or use '*' in these fields (for 'any')." "# \n" "# Notice that tasks will be started based on the cron's system\n" "# daemon's notion of time and timezones.\n" "# \n" "# Output of the crontab jobs (including errors) is sent through\n" "# email to the user the crontab file belongs to (unless redirected).\n" "# \n" "# For example, you can run a backup of all your user accounts\n" "# at 5 a.m every week with:\n" "# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/\n" "# \n" "# For more information see the manual pages of crontab(5) and cron(8)\n" "# \n" "# m h dom mon dow command\n" ); } /* ignore the top few comments since we probably put them there. */

Переменная add_help_text отлична от нуля, если crontab не удалось найти существующий файл спула для пользователя:

log_it(RealUser, Pid, "BEGIN EDIT", User); (void) snprintf(n, MAX_FNAME, CRON_TAB(User)); if (!(f = fopen(n, "r"))) { if (errno != ENOENT) { fprintf(stderr, "%s/: fdopen: %s", n, strerror(errno)); exit(ERROR_EXIT); } fprintf(stderr, "no crontab for %s - using an empty one\n", User); if (!(f = fopen("/dev/null", "r"))) { perror("/dev/null"); exit(ERROR_EXIT); } add_help_text = 1; }
2
ответ дан 17 July 2018 в 16:50

Он встроен в исполняемый файл:

strings $(type -p crontab) | less "+/Edit this file to introduce tasks to be run by cron"

Не нужно проконсультироваться с источником. Я согласен с исходным кодом в One True Document.

0
ответ дан 17 July 2018 в 16:50

Текст фактически кажется встроенным в исходный код crontab.c вместо чтения из файла во время выполнения:

if (add_help_text) { fprintf(NewCrontab, "# Edit this file to introduce tasks to be run by cron.\n" "# \n" "# Each task to run has to be defined through a single line\n" "# indicating with different fields when the task will be run\n" "# and what command to run for the task\n" "# \n" "# To define the time you can provide concrete values for\n" "# minute (m), hour (h), day of month (dom), month (mon),\n" "# and day of week (dow) or use '*' in these fields (for 'any')." "# \n" "# Notice that tasks will be started based on the cron's system\n" "# daemon's notion of time and timezones.\n" "# \n" "# Output of the crontab jobs (including errors) is sent through\n" "# email to the user the crontab file belongs to (unless redirected).\n" "# \n" "# For example, you can run a backup of all your user accounts\n" "# at 5 a.m every week with:\n" "# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/\n" "# \n" "# For more information see the manual pages of crontab(5) and cron(8)\n" "# \n" "# m h dom mon dow command\n" ); } /* ignore the top few comments since we probably put them there. */

Переменная add_help_text отлична от нуля, если crontab не удалось найти существующий файл спула для пользователя:

log_it(RealUser, Pid, "BEGIN EDIT", User); (void) snprintf(n, MAX_FNAME, CRON_TAB(User)); if (!(f = fopen(n, "r"))) { if (errno != ENOENT) { fprintf(stderr, "%s/: fdopen: %s", n, strerror(errno)); exit(ERROR_EXIT); } fprintf(stderr, "no crontab for %s - using an empty one\n", User); if (!(f = fopen("/dev/null", "r"))) { perror("/dev/null"); exit(ERROR_EXIT); } add_help_text = 1; }
2
ответ дан 23 July 2018 в 17:41
  • 1
    +1 для хорошей находки. Я так и думал, но не нашел соответствующего исходного кода. Я думал, что вождение с переменной окружения CRONTAB_NOHEADER может помочь, но было не так. Это просто для заголовка DO NOT EDIT. – PerlDuck 14 April 2018 в 22:27

Он встроен в исполняемый файл:

strings $(type -p crontab) | less "+/Edit this file to introduce tasks to be run by cron"

Не нужно проконсультироваться с источником. Я согласен с исходным кодом в One True Document.

0
ответ дан 23 July 2018 в 17:41
  • 1
    Ну, иногда strings возвращает искаженный вывод и , часто жестко закодированный текст в двоичном файле является только последним регрессором, если внешний файл конфигурации не найден. – PerlDuck 14 April 2018 в 23:11
  • 2
    @PerlDuck Тщательная проверка вывода strings (выполняется в двоичном формате ELF) может показать вам все файлы, которые он может открыть, встроенные тексты, строки версий, .... Выход не искажен, только некоторые бинарные поля также можно рассматривать как текст. Мне также нравятся примеры «часто жестко закодированный текст в двоичном формате - это только последнее средство». Я видел программы, которые записывают отсутствующий файл конфигурации со значениями по умолчанию, копируют файл по умолчанию из другого места, ... – waltinator 14 April 2018 в 23:14

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

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