write
允许向连接的用户终端发送消息。
$ echo "hello budy" | write budy
当消息干扰终端操作时,这会变得非常烦人。彻底的解决方案包括阻止所有传入消息。
是否有中间解决方案可以将消息转储到文件而不干扰终端?
答案1
你可能会嘲笑罗艾玛的评论,但我完全同意他的观点。
垃圾邮件发送者放在一边,即使有人write
出于善意试图向您发送某些内容,该消息也可能会中断您的工作流程并损坏您的显示(正如您在原始帖子中所说),或者甚至可能完全被忽视(例如,如果您正在运行的实用程序)正在产生大量输出,或者如果您在文本编辑器中滚动等)(发件人也不会知道您错过了该消息)。
write
/mesg
是近 50 年前的遗留物,反映了那个时代最先进的用户体验。在我看来,它们在当今世界没有立足之地,供应商应该停止提供这些工具(即阻止写入其他人的 tty 的可能性)。
禁用向您的终端发送消息,并要求您的朋友通过其他渠道与您联系。电子邮件、即时消息/聊天软件、电话、短信,应有尽有。 (我是认真的,不是讽刺。)
现在,从技术上讲,可以编写一个实用程序来获取 tty 线路,设置其权限以允许消息,注册 utmp 记录,然后每当收到消息时将其转储到文件中。我不知道有任何这样的实用程序存在,但编写一个应该不难。据称(正如我曾经听说过的那样,我还没有验证过)曾经有一个 KDE 实用程序可以执行此操作,然后将消息显示为图形弹出窗口。
附注:
您的问题涉及“连接的用户”,因此我假设在您的用例中,人们通过 ssh 连接到某个服务器(可能在大学校园左右)。一个类似有趣的问题是mesg
/write
在图形会话和图形终端模拟器中。
为了mesg
/write
为了工作,utmp
需要注册一个记录。然而,utmp
应该包含登录信息,终端仿真器是不是你所在的地方登录到系统。
许多终端仿真器确实执行utmp
日志记录,而许多其他仿真器则不执行日志记录。我想世界正在变得越来越少这样做,因为最近出现了许多新的终端模拟器,我怀疑他们是否添加了这个旧功能。还,gnome-terminal
删除了 utmp 日志记录大约 7 年前(如果你感兴趣的话,你可以在那里阅读更多赞成和反对的论点,包括我阐述的观点)。