crontab启动图形程序的问题

OOo,TeX,KO,ABI,GIMP,Picasa,ProE,QCAD,Inkscape,Kicad,Eagle
回复
头像
yjcong
帖子: 2470
注册时间: 2006-02-28 3:11

crontab启动图形程序的问题

#1

帖子 yjcong » 2008-05-24 10:56

因为不知道该贴到哪, 就放到这来了
-------------------------------
在我的系统上, 用crontab可以正常的启动非图形界面的命令, 比如
________________________________________
11 * * * * /usr/bin/mplayer /home/name/abc.mp3
----------------------------------------
每个小时的11分, 就会从音响里传出abc.mp3的声音。

但是, 如果是和图形界面相关的命令, 都运行不了。
________________________________________
11 * * * * /usr/bin/xmms /home/name/abc.mp3
----------------------------------------
没有任何反应。 即使加上DISPLAY=:0 &&, 也无济于事
________________________________________
11 * * * * export DISPLAY=:0 && /usr/bin/xmms /home/name/abc.mp3
----------------------------------------

在论坛里搜索到的帖子, 用最后一个方法都可以启动程序, 可是为什么我这里就不行啦?????

那位牛人帮我看看, 先谢了
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

#2

帖子 roylez » 2008-05-24 20:44

crontab没有被注释的第一行

代码: 全选

DISPLAY=:0.0
头像
yjcong
帖子: 2470
注册时间: 2006-02-28 3:11

#3

帖子 yjcong » 2008-05-25 5:07

谢谢LS,

但是我还是没搞出来。 我分别试了下面的几种方法, 都不能启动图形界面

代码: 全选

DISPLAY=:0.0
11 * * * * export DISPLAY ;/usr/bin/xmms
12 * * * * export DISPLAY && /usr/bin/xmms
13 * * * * (export DISPLAY ; /usr/bin/xmms)
14 * * * * (export DISPLAY && /usr/bin/xmms)
15 * * * * export DISPLAY  /usr/bin/xmms
16 * * * * /usr/bin/xmms
17 * * * * (export DISPLAY ; /usr/bin/xmms)
18 * * * * DISPLAY=:0.0;export DISPLAY; /usr/bin/xmms
19 * * * * (DISPLAY=:0.0;export DISPLAY; /usr/bin/xmms)

代码: 全选

DISPLAY=:0.0
11 * * * * export DISPLAY=:0 &&/usr/bin/xmms
12 * * * * export DISPLAY=:0.0 && /usr/bin/xmms
13 * * * * (export DISPLAY=:0 && /usr/bin/xmms)
14 * * * * (export DISPLAY=:0.0 && /usr/bin/xmms)
15 * * * * DISPLAY=:0.0;export DISPLAY&& /usr/bin/xmms
16 * * * * (DISPLAY=:0.0;export DISPLAY&& /usr/bin/xmms)

代码: 全选

11 * * * * DISPLAY=:0.0 && export DISPLAY && /usr/bin/xmms
12 * * * * DISPLAY=:0.0 ; export DISPLAY ; /usr/bin/xmms
13 * * * * (DISPLAY=:0.0 && export DISPLAY && /usr/bin/xmms)
14 * * * * (DISPLAY=:0.0 ; export DISPLAY ; /usr/bin/xmms)
15 * * * /usr/bin/xmms -display 127.0.0.1:0.0 
上次由 yjcong 在 2008-05-25 21:18,总共编辑 1 次。
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

#4

帖子 roylez » 2008-05-25 7:56

在命令行里面,输入

echo $DISPLAY

看看这个环境变量到底是什么值。
头像
yjcong
帖子: 2470
注册时间: 2006-02-28 3:11

#5

帖子 yjcong » 2008-05-25 18:43

roylez 写了:在命令行里面,输入

echo $DISPLAY

看看这个环境变量到底是什么值。
回LZ,是 :0.0
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#6

帖子 BigSnake.NET » 2008-05-25 18:54

crontab 不建议写太多东西, 建议用一个脚本启动

在 X 下开一个终端

代码: 全选

echo '#!/bin/bash -e' >> startxmms.sh
# 将链接当前X需要的变量放进去
export >> startxmms.sh
# 启动程序
echo '/usr/bin/xmms /home/name/abc.mp3 &' >> startxmms.sh
chmod +x startxmms.sh
然后用cron定时启动这个script
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
yjcong
帖子: 2470
注册时间: 2006-02-28 3:11

#7

帖子 yjcong » 2008-05-25 19:44

谢谢LS,你写的命令在我的机器上生成如下的startxmms.sh

代码: 全选

#!/bin/bash -e
declare -x COLORTERM="Terminal"
declare -x DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-rO3jJzcf7b,guid=ff9b4347655e3fb35732390048393a3d"
declare -x DESKTOP_SESSION="IceWM"
declare -x DISPLAY=":0.0"
declare -x GDMSESSION="IceWM"
declare -x GDM_LANG="zh_CN.UTF-8"
declare -x GDM_XSERVER_LOCATION="local"
declare -x GTK_IM_MODULE="scim"
declare -x HISTCONTROL="ignoreboth"
declare -x HOME="/home/name"
declare -x LANG="zh_CN.UTF-8"
declare -x LANGUAGE="zh_CN.UTF-8"
declare -x LESSCLOSE="/usr/bin/lesspipe %s %s"
declare -x LESSOPEN="| /usr/bin/lesspipe %s"
declare -x LOGNAME="name"
declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.flac=01;35:*.mp3=01;35:*.mpc=01;35:*.ogg=01;35:*.wav=01;35:"
declare -x OLDPWD
declare -x PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
declare -x PWD="/home/name"
declare -x QT_IM_MODULE="scim"
declare -x SHELL="/bin/bash"
declare -x SHLVL="1"
declare -x SSH_AGENT_PID="4910"
declare -x SSH_AUTH_SOCK="/tmp/ssh-MWYSQl4865/agent.4865"
declare -x TERM="xterm"
declare -x USER="name"
declare -x USERNAME="name"
declare -x WINDOWID="16777817"
declare -x XAUTHORITY="/tmp/.gdmHYQOBU"
declare -x XMODIFIERS="@im=SCIM"
/usr/bin/xmms /homg/name/abc.mp3&
然后我用crontab -e
11 * * * * /home/name/startxmms.sh

可是还是没有xmms启动啊。
上次由 yjcong 在 2008-05-25 21:19,总共编辑 1 次。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#8

帖子 BigSnake.NET » 2008-05-25 19:48

你试试在 Ctrl-Alt-F1 控制台下登录运行这个脚本 ( 保持X开着 )
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

#9

帖子 roylez » 2008-05-25 20:41

yjcong 写了:
roylez 写了:在命令行里面,输入

echo $DISPLAY

看看这个环境变量到底是什么值。
回LZ,是 :0.0
还有个比较间接的办法看出错的信息:

你先装个发信的软件,例如sendmail/postfix/esmtp,不用配置,只要装完之后确定有/usr/bin/sendmail文件存在就行。然后cron里面的任务执行的时候,如果有命令行输出,会自动给你发邮件,位置当然是到/var/spool/mail/username下。你在时间到了之后,查看下新邮件里面的错误信息就可以确定问题了。
头像
yjcong
帖子: 2470
注册时间: 2006-02-28 3:11

#10

帖子 yjcong » 2008-05-25 20:50

控制台下同样是启动不了, 没有任何错误提示
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

#11

帖子 roylez » 2008-05-25 20:55

命令行直接启动xmms也不行?那估计没治了。。
头像
adagio
论坛版主
帖子: 22110
注册时间: 2008-02-17 23:47
来自: 美丽富饶的那啥星球

#12

帖子 adagio » 2008-05-25 21:08

yjcong 写了:谢谢LZ
楼主谢LZ :?:
第一次见到对自己这么客气的耶 :lol:
明天就换大三八!
——8核CPU、8G内存、8T硬盘……
8卡交火,80寸大屏放8个……
IPv8的光纤要8条……

---------------------------------------------------------------------------------
[图片版]新手当自强(续)FAQ
[新手进阶]挂载、fstab、调整linux分区
[图片版]E17桌面环境配置手把手
头像
yjcong
帖子: 2470
注册时间: 2006-02-28 3:11

#13

帖子 yjcong » 2008-05-25 21:17

adagio 写了:
yjcong 写了:谢谢LZ
楼主谢LZ :?:
第一次见到对自己这么客气的耶 :lol:
是失误, 应为LS
头像
yjcong
帖子: 2470
注册时间: 2006-02-28 3:11

#14

帖子 yjcong » 2008-05-27 9:43

roylez 写了:
yjcong 写了:
roylez 写了:在命令行里面,输入

echo $DISPLAY

看看这个环境变量到底是什么值。
回LZ,是 :0.0
还有个比较间接的办法看出错的信息:

你先装个发信的软件,例如sendmail/postfix/esmtp,不用配置,只要装完之后确定有/usr/bin/sendmail文件存在就行。然后cron里面的任务执行的时候,如果有命令行输出,会自动给你发邮件,位置当然是到/var/spool/mail/username下。你在时间到了之后,查看下新邮件里面的错误信息就可以确定问题了。
命令行下直接用命令是可以启动的。 安你的方法, 我到/var/spool/mail/里看了, 出了

代码: 全选

# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (try installed on Tue May 27 03:34:19 2008)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
就是crontab -l显示的东西了。 我没找到任何提示错误的信息。
回复