将 Cronjob 输出重定向到正在运行的屏幕会话?

将 Cronjob 输出重定向到正在运行的屏幕会话?

是否可以启动一个屏幕会话,设置一个 cronjob,并将 cronjob 的输出重定向到屏幕会话?跟踪程序的输出会很棒 ;-)

问候....

答案1

您可以使用tty该屏幕中的命令来找到其 tty 的路径(应该类似于/dev/pts/12),然后在 crontab 中将所有输出重定向到该路径,就好像它是一个文件一样。

像这样:

1 2 3 4 5 myapp &> /dev/pts/14

答案2

grawity 提供了一种很好的方法,但问题是每次重新启动屏幕/服务器时,tty 都会改变。
您可以像 一样对 write(1) 命令执行管道操作| write user。这将向用户“user”发送一条消息,您只需要在屏幕上打开一个窗口,让此用户查看输出,但write会在 stdout 值之前添加一些消息。

答案3

为什么不直接在 cronjob 中启动屏幕,然后启动您想要在其中运行的任何程序? screen -d -m <command to run>应该可以解决问题。

答案4

正如 radius 所提到的,没有办法确定您的屏幕会话在任何给定时刻将使用哪个 tty 或 ttys......或者甚至在屏幕上可能打开的许多伪 tty 中的哪一个是您实际想要发送输出的。

最好的办法是将 cron 作业的输出(stdout 和 stderr)重定向到一个文件,然后在屏幕内对其运行“tail -f”或“tail -F”。这样可以为您提供永久的日志文件以及实时查看的能力。

或者,根本不重定向输出,只是等待作业完成 - 然后所有输出将邮寄给作业的所有者。

相关内容