如何获取所有活动终端

在Linux系统中,向所有已登录用户发送消息是系统管理员进行维护通知、紧急警报或批量操作的常见需求,以下是几种可靠且高效的方法,适用于大多数Linux发行版(如Ubuntu、CentOS、Debian等),注意:这些方法仅对当前已登录且有活动终端的用户生效,未登录用户无法接收消息。


方法1:使用 wall 命令(推荐)

wall(Write All)是专为广播消息设计的命令,所有登录用户会即时收到通知。

操作步骤:

  1. 打开终端,输入以下命令(需管理员权限):
    sudo wall
  2. 输入消息内容(支持多行),按 Ctrl+D 结束输入:
    紧急维护通知:
    系统将于10分钟后重启,请保存工作!
    [按 Ctrl+D 发送]
    • 效果:所有用户的终端会显示类似提示:
      Broadcast message from admin@server (pts/0) at 15:30 ...
      紧急维护通知:
      系统将于10分钟后重启,请保存工作!

权限说明

  • 普通用户可向同一用户组的登录终端发送消息。
  • 所有用户发送需 sudoroot 权限。

方法2:遍历 /dev/pts 写入消息

通过直接向用户终端设备文件写入消息(需 root 权限)。

操作步骤:

  echo "【通知】磁盘空间不足,请清理文件!" > /dev/pts/$pts
done
  • 原理/dev/pts/ 目录存储所有登录终端的虚拟设备文件(如 SSH、本地终端)。
  • 风险:若终端号不连续(如 pts/1pts/3),需过滤有效终端:
    for pts in $(w -h | awk '{print $2}'); do
      echo "消息内容" > /dev/$pts
    done

方法3:结合 write 命令批量发送

write 命令可向指定用户发送消息,结合 w 命令实现批量操作。

操作步骤:

# 获取所有登录用户列表
for user in $(w -h | awk '{print $1}' | sort -u); do
  echo "请及时更新密码!" | sudo write $user
done
  • 效果:每个用户会收到独立消息:
    Message from root@server on pts/0 at 15:40 ...
    请及时更新密码!

⚠️ 注意事项与常见问题

  1. 权限要求
    • wall/dev/pts 写入需 root 权限。
    • write 命令允许用户间通信,但向其他用户发送需权限(可通过 mesg y 开启接收)。
  2. 未登录用户:无主动通知机制,需通过邮件或计划任务补充。
  3. 图形界面用户:消息会显示在终端,若用户未打开终端则无法接收。
  4. 安全性:避免滥用广播功能,可能干扰用户工作。

总结建议

方法 适用场景 优势
wall 紧急通知、全体广播 简单直接,系统原生支持
写入 /dev/pts 脚本自动化场景 灵活控制终端
write 批量 需区分用户的定向消息 支持个性化通知

推荐实践

  • 日常广播优先用 sudo wall
  • 脚本中批量操作用 /dev/pts 遍历。
  • 需记录消息日志时,可结合 logger 命令(如 logger -t BROADCAST "消息")。

引用说明基于 Linux 内核文档(kernel.org)、wall 命令手册页(man 1 wall)及 UNIX 标准通信协议(IEEE Std 1003.1),实践环境为 Ubuntu 22.04 LTS 和 CentOS 7。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6394.html

(0)
酷番叔酷番叔
上一篇 2025年7月6日 05:39
下一篇 2025年7月6日 06:02

相关推荐

  • linux下 批处理如何运行

    Linux下,可通过编写脚本文件并赋予执行权限来运行批处理任务,也可使用命令

    2025年8月19日
    14900
  • linux英文如何改成中文名

    Linux 系统中,可通过修改相关配置文件或使用命令来将英文界面等改成中文名,具体

    2025年8月15日
    11600
  • 为什么推荐命令行查看?

    在Linux系统中,环境变量是配置操作系统和应用程序行为的关键参数,桌面环境变量(如XDG_CURRENT_DESKTOP、GDMSESSION等)则专门用于管理图形界面(GUI)的显示效果、主题和默认程序,查看这些变量对调试桌面问题、定制个性化环境或开发跨桌面应用至关重要,以下是多种查看方法的详细说明:全局环……

    2025年6月27日
    13400
  • Linux如何查看MySQL是否安装成功?

    在Linux系统中,MySQL安装完成后,需通过多步骤验证安装是否成功,避免因安装不完整或配置错误导致后续使用问题,以下从服务状态、软件包、可执行文件、配置文件、日志、连接测试及版本检查等多个维度,详细说明验证方法,检查MySQL服务状态MySQL安装成功后,其核心服务(如mysqld)需正常运行,不同Linu……

    2025年8月24日
    13900
  • 如何在Linux安装并配置FTP服务器?

    在Linux系统中搭建FTP服务器是许多企业和个人用户的需求,FTP(文件传输协议)用于在客户端和服务器之间进行文件传输,尤其适合需要频繁上传下载文件的场景,本文将以常用的vsftpd(Very Secure FTP Daemon)为例,详细介绍在Linux系统上安装、配置FTP服务器的完整步骤,包括安装软件包……

    2025年9月16日
    13300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信