如何获取所有活动终端

在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是服务器管理、容器部署及网络服务稳定运行的基础操作,尤其对于需要长期提供服务的场景(如数据库、Web服务器),固定IP能避免因DHCP租约变更导致的服务中断,Linux发行版众多,网络管理工具(如Netplan、NetworkManager、ifcfg等)略有差异,本文以主流发行版……

    2025年9月19日
    8000
  • 如何清除Linux系统的缓存文件夹?

    Linux系统中的缓存是为了提升系统性能而设计的,通过将频繁访问的数据暂存到内存中,减少磁盘I/O操作,从而加快程序响应速度,但长时间运行后,缓存文件可能会占用大量磁盘空间,导致系统变慢或存储不足,此时需要手动清除缓存,清除缓存需区分系统级缓存和应用级缓存,不同类型缓存的清除方式有所不同,操作时需注意权限和数据……

    2025年9月20日
    8700
  • 为什么你总是感到疲惫?

    Shell脚本中注释多行方法1:使用 << 和自定义标记(推荐)在脚本开头插入:<<'COMMENT'这是被注释的多行内容echo "这行不会执行"ls /nonexistent # 不会报错COMMENT原理:<<‘COMMENT’ 定义……

    2025年6月22日
    11100
  • linux如何安装tftp

    Linux中安装TFTP,可使用包管理器如apt-get install tftp

    2025年8月16日
    6500
  • Linux合并文件的最佳方法是什么?

    使用 cat 命令(最常用)原理:cat(concatenate)命令按顺序读取文件内容并输出到屏幕或新文件,场景:合并文本文件(如日志、配置文件),命令示例:cat file1.txt file2.txt file3.txt > merged_file.txt关键参数:>:覆盖写入新文件(若文件存……

    2025年8月8日
    8300

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信