2013-04-23 61 views
2

我添加了一个cron作业来执行一个依赖于wmctrl的python脚本。这项工作将无法正确执行,并且我已经将此追溯到cron作业似乎无法使用/查找wmctrl的事实。cron作业无法找到wmctrl

我有一个定期任务添加到我的标签如下:

* * * * * /home/tim/wmctrl -h > /home/tim/log.txt 

但结果log.txt文件是空的。这个命令在命令行中正常工作。

我的cron ENV如下:

HOME=/home/tim 
LOGNAME=tim 
PATH=/usr/bin:/bin 
SHELL=/bin/sh 
PWD=/home/tim 

wmctrl/usr/bin/

发现我已经尝试过其他普通的Python scrips和应用,这一切似乎是工作的罚款。

任何帮助或建议将不胜感激。

+0

我怀疑这是不是'cron'找不到'wmctrl',而是'wmctrl'不必你'DISPLAY'访问和其他变量可以使其与其他需要的流程进行交流,以实现您要求的目标。 'cron'作业在一个相当有限的用户环境中运行。 – twalberg 2013-04-23 14:31:40

+0

尝试在'/ home/tim/wmctrl'之前添加脚本的解释器:类似'/ bin/sh/home/tim/wmctrl' – fedorqui 2013-04-23 15:22:24

回答

2

你可以试试这个:

* * * * * export DISPLAY=:0 && /home/tim/wmctrl -h > /home/tim/log.txt 
+0

...并希望'DISPLAY =:0'始终是正确的,这是一个虚幻的希望,但如果偶尔的小故障是可以忍受的,例如在你的个人工作站上,可能工作得很好。 – tripleee 2014-01-10 06:59:35

+0

这里可能会有一些解释。 Cron作业是'cron'守护进程的直接子节点,无法知道是否有X会话,如果有,哪一个是你的。例如,如果您未登录,或者如果您有多个X会话,则这不会达到您想要的效果。 – tripleee 2014-01-10 07:01:29

+0

'出口'是多余的;只要说'DISPLAY =:0/home/tim/wmctrl -h>/home/tim/log.txt'。你真的打算每分钟覆盖一次这个文件吗? – tripleee 2014-01-10 07:02:57