write 命令
基本介绍
write是 Linux 系统中用于向其他用户终端发送消息的命令。它允许用户与同一系统上的其他登录用户进行实时通信。write是系统用户之间进行即时通讯的工具。
资料合集:https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a
语法
write USERNAME [TTY]使用示例
1. 向指定用户发送消息
writeusername输入示例:
Hello! How are you? This is a test message.结束输入:
按Ctrl+D结束消息输入。
2. 向指定终端发送消息
writeusername pts/03. 发送单行消息
echo"Hello from write command"|writeusername4. 向多个用户发送消息
# 向用户组发送消息使用 wall 命令wall"Hello everyone!"5. 在脚本中使用 write
#!/bin/bash# 检查用户是否登录ifwho|grep-q"^username ";thenecho"User is logged in"echo"System maintenance in 10 minutes"|writeusernameelseecho"User is not logged in"fi6. 发送文件内容
catmessage.txt|writeusername输出格式说明
接收方看到的消息
Message from sender@hostname on pts/0 at 10:00 ... Hello! How are you? This is a test message. EOF错误输出示例
write: user 'invalid_user' is not logged in write: permission denied write: no tty specified工作原理
write 执行流程
# 1. 用户执行 write 命令writeusername# 2. 检查目标用户是否登录# 3. 检查目标用户是否允许消息(mesg 设置)# 4. 读取用户输入# 5. 发送消息到目标用户终端相关文件
| 文件 | 说明 |
|---|---|
/var/run/utmp | 当前登录用户信息 |
/dev/tty* | 终端设备文件 |
实用技巧
检查用户是否可以接收消息
#!/bin/bashUSERNAME="john"# 检查用户是否登录ifwho|grep-q"^$USERNAME";then# 获取用户终端TTY=$(who|grep"^$USERNAME"|awk'{print $2}')# 检查终端权限PERM=$(ls-l/dev/$TTY|cut-c8)if["$PERM"="w"];thenecho"$USERNAMEcan receive messages"elseecho"$USERNAMEhas disabled messages"fielseecho"$USERNAMEis not logged in"fi发送定时提醒
#!/bin/bash# 发送提醒消息send_reminder(){localuser=$1localmessage=$2ifwho|grep-q"^$user";thenecho"$message"|write"$user"echo"Reminder sent to$user"elseecho"$useris not logged in"fi}# 使用示例send_reminder"john""Don't forget the meeting at 3 PM!"批量发送消息
#!/bin/bash# 向所有登录用户发送消息MESSAGE="System will restart in 5 minutes for maintenance."foruserin$(users);doecho"Sending message to$user"echo"$MESSAGE"|write"$user"2>/dev/null||truedone相关命令
mesg:控制终端消息权限wall:向所有用户发送消息talk:与其他用户进行对话users:显示当前登录用户who:显示当前登录用户w:显示当前登录用户及其活动
注意事项
- 目标用户:目标用户必须已登录
- 消息权限:目标用户必须允许消息(mesg y)
- 终端指定:如果用户登录多个终端,可能需要指定终端
- root 用户:root 用户可以向任何用户发送消息
- 结束输入:按
Ctrl+D结束消息输入
总结
write是 Linux 系统中用于向其他用户终端发送消息的工具。它允许用户与同一系统上的其他登录用户进行实时通信。write是系统用户之间进行即时通讯的工具。