在根incron作业中使用Zenity向当前登录的用户显示消息

时间:2014-05-16 23:56:55

标签: cron zenity incron

使用脚本自动上载放在目录中的文件,然后向当前登录的用户显示指向它们的链接。该机器的用户将通过LDAP进行身份验证。

incron正在监视的目录位于任何用户目录之外,并且符号链接到每个用户的/ home / username / uploads目录。当用户在此处放置文件时,它会自动上传而不会出现问题。

我遇到问题的地方是向当前用户显示文件URL。这是相关的代码:

来自/ var / spool / incron / root

/home/public/uploads IN_CLOSE_WRITE /home/public/upload_files.sh > /dev/null 2>&1

/home/public/upload_files.sh中关于Zenity显示的行:

DISPLAY="$(ck-list-sessions | grep "active = TRUE" -A1 | tail -n 1 | cut -f2 -d"'").0"
zenity --info --text="http://aniceurlhere.com/`date +%m.%d.%y`/$filename" --display=$DISPLAY

如上所述,上传完成,但Zenity消息永远不会显示。通过/ var / log / cron,我可以看到作业运行并完成,并且没有显示错误。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

如果您想使用zenity或notify-send,这需要一些努力。我还没有让它工作但我只是使用了xmessage:

简易选项1:xmessage(在脚本中)

MSSG="/tmp/mssg-file-${RANDOM}" 
echo -e " MESSAGE \n ==========\n Done with task, YEY. " > ${MSSG}
xmessage -center -file ${MSSG} -display :0.0 
[[ -s ${MSSG} ]] && rm -f ${MSSG}

简易选项2:设置DISPLAY(然后应该工作)

    export DISPLAY=:0 && /usr/bin/somedirectory/somecommand