程序可以通知自己任何打开的 shell 吗?

程序可以通知自己任何打开的 shell 吗?

我正计划编写 CLI 程序。该 CLI 程序应该能够在预定时间运行。

该程序是否有可能以某种方式通知用户的 shell?有点像mail告诉您您有未读邮件?

答案1

答案2

实施邮件检查在各种贝壳中。您可能不希望在用户可能使用的 shell 中添加额外的检查。要进行类似的检查,最简单的方法是实现一个工具,该工具在应显示通知时生成适当的输出,并从用户的 shell 启动脚本运行该工具。

这方面有很多例子;如果您检查您的系统/etc/profile.d,您可能会发现类似的工具可以用作灵感。例如,在具有abrt(RHEL 等)的系统上,您会发现一个脚本,该脚本在用户登录时abrt-console-notification.sh显示的状态。abrt

答案3

write user尝试在您的 cron 作业中进行操作。就像放一个

x y z * * write user%message%

进入你的crontab.

但请注意:该用户必须登录才能收到通知。 GUI 下的简单终端会话不会。

如果使用(最近的)bash或类似的 shell,请PROMPT_COMMAND使用任意文件进行设置,例如

PROMPT_COMMAND='[ -f /tmp/msg ] && cat /tmp/msg && rm /tmp/msg'

并有一个crontab像这样的条目

x y z * * echo message > /tmp/msg

将在下一个提示之前显示一次“消息”。

相关内容