Я использую crontab в первый раз. Хочу написать несколько очень простых тестовых задач cron и запустить их.
$crontab * * * * * echo "Hi"
ничего не производит
crontab */1 * * * * echo "hi"
говорит */1: No such file or directory
.
Также, как мне перечислить текущие задачи cron (не только те, что у меня есть, но и те, которые были запущены другими пользователями, такими как root).
И как мне удалить конкретную задачу cron?
Ответы:
Вы не можете использовать
crontab
это так. Используйте,man crontab
чтобы прочитать о правильном способе вызова этой утилиты.Вы захотите использовать
crontab -e
для редактирования записей cron текущего пользователя (вы можете добавлять / изменять / удалять строки). Используйтеcrontab -l
для просмотра текущего списка настроенных задач.Что касается просмотра crontabs других пользователей, это невозможно без установки root по умолчанию. Посмотрите, как мне перечислить все задания cron для всех пользователей, чтобы узнать о некоторых способах перечисления всего (как root).
Примечание: будьте очень осторожны при использовании символов командной строки в командной строке (
*
и?
особенно).*
будет расширен до списка файлов в текущем каталоге, что может иметь неожиданные последствия. Если вы хотите передать*
в качестве аргумента что-то, заключите его в кавычки ('*'
).источник
mail
из командной строки должны получить доступ к локальному почтовому ящику, если он настроено.) Для того, чтобы увидеть «привет» в графической среде, можно установить задачу:* * * * * export DISPLAY=:0; xmessage 'hi'
.Есть два способа редактирования
crontab
:в интерактивном режиме, используя
crontab -e
, что откроетcrontab
в редакторе, указанном$VISUAL
или$EDITOR
, илинеинтерактивно, используя
crontab crontab.txt
, который просто импортируетcrontab
записи из файлаcrontab.txt
, заменяя существующий активный crontab для текущего пользователя.Проблема в том, что вы просто
crontab
неправильно используете команду.Следующее касается неинтерактивных манипуляций crontab:
Таким образом, чтобы удалить определенные задачи программно, вы можете сделать что-то вроде
где
PATTERN
- это регулярное выражение, которое будет соответствовать задаче, которую вы хотите удалить. Здесь,crontab -l
даст вам ваш текущийcrontab
.Или, если у вас есть записи в файле,
crontab-fragment.txt
который вы хотите удалить из активного crontab,Это читает текущий crontab и отфильтровывает (удаляет) любую строку, которая также встречается в файле
crontab-fragment.txt
в текущем каталоге (с использованием сравнения строк полной строки). Результат сохраняетсяcrontab.txt
и затем загружается оттуда для замены текущего crontab.Чтобы добавить одно или несколько заданий , сделайте что-то вроде
Это предполагает, что файл
crontab-fragment.txt
содержит записи, которые вы хотели бы добавить. Он читает текущий crontab, добавляет к нему записиcrontab-fragment.txt
и создаетcrontab.txt
. Затемcrontab.txt
файл заменяет текущий crontab.источник
Если вы хотите изменить crontab в интерактивном режиме, запустите команду
crontab -e
без других опций. Это запустит редактор для копии crontab; Когда вы выходите из редактора , отредактированная копия становится новым crontab. Вы можете контролировать, какой редактор запускается с помощью переменных средыVISUAL
иEDITOR
. Чтобы перечислить свой crontab, запуститеcrontab -l
.Если вы хотите изменить crontab в сценарии, задайте
VISUAL
иEDITOR
путь к сценарию или к фрагменту оболочки, который изменяет предоставленный файл на месте. Редакторed
возможен здесь, илиsed -i
если ваша реализацияsed
имеет эту опцию. Если вы хотите безоговорочно добавить строку, вы можете использоватьecho … >>
. Будьте осторожны с цитированием; если сомневаетесь, напишите сценарий и передайте имя сценария какEDITOR
.источник
Это немного поздно, но для тех, кто ищет здесь. Есть более простые способы, чем манипулирование потоками ввода / вывода с помощью
VISUAL
иEDITOR
.Вы можете просто записать свое расписание cron в файл, 1 задание на строку, и использовать команду,
crontab [filename]
чтобы вы моглиcat
включить ваши заданияfilename
как часть вашего скрипта, а затем, наконец, в конце вызвать crontab, если хотите.на самом деле это наиболее распространенное использование в качестве
man crontab
подсказок, перечислив его первымисточник
Если вы хотите добавить записи с
crontab
помощью автоматизации или из командной строки, вы можете это сделать (установив желаемое время)Потом:
перезагрузить crontabs.
источник
/var/spool/cron
. Лучший способ был бы черезcrontab(1)
команду.Попробуйте это с этой командой:
затем добавьте свою работу cron:
в этом файле.
источник
Я хотел бы выделить способ, которым я опишу ниже, хотя это было упомянуто ранее в другом комментарии. Я нашел это чрезвычайно полезным при добавлении записей в файл, а затем добавить файл в crontab. Этот файл будет содержать две записи ниже и имя файла будет
hello-world-crontab.txt
.0 09 * * * echo "Hello world!" >> /home/user/greeting.txt
0 09 * * * python /home/user/greeting.py
Затем я выполнил команду ниже, чтобы добавить эти записи в crontab.
$ crontab hello-world-crontab.txt
Следующим шагом является проверка того, что эти записи были добавлены.
$ crontab -l
Краткое объяснение того, что делает каждая запись:
/home/user/greeting.txt
каждый день в 9 часов утра.0 09 * * * echo "Hello world!" >> /home/user/greeting.txt
0 09 * * * python /home/user/greeting.py
источник