Не уверен, почему crontab не может запустить следующий код из-за ошибки PyMouse. Запускать его вручную не вызывает никаких проблем.
from pymouse import PyMouse
import csv
m = PyMouse()
file = open('/fullpath/track.csv','rb+',newline='')
with file:
header =['x','y']
writer = csv.DictWriter(file,fieldnames=header)
writer.writeheader()
writer.writerow({'x':m.position()[0],'y':m.position()[1]})
Из cat /var/spool/mail/doug
я вижу:
Traceback (most recent call last):
File "/home/doug/Desktop/track/mouse.py", line 4, in <module>
m = PyMouse()
File "/home/doug/.local/lib/python3.8/site-packages/pymouse/x11.py", line 86, in __init__
self.display = Display(display)
File "/usr/lib/python3/dist-packages/Xlib/display.py", line 89, in __init__
self.display = _BaseDisplay(display)
File "/usr/lib/python3/dist-packages/Xlib/display.py", line 71, in __init__
protocol_display.Display.__init__(self, *args, **keys)
File "/usr/lib/python3/dist-packages/Xlib/protocol/display.py", line 85, in __init__
name, protocol, host, displayno, screenno = connect.get_display(display)
File "/usr/lib/python3/dist-packages/Xlib/support/connect.py", line 73, in get_display
return mod.get_display(display)
File "/usr/lib/python3/dist-packages/Xlib/support/unix_connect.py", line 61, in get_display
raise error.DisplayNameError(display)
Xlib.error.DisplayNameError: Bad display name ""
Ближайшее решение, к которому я пришел, - Неверное отображаемое имя при запуске скрипта Python при загрузке с сенсорным экраном, но оно ко мне не относится.
Ниже мой cronjob:
*/1 * * * * DISPLAY = ":0" python3 /home/doug/Desktop/track/mouse.py --user
Есть ли способ запустить программу, использующую pymouse в фоновом режиме?
Как вы думаете, почему этот другой ответ к вам не подходит?
Попробуйте поместить DISPLAY = ":0"
в начало команды в crontab.
Если вы это сделаете, вам придется запустить задание cron от имени вошедшего в систему пользователя. Есть ли он сейчас в roon crontab?
К сожалению, DISPLAY = ":0"
для меня ничего не изменил. Я вставлю свой cronjob в свой пост. Я отредактирую это
Вы не можете использовать
PyMouse
в задании cron, к нему не подключена консоль.