Не может заставить cron.hourly работать

tail -1 file | awk '{gsub(/\\n/,"")}1'
6
задан 29 September 2011 в 14:49
2 ответа

Попробуйте добавить #! / bin / sh в качестве первой строки вашего скрипта и удаление расширения, чтобы имя было /etc/cron.hourly/cron-test

Я помню, что где-то читал, что cron не запускает файлы с расширением, потому что он использует runparts, когда / ect / 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

# m h dom mon dow user  command
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 в Ubuntu 10.04 с cron установлен (я не редактировал этот файл)

Поскольку файл / etc / crontab использует run-parts , имя файла очень ограничено согласно (Спасибо, Маттео):

run-parts runs a number of scripts or programs found in a single directory 
directory. Filenames should consist entirely of upper and lower case letters,
digits, underscores, and hyphens. Subdirectories of directory and files with
other names will be silently ignored. Scripts must follow the
#!/bin/interpretername convention in order to be executed. They will not
automatically be executed by /bin/sh. The files found will be run in the
lexical sort order of the filenames.
10
ответ дан 3 December 2019 в 00:08

Вот цитата из справочной страницы run-parts:

Имена файлов должны полностью состоять из прописных и строчных букв, цифры, символы подчеркивания и дефисы.

Дело в том, что вы включили '.' в вашем имени файла (непосредственно перед txt). Этот период не соответствует шаблону имени файла, который run-parts использует для поиска скриптов.

Помните, что расширения файлов НЕ являются частью файловой системы! Любые расширения файлов, которые вы добавляете, являются просто частью имени файла, поэтому, когда в правилах указано «имя файла», которое включает точку и расширения.

Кроме того,

скрипты должны соответствовать соглашению #! / Bin / Interferencetername чтобы

Это означает, что вы ДОЛЖНЫ вставить #! / bin / bash, чтобы ваш скрипт был выполнен.

3
ответ дан 3 December 2019 в 00:08

Теги

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