如何获取所有活动终端

在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系统中,安装中文语言包主要是为了解决终端显示乱码、图形界面(GUI)中文支持缺失、应用程序中文界面无法显示等问题,不同Linux发行版的包管理器和语言包命名规则有所不同,以下是针对主流发行版的详细安装步骤及注意事项,Ubuntu/Debian系列安装中文语言包Ubuntu和Debian基于Debia……

    2025年9月24日
    1700
  • 如何关闭运行中的虚拟机?,虚拟机还在运行中如何关闭?,关闭虚拟机卡顿怎么办?,运行中的虚拟机如何关闭?,关闭虚拟机前需注意什么?

    在Linux系统中删除虚拟机需要根据使用的虚拟化平台(如VirtualBox、KVM或VMware)选择对应方法,以下是详细操作指南,操作前务必备份虚拟机内重要数据:通用注意事项关闭虚拟机:执行删除前,确保目标虚拟机已完全关闭(非休眠状态),命令行检查:virsh list –all(KVM)或 VBoxMa……

    2025年8月9日
    3000
  • 如何查找安装包 linux

    Linux中查找安装包,可使用命令行工具如apt-cache search(Debian系)

    2025年8月19日
    3400
  • Linux下如何查看静态库中的函数?

    在Linux开发环境中,静态库(.a文件)是多个目标文件(.o文件)的归档集合,常用于封装可复用的代码,查看静态库中的函数信息对于调试、依赖分析或代码审查至关重要,本文将详细介绍Linux下查看静态库函数的多种方法,包括常用工具的使用、符号解析技巧及注意事项,静态库的基本结构静态库由ar工具创建,本质上是归档文……

    2025年8月30日
    3000
  • Linux操作系统中如何删除指定文件之外的所有其他文件呢?

    在Linux系统中,删除文件除了常规的rm命令外,更常见的需求是“删除除特定条件外的所有文件”,即保留符合要求的文件,删除其余文件,这通常需要结合find命令定位目标文件(即要删除的文件),再通过xargs或find自身的删除功能执行操作,以下从不同场景出发,详细说明实现方法及注意事项,按文件名模式保留(删除不……

    2025年9月18日
    2500

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信