2016-03-24 3 views
0

Я использую python pickle для создания объекта и сохранения в файле конфигурации. Без задания cron я могу запустить скрипт и создать файл config.pkl. Однако, как только я помещаю его в работу cron, и я не могу сгенерировать config.pkl, но генерируется журнал «call generateConfig». Файл имеет разрешение на выполнение.проблема пиренейского пика с заданием cron

Ниже приведены функции и работа cron.

def generateConfig(): 
     print "calling generateConfig" 
     configDict = {"test1":"value1","test2":"value2"} 
     output = open('config.pkl','wb') 
     pickle.dump(configDict, output) 
     output.close 

кронтаб:

00 05 * * * /user/bin/python ~/job/process.py 
+0

Вы уверены, что 'python' находится в'/user/bin' на вашей платформе? В большинстве Linux это обычно в '/ usr/bin'. Вы также абсолютно уверены, что cronjob сгенерировал '' вызывающий generateConfig'', а не остатки ручного запуска? – alvits

+0

Привет, @alvits, извините, моя опечатка на этом форуме. Я дважды проверял и задание cron:/usr/bin/python – Tammy

ответ

0

Поскольку вы не обеспечивает путь для config.pkl, мое предположение было бы это будет сбрасывать этот файл в домашнем каталоге пользователя, запустившего его; если он не помещается туда, попробуйте выполнить поиск в вашей системе. Если ошибка не регистрируется, скорее всего, файл находится где-то, а не там, где вы ожидаете.

Также рекомендуется обернуть все, что могло бы генерировать исключение (например, записывать файлы) в try/catch и явно обрабатывать или регистрировать проблемы, чтобы вы хотя бы контролировали выполнение скрипта; в этом случае, если вы попытаетесь рассортировать ресурс, ваш скрипт может умереть, не закрывая этот дескриптор файла. Использование 'with open(...) as output: - хороший вариант.

+0

Привет @kungphu, должен ли я жестко закодировать путь для config.pkl? Я попробовал output = open ('~/job/config.pkl', 'wb'), но все еще не могу найти в каталоге ~/job – Tammy

+0

Вы искали домашний каталог соответствующего пользователя? Я бы предложил начать с жесткого кодирования, например, 'open ('/ tmp/config.pkl', 'wb')' и посмотреть, появляется ли файл в tmp. Если это так, то это скорее проблема пути/конфигурации, и вы захотите либо использовать абсолютный, а не относительный путь. Если нет, есть что-то еще не так, и для диагностики может потребоваться больше вывода/ошибки. – kungphu

Смежные вопросы