如何获取所有活动终端

在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系统如何实现IP地址映射?

    在Linux系统中,IP映射通常指将一个IP地址或端口与另一个IP地址或端口建立关联,实现网络流量的转发、负载均衡或虚拟化服务访问,常见的映射类型包括端口转发(DNAT/SNAT)、虚拟IP绑定(VIP)以及NAT地址转换等,广泛应用于服务器内网穿透、多服务端口共享、高可用集群等场景,以下从原理、工具和配置步骤……

    2025年9月23日
    9900
  • 如何退出Linux提示符

    遇到特定提示符时,通常表示处于GRUB菜单、固件界面或自定义Shell,按Esc键是常见退出方法,具体操作因环境而异。

    2025年7月14日
    15000
  • Linux下如何使用ping命令?网络连通性检测方法详解

    Linux下的ping命令是一个常用的网络诊断工具,基于ICMP(互联网控制报文协议)工作,主要用于测试本地主机与目标主机之间的网络连通性、延迟和丢包情况,通过发送ICMP回显请求报文并接收目标主机的回显应答,用户可以直观了解网络状态,以下是ping命令的详细使用方法和相关技巧,ping命令的基本语法ping命……

    2025年10月4日
    9600
  • Linux系统下硬盘故障如何修复数据并保证系统稳定?

    Linux系统如何修复硬盘硬盘作为数据存储的核心设备,其稳定性直接关系到系统安全和数据完整性,在Linux系统中,由于长期运行、意外断电或硬件老化,硬盘可能出现文件系统错误、坏道、分区表损坏等问题,本文将详细介绍Linux系统下硬盘修复的常见场景、操作步骤及注意事项,帮助用户高效解决硬盘故障,保障数据安全,常见……

    2025年9月10日
    9500
  • Linux如何做端口映射?服务器内网外网访问具体配置方法详解

    在Linux系统中,端口映射是将网络请求从一个IP地址和端口转发到另一个IP地址和端口的技术,常用于内网服务暴露、跨网络访问、负载均衡等场景,本文将详细介绍Linux下端口映射的常用方法,包括原理、操作步骤及注意事项,使用iptables进行端口映射iptables是Linux内核的经典防火墙工具,通过NAT……

    2025年9月10日
    9600

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信