嘿,我在尝试用ubuntu的python脚本运行cron作业时遇到了一个问题。这就是我所做的:
1.)编写了一个简单的tkinter应用程序:代码的源代码来自这个url-http://www.ittc.ku.edu/~niehaus/classes/448-s04/448-standard/simple_gui_examples/sample.py
#!/usr/bin/python
from Tkinter import *
class App:
def __init__(self,parent):
f = Frame(parent)
f.pack(padx=15,pady=15)
self.entry = Entry(f,text="enter your choice")
self.entry.pack(side= TOP,padx=10,pady=12)
self.button = Button(f, text="print",command=self.print_this)
self.button.pack(side=BOTTOM,padx=10,pady=10)
self.exit = Button(f, text="exit", command=f.quit)
self.exit.pack(side=BOTTOM,padx=10,pady=10)
def print_this(self):
print "this is to be printed"
root = Tk()
root.title('Tkwidgets application')
app = App(root)
root.mainloop()
2.)将脚本更改为可执行:
chmod 777 sample.py
3.)将脚本添加到我的cronjob中,以便每分钟运行一次以进行测试。我打开了crontab-e并将以下内容添加到我的文件中:
* * * * * /home/bbc/workspace/python/tkinter/sample.py
4.)免责声明:我没有为tkinter添加任何附加环境变量,也没有在/etc/init.d/cron上更改cronjob脚本
5.)我通过tail-f/var/log/syslog跟踪cron作业
$ tail -f /var/log/syslog
Jul 7 18:33:01 bbc CRON[11346]: (bbc) CMD (/home/bbc/workspace/python/tkinter/sample.py)
Jul 7 18:33:01 bbc CRON[11343]: (CRON) error (grandchild #11344 failed with exit status 1)
Jul 7 18:33:01 bbc CRON[11343]: (CRON) info (No MTA installed, discarding output)
Jul 7 18:33:01 bbc CRON[11342]: (CRON) error (grandchild #11346 failed with exit status 1)
Jul 7 18:33:01 bbc CRON[11342]: (CRON) info (No MTA installed, discarding output)
任何有关调试此问题的帮助将不胜感激。。。
我不知道你在这里会发生什么。cronjob无法访问可以显示GUI的显示器,因此永远不会显示按钮,因此永远不会运行
print_this
FWIW,当我试图运行你的代码时,我得到了一个错误:
不确定这是否只是由于复制/粘贴到页面中造成的,或者这是代码的真正问题。
在LinuxMint17中,我必须执行以下操作:
使脚本可执行
~$chmod+x脚本.py
必须为本地主机启用X ACL才能连接到GUI应用程序才能工作
~$xhost+本地:
在crontab“env DISPLAY=:0.0”中添加以下行
*****env DISPLAY=:0.0/usr/bin/python/your-script-somewhere.py
还有一行到crontab“>;/dev/null 2>;&1”
*****环境显示=:0.0/usr/bin/python/your-script-somewhere.py>;/dev/null 2>;&1
您可以检查/var/log/syslog文件中的错误
~$tail-20/var/log/syslog
更多信息:
https://help.ubuntu.com/community/CronHowto
我使用crontab运行bash文件
30 12**1,2,3,4,5/主页/爱德华/SSF/SW/EODWD.sh
在termanal中——使用crontab-e
bash文件执行任意数量的其他程序
/home/edward/SSF/SW/EODWD.py>;>主页/edward/Desktop/eodmail.log 等等
此示例还将EODWD.py中的所有打印语句自动发送到日志文件
wait语句在执行下一个命令之前强制执行competition
只有当两个文件都可执行时,此操作才有效
相关问题 更多 >
编程相关推荐