То, 'которые' управляют, ничего не возвращает через крон, но работает через консоль

Я записал немного утилиты в haXe + Neko, который должен выполнить некоторые команды МЕРЗАВЦА. Для предотвращения жесткого кодирования путь к исполняемому файлу МЕРЗАВЦА, я хотел бы использовать, которые управляют для обнаружения, где это. Все работает как ожидалось при выполнении вручную от консоли, но не когда выполнение приложения на задании крона.

Я знаю об ограниченной среде (здесь или здесь), когда Вы запускаете скрипт с помощью крона, но все еще удивили, это не работает:

/usr/bin/which git >> /home/user/git.txt

Текстовый файл создается, но содержание пусто. Снова, когда выполнено от консоли это работает как ожидалось.

Какие-либо идеи? Я выполняю Leopard OS X, если это помогает.

Спасибо:)

Juan

1
задан 27.04.2010, 01:10

3 ответа

Если, 'который' мог бы найти исполняемый файл, то так мог интерпретатор оболочки, который выполняет Вашу команду крона. Таким образом, я не вижу, почему Вы хотели бы использовать 'который' с этой целью. Но возможно у Вас есть некоторая причина, которая не очевидна.

То, 'которые' управляют, использует каталоги, перечисленные в $PATH для поиска 1-го возникновения команды. Вероятный ПУТЬ не установлен к тому, что Вы думаете, что это. Попытайтесь добавить '/usr/bin/env>> /home/user/you/env.txt' к Вашему crontab для выполнения сегодня, одна минута с этого времени. Затем посмотрите в /home/user/you/env.txt для наблюдения то, к чему был установлен ПУТЬ. Если тот ПУТЬ не подходит в Ваших целях, Вам, вероятно, придется поместить все Ваши команды в маленький сценарий оболочки, где можно установить ПУТЬ сами. Можно также посмотреть в том, что файл env.txt для других экспортируемых переменных окружения, поскольку это могло бы пригодиться, в зависимости от того, что Вы хотите сделать через свой crontab.

3
ответ дан 12.12.2019, 08:39

Где мерзавец на самом деле расположен (т.е. если Вы работаете /usr/bin/which git от консоли, что это печатает)? Если это не находится в каталоге в $PATH (который является просто/usr/bin и / мусорное ведро на моей машине Snow Leopard), /usr/bin/which не найдет его, и Вы должны или hardcode это или добавляете строку как

PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

в crontab файл.

2
ответ дан 12.12.2019, 08:39

Это добилось бы цели?

/usr/bin/env  git

Огибающая команда заботится о нахождении команды и находится самостоятельно всегда в/usr/bin (таким образом, мне сказали...), Это - общий прием в сценариях Python, необходимых из-за другого Python помещения дистрибутива в различных местах, но никто не хочет обезьяне вокруг попытки найти где.

0
ответ дан 12.12.2019, 08:39

Теги

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