您好我想在终端中显示shell脚本的输出,我该怎么做呢,例如 脚本名称showservices.sh包含以下文本
#!/bin/bash ps -ef
这将显示正在运行的进程。现在我有一个名为firstcron.txt的文件,代码在
下面* * * * * export DISPLAY=:0; $home/dilip/crontest/showservices.sh
现在把它放在下面的cron中
crontab firstcron.txt
但是它无法在终端中显示脚本的输出。请帮帮我怎样才能做到这一点
答案 0 :(得分:1)
cron
独立于X11,因此无法保证在执行cron
作业时X11服务器正在运行。也不能保证不会有多个X11服务器。即使X11正在运行,也无法保证您要与之通话的用户已登录,或者多次登录,可能在多台X11服务器上。换句话说,没有从cron
到配置作业的用户的终端的直接映射。此外,cron
作业缺少连接到正在运行的X11会话的权限,因为这就是X11的设计方式。
需要此类行为的典型设计是客户端/服务器模型。 cron
作业生成服务器进程提供的数据。然后,用户将客户端设置为在连接到所需服务的X11会话上与服务器通信。客户端进程在现有的X11会话中运行,因此它具有打开新窗口并向用户显示信息所需的凭据。
对于您的简单要求,正如评论中所建议的那样,您的cron
作业可能只是覆盖特定文件,并且用户可以拥有监控该文件的进程。这是最简单的可以想象的IPC形式。
大多数人都会对单xterm -e tail --follow=name /path/to/file
感到满意,但如果你真的希望窗户在你面前跳起来,而你正处于更重要的事情中,那就试试吧。
#!/bin/sh
oldmd5=$(md5sum /path/to/file)
while true; do
newmd5=$(md5sum /path/to/file)
case $newmd5 in
$oldmd5) ;;
*) xterm -e less /path/to/file & oldmd5=newmd5 ;;
esac
sleep 60
done
从您的.xsession
或类似内容中运行此内容。
警告:您需要在此处使用某种手刹,或者在周末之后返回时,桌面上可能会有3,000多个xterm
窗口。