Как смоделировать среду, с которой cron выполняет скрипт? - PullRequest
239 голосов
/ 25 января 2010

У меня обычно есть несколько проблем с тем, как cron выполняет скрипты, так как они обычно не имеют моей настройки среды. Есть ли способ вызвать bash (?) Таким же образом, как это делает cron, чтобы я мог тестировать сценарии перед их установкой?

Ответы [ 12 ]

0 голосов
/ 27 марта 2017

Ответ https://stackoverflow.com/a/2546509/5593430 показывает, как получить среду cron и использовать ее для своего скрипта. Но имейте в виду, что среда может отличаться в зависимости от используемого файла crontab. Я создал три разных записи cron, чтобы сохранить среду через env > log. Это результаты на Amazon Linux 4.4.35-33.55.amzn1.x86_64.

1. Глобальный / etc / crontab с пользователем root

MAILTO=root
SHELL=/bin/bash
USER=root
PATH=/sbin:/bin:/usr/sbin:/usr/bin
PWD=/
LANG=en_US.UTF-8
SHLVL=1
HOME=/
LOGNAME=root
_=/bin/env

2. Пользователь crontab root (crontab -e)

SHELL=/bin/sh
USER=root
PATH=/usr/bin:/bin
PWD=/root
LANG=en_US.UTF-8
SHLVL=1
HOME=/root
LOGNAME=root
_=/usr/bin/env

3. Скрипт в /etc/cron.hourly/

MAILTO=root
SHELL=/bin/bash
USER=root
PATH=/sbin:/bin:/usr/sbin:/usr/bin
_=/bin/env
PWD=/
LANG=en_US.UTF-8
SHLVL=3
HOME=/
LOGNAME=root

Самое главное PATH, PWD и HOME отличаются. Обязательно установите их в своих скриптах cron, чтобы они полагались на стабильную среду.

0 голосов
/ 26 января 2010

Я не верю, что есть; я знаю, что единственный способ проверить работу cron - это запустить ее через минуту или две, а затем ждать.

...