Запуск скрипта Python, который открывает окно с crontab

Я новичок в python и crontab, поэтому точно не знаю, как выполнить задачу. Это программа моего друга. Это часы обратного отсчета, начиная с 5 минут и считая до нуля. Я вынул много заметок, чтобы уменьшить его.

try:
    # Python2
    import Tkinter as tk
except ImportError:
    # Python3
    import tkinter as tk
import time
def count_down():
    for t in range(298, -1, -1):
        sf = "{t:01d}:{:02d}".format(*divmod(t,60))
        #print(sf) # test
        time_str.set(sf)
        root.update()
        time.sleep(1)
root = tk.Tk()
time_str = tk.StringVar()
label_font = ('helvetica'), 535)
tk.Label(root, textvariable=time_str, font=label_font, bg='mediumblue', 
    fg='white', relief='raised', bd=3).pack(fill='x', padx=5, pady=5)
for t in range (297, -1, -1):
    sf = "{01d:}{:02d}".format(*divmod(t, 60))
    time_str.set(sf)
    root.update()
    time.sleep(.958)
root.mainloop()

Теперь проблема заключается в crontab. Я создал crontab, который

* * * * * /home/pi/Desktop/clock/5minute.py

5 звездочек предназначены для тестирования. Позже он должен запускаться в определенное время. В самой программе уже установлены права 777. Я пытался запустить crontab с такими параметрами, как export DISPLAY=:0 &&, но ничего не получилось. Я все еще учусь, поэтому любая помощь будет оценена!


person Lopezruy    schedule 08.12.2015    source источник
comment
Вы вызываете это с помощью python /home/pi/Desktop/clock/5minute.py в crontab?   -  person ctrl-alt-delete    schedule 08.12.2015
comment
Какую бы проблему вы ни пытались решить, chmod 777 неправильна и опасна — вам следует вернуться к нормальным разрешениям (в частности, отключить всеобщее разрешение на запись), прежде чем делать что-либо еще.   -  person tripleee    schedule 08.12.2015
comment
cron не имеет доступа к вашему сеансу X. Даже если на DISPLAY=:0 есть один X-сеанс, у вашего демона cron нет простого способа взаимодействовать с ним; и не должно быть. Вместо этого вы должны запустить что-то из своего собственного .xsession или подобного. Это часто задаваемые вопросы.   -  person tripleee    schedule 08.12.2015
comment
@toasteez каталог ссылается на упомянутый скрипт   -  person Lopezruy    schedule 08.12.2015
comment
@tripleee Я исправил разрешения. Не могли бы вы направить меня к дополнительной информации о сеансах X? Спасибо.   -  person Lopezruy    schedule 08.12.2015
comment
Быстрый поиск в Google дает мне, например. unix.stackexchange.com/questions/25684/   -  person tripleee    schedule 08.12.2015


Ответы (1)


Измените настройки crontab с текущего на это, это сработает.

* * * * * /usr/bin/python /home/pi/Desktop/clock/5minute.py

Здесь вы не упоминаете путь python, который может быть причиной того, что вы столкнулись с трудностями при его работе.

person Prashant Shukla    schedule 08.12.2015
comment
Вы установили время. попробуйте */2 * * * * /usr/bin/python /home/pi/Desktop/clock/5minute.py Это начнется через 2 минуты - person Prashant Shukla; 08.12.2015
comment
Под установленным временем вы имеете в виду, что я должен снова установить время в моем часовом поясе? Я попробую это в ближайшее время. Спасибо. - person Lopezruy; 08.12.2015
comment
Я прошу вас протестировать этот код, просто установив задачу cron через 2 минуты. - person Prashant Shukla; 08.12.2015
comment
вы можете следить за тем, работает ли ваша задача cron, перейдя в /var/log/syslog - person Prashant Shukla; 08.12.2015
comment
После проверки системного журнала он запускает команду. Вывод идет на 7 декабря 11:09:01 /USR/SBIN/CRON[2305]: (pi) CMD (/usr/bin/python /home/pi/Desktop/clock/5mintute.py После этой строки ( CRON) info (MTA не установлен, вывод отбрасывается). Я думаю, что он просто не берет вывод и не использует его, но поскольку там что-то не установлено, он не будет работать. - person Lopezruy; 08.12.2015
comment
Я думаю, что @tripleee верен выше, cron не имеет доступа к вашей X-сессии - person ctrl-alt-delete; 09.12.2015
comment
Это решение от @tripleee решило вашу проблему. PS для получения дополнительной информации о том, где вы ошибаетесь, вы можете проверить auth.log и журнал ошибок по одному и тому же пути с соответствующей отметкой времени. - person Prashant Shukla; 09.12.2015