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. 向指定用户发送消息
write username
输入示例:
Hello! How are you?
This is a test message.
结束输入:
按 Ctrl+D 结束消息输入。
2. 向指定终端发送消息
write username pts/0
3. 发送单行消息
echo "Hello from write command" | write username
4. 向多个用户发送消息
# 向用户组发送消息使用 wall 命令
wall "Hello everyone!"
5. 在脚本中使用 write
#!/bin/bash
# 检查用户是否登录
if who | grep -q "^username "; then
echo "User is logged in"
echo "System maintenance in 10 minutes" | write username
else
echo "User is not logged in"
fi
6. 发送文件内容
cat message.txt | write username
输出格式说明
接收方看到的消息
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 命令
write username
# 2. 检查目标用户是否登录
# 3. 检查目标用户是否允许消息(mesg 设置)
# 4. 读取用户输入
# 5. 发送消息到目标用户终端
相关文件
| 文件 | 说明 |
|---|---|
/var/run/utmp | 当前登录用户信息 |
/dev/tty* | 终端设备文件 |
实用技巧
检查用户是否可以接收消息
#!/bin/bash
USERNAME="john"
# 检查用户是否登录
if who | grep -q "^$USERNAME "; then
# 获取用户终端
TTY=$(who | grep "^$USERNAME " | awk '{print $2}')
# 检查终端权限
PERM=$(ls -l /dev/$TTY | cut -c 8)
if [ "$PERM" = "w" ]; then
echo "$USERNAME can receive messages"
else
echo "$USERNAME has disabled messages"
fi
else
echo "$USERNAME is not logged in"
fi
发送定时提醒
#!/bin/bash
# 发送提醒消息
send_reminder() {
local user=$1
local message=$2
if who | grep -q "^$user "; then
echo "$message" | write "$user"
echo "Reminder sent to $user"
else
echo "$user is 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."
for user in $(users); do
echo "Sending message to $user"
echo "$MESSAGE" | write "$user" 2>/dev/null || true
done
相关命令
mesg:控制终端消息权限wall:向所有用户发送消息talk:与其他用户进行对话users:显示当前登录用户who:显示当前登录用户w:显示当前登录用户及其活动
注意事项
- 目标用户:目标用户必须已登录
- 消息权限:目标用户必须允许消息(mesg y)
- 终端指定:如果用户登录多个终端,可能需要指定终端
- root 用户:root 用户可以向任何用户发送消息
- 结束输入:按
Ctrl+D结束消息输入
总结
write 是 Linux 系统中用于向其他用户终端发送消息的工具。它允许用户与同一系统上的其他登录用户进行实时通信。write 是系统用户之间进行即时通讯的工具。

677

被折叠的 条评论
为什么被折叠?



