帮助中心

linux通过终端向登录用户写消息 打印

  • 0
  • linux

在 Linux 中,可以通过终端向已登录的用户发送消息,常用的方法有以下几种:


1. 使用 wall 命令(广播消息)

wall(Write ALL)命令可以向所有已登录用户的终端发送广播消息。

  • 发送消息

    bash
    复制
    sudo wall "系统将在5分钟后重启,请保存工作!"

    或通过输入多行内容(按 Ctrl+D 结束):

    bash
    复制
    sudo wall
    系统维护中,请及时保存工作。
    按 Ctrl+D 结束输入。
  • 所有用户会收到类似以下格式的消息:

     
    复制
    Broadcast message from root@hostname (pts/0) at 10:00 ...
    系统维护中,请及时保存工作。

2. 使用 write 命令(单用户消息)

write 命令可以向特定用户的终端发送消息(需用户允许接收消息)。

  • 语法

    bash
    复制
    write <用户名> [<终端设备>]

    示例:

    bash
    复制
    write alice pts/1

    输入消息后按 Enter,结束时按 Ctrl+C

  • 步骤

    1. 查看当前登录用户及其终端:

      bash
      复制
      who
      # 输出类似:
      # alice    pts/1    2023-10-01 09:00 (192.168.1.10)
      # bob      pts/2    2023-10-01 09:05 (192.168..2)
    2. 向用户 alice 的 pts/1 发送消息:

      bash
      复制
      write alice pts/1
      Hello Alice,请检查日志文件。
    3. 对方终端会显示:

       
      复制
      Message from root@hostname on pts/0 at 10:00 ...
      Hello Alice,请检查日志文件。
      EOF
  • 注意

    • 如果用户禁用了消息(mesg n),需要先允许接收消息(mesg y)。

    • 若未指定终端设备,默认选择用户最早登录的终端。


3. 直接写入终端设备

每个用户的终端对应 /dev/pts/X 文件(X 为终端编号),可直接向其写入消息。

  • 查看用户的终端设备

    bash
    复制
    who
    # 输出示例:
    # alice    pts/1    2023-10-01 09:00 (192.168.1.10)
  • 发送消息

    bash
    复制
    echo "Hello from admin" > /dev/pts/1

    或使用 sudo 避免权限问题:

    bash
    复制
    sudo sh -c 'echo "紧急通知!" > /dev/pts/1'

4. 使用 echo 结合 write(脚本中推荐)

在脚本中批量发送消息时,可以组合命令:

bash
复制
echo "系统即将升级!" | write alice pts/1

注意事项

  1. 权限问题

    • 向其他用户的终端发送消息可能需要 sudo 权限。

    • 用户可通过 mesg y 或 mesg n 允许/禁止接收消息(wall 会绕过此限制)。

  2. 查看用户终端

    • 使用 who 或 w 命令确认用户是否在线及终端设备号。

  3. 避免滥用

    • 频繁发送消息可能干扰其他用户,建议用于重要通知。


总结

  • 广播通知wall(适合全体用户)。

  • 单用户私信write 或直接写入 /dev/pts/X

  • 脚本自动化echo 结合终端设备路径。

这篇文章有帮助吗?
« 返回