- 文档
- 教程
【免费下载链接】linux-command
Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux
本文基于 write 命令手册 展开,讲解 Linux 中通过
write命令向指定登录用户终端发送信息的完整用法,并结合本仓库中 mesg、wall、who、talk 等相关命令文档,梳理从消息发送、终端定位到权限控制的完整链路。读完本文,你将掌握如何定位目标用户的登录终端、向单个终端实时发送文本消息,以及如何配合mesg机制管理与控制消息接收。
一、write 命令是什么
write命令用于向指定登录用户终端上发送信息。它属于 Linux 经典的即时文本消息工具(util-linux 等基础软件包自带),其工作方式是:发送方在本机终端输入内容,write将内容逐行实时传递给对方登录终端并显示在对方屏幕上。
它与wall的最大区别在于作用范围:
write:点对点,只发给指定的某一个登录用户(可精确到某个终端);- wall 命令:广播,向系统当前所有打开的终端输出信息。
两者结合使用,前者用于精准沟通(如运维提醒某个正在登录的同事),后者用于系统级通告(如即将重启、维护通知)。
二、语法与参数
write(参数)| 参数 | 说明 |
|---|---|
| 用户 | 指定要接收信息的登录用户,必填 |
| 登陆终端 | 指定接收信息的用户的登录终端(可选) |
核心规则:如果接收信息的用户不只登入本地主机一次(即有多个登录终端会话),就必须通过第二个参数指定接收信息的终端机编号,否则无法确定把消息发给哪一个终端。
三、实战用法
3.1 向单个登录用户发送消息
当目标用户Rollaend在本机只有一个登录会话(一条连线)时,直接指定用户名即可:
write Rollaend执行后进入消息输入模式,接下来将信息打上去,输入完毕按下Ctrl+D(EOF)结束输入,write命令就会将信息传给对方;也可以按Ctrl+C中断发送。
3.2 向指定终端发送消息(多会话场景)
当用户Rollaend有多个登录会话,例如同时开着pts/2、pts/3两个终端时,必须指定终端,否则系统无法确定发送目标:
write Rollaend pts/2同样地,输入完成后按Ctrl+D结束发送。
3.3 先确认目标用户与终端
在发送之前,建议先用相关命令确认目标用户当前是否在线、以及其登录终端编号:
- who 命令:列出所有已登录用户的名称、终端(LINE)、登录时间和来源主机,例如:
[root@localhost ~]# who root pts/0 2013-08-19 15:04 (192.168.0.134) root pts/1 2013-12-20 10:37 (180.111.155.40)- tty 命令:显示当前终端对应的设备文件名,可用于确认自己所在的终端,例如
/dev/pts/2。 - users 命令:打印当前主机所有登录用户的名称(同名多次出现表示多个会话)。
结合这三个命令,可以精准确认「谁在线、在哪个终端、目标是否多会话」,再决定是否需要携带终端参数。
四、与 mesg 权限机制的联动:为什么消息会发送失败
文档中特别强调:若对方设定mesg n,则此时信息将无法传给对方。
mesg命令用于设置当前终端的写权限,即是否允许其他用户通过write将信息直接显示在你的屏幕上,参见 mesg 命令:
mesg y # 允许系统用户将信息直接显示在你的屏幕上 mesg n # 不允许系统用户将信息直接显示在你的屏幕上这一权限机制正是write能否送达消息的前提。工作流程如下:
- 发送方执行
write 用户名 [终端]; - 内核依据目标终端的写权限(mesg 状态)决定是否放行;
- 若目标设置了
mesg n,发送方会收到类似write: 用户 is not logged in / 没有权限之类的拒绝提示,消息无法送达; - 若目标为
mesg y(多数终端默认开启),消息才会实时显示在对方屏幕上。
所以,在多用户服务器上,"发消息前先确认对方mesg状态" 是必要的排查步骤。同时who -T(或who -w)可以直接显示每个用户的消息状态,+表示允许写入、-表示禁止写入、?表示无法查找到终端设备,参见 who 命令 中的相关选项说明。
如果目标用户在做紧急工作(如编辑邮件)时不希望被消息打搅,可以执行mesg n暂时拒绝接收;完成紧急工作后建议立即执行mesg y重新打开接收开关,避免错过重要信息——这一交互逻辑在 talk 命令 文档中也有同样的体现(mesg n后对方会收到[Your party is refusing messages]提示)。
五、write 与同类即时消息命令的对比
| 命令 | 发送范围 | 交互方式 | 典型场景 | 参考文档 |
|---|---|---|---|---|
write | 指定单个用户的指定终端 | 单向逐行发送,实时显示在对方屏幕 | 运维与在线用户一对一沟通 | write |
wall | 系统所有打开的终端 | 单向广播 | 维护、重启等系统级通告 | wall |
talk | 指定用户(可跨主机) | 双向实时聊天,屏幕上下分屏 | 需要双向回应的即时交谈 | talk |
三者均受mesg终端写权限约束,这也是 Linux 传统终端即时通信体系(write/wall/talk)共同依赖的权限模型。
六、注意事项与常见问题
- 消息结束方式:输入完毕后按Ctrl+D(EOF)表示信息结束,
write随即把信息传给对方;按Ctrl+C则中断发送。 - 多终端必须指定终端:目标用户有多条登录会话时,不带终端参数会导致发送失败或目标不明确,务必先用
who确认终端编号。 - 权限拦截:对方设置
mesg n时消息无法送达,可提示对方先执行mesg y。 - 发送范围限制:
write是单机终端工具,消息只能发送到本机登录的终端;跨主机通信应使用 talk(支持talk 用户名@主机形式)或其他远程通信手段。 - 内容实时性:
write逐行传送输入内容,对方屏幕实时刷新,适合简短提醒,不适合发送超长文本。
小结
write命令是 Linux 终端点对点即时消息的基础工具:通过「用户 + 可选终端」精确定位接收方,配合Ctrl+D结束输入完成发送,其能否送达取决于目标终端的mesg写权限。实际运维中,建议与 who、tty 组合确认在线用户与终端编号,与 mesg 协同管理接收开关,并区分 wall(广播)与 talk(双向聊天)的适用场景,即可把 Linux 终端的即时通信体系用得规范、可控。
- 文档
- 教程
【免费下载链接】linux-command
Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux
相关推荐
Linux wall 命令详解:向所有终端广播系统消息的运维实战指南
Linux wall 命令详解:向所有终端广播系统消息的运维实战指南 wall(write all)命令 是 Linux 系统中向所有已登录用户的终端屏幕广播文
文档教程linux-command 之 who 命令详解:查看当前登录用户与登录历史
linux command 之 who 命令详解:查看当前登录用户与登录历史 who 是 GNU coreutils 提供的基础系统管理命令,用于显示当前所有登
文档教程rclone config userinfo 命令详解:查看云端存储当前登录用户信息
rclone config userinfo 命令详解:查看云端存储当前登录用户信息 rclone config userinfo remote: 用于向指定的
CLI数据同步对象存储
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考