3

Задание cron для updatedb не запустилось, потому что система была отключена. Я бы хотел, чтобы cron запустил эту работу сейчас, как если бы сейчас было время по расписанию. Есть способ сделать это?

Для этой работы я не хочу запускать ее на переднем плане, потому что я не хочу держать ее открытой, и я не хочу запускать ее на экране, потому что я не хочу, чтобы ее потом убирали , Во многих других случаях было бы полезно сделать то же самое, чтобы проверить правильность выполнения задания в среде, предоставленной cron.

4 ответа4

1

Среда, используемая cron, определена в /etc /crontab

Вы можете запустить свою команду, используя этот файл для настройки среды, например:

env - `cat /etc/crontab | grep -v "#" | grep -v "^$" | grep -v /etc/cron` your_script_name.sh

Это удаляет комментарии (строки, начинающиеся с #), пустые строки (соответствующие регулярному выражению: ^ $) и сами записи в системном crontab, оставляя только переменные среды. Эти переменные используются для запуска вашего скрипта в измененной среде с помощью команды env.

Если вы хотите создать фоновый процесс, вы можете сделать это с помощью nohup:

nohup 'env - `cat /etc/crontab | grep -v "#" | grep -v "^$" | grep -v /etc/cron` your_script_name.sh' &

Решение взято с:http://benohead.com/linux-simulate-the-cron-environment-to-test-run-your-scripts/

1

Как насчет

nohup updatedb &

выполняется в терминале (xterm или консоль)?

0

Вы можете использовать at для запуска команд неинтерактивно:

at now + 1 min
at> /command/to/run
at> ^D
job 2 at Wed Jul 30 14:27:00 2014

«сейчас + 1 мин» означает запуск команды на одну минуту в будущем. at запросе команды для запуска; нажмите Cntrl-D, когда закончите. at выполнит команду (и) в том же текущем каталоге и с теми же переменными среды, что и для вашего интерактивного сеанса.

0

Я однажды создал скрипт Bash с логикой для ручных запусков для тестирования и известных пропущенных запусков. Он использовал простое существование файла для работы, что-то вроде обратного файла LOCK.

Чтобы он работал, скрипт состоял из 2-х разделов или подпрограмм. Наш cron был разработан для работы каждые двенадцать часов в полдень или в середине дня, однако вы можете применить эту логику к любому расписанию.

Раздел A кода, проверенный на полдень или полночь, и если он был, коснулся файла: touch ./RUNCRON

Раздел B кода, проверен на наличие ./RUNCRON . Код нашего исходного задания cron был затем вставлен как THEN тело IF, в качестве последнего утверждения мы удалили файл ./RUNCRON

Новое задание cron было выполнено каждую минуту, а не каждые 12 часов. Чтобы запустить ручной запуск, нам нужно было только touch ~/path/to/RUNCRON

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .