Linux如何在关机前查看在线用户并发出通知

发布时间:2022-02-18 10:42:21 作者:小新
来源:亿速云 阅读:251
# Linux如何在关机前查看在线用户并发出通知

## 引言

在Linux多用户环境中,系统管理员经常需要在关机或重启前确认是否有其他用户在线,并提前通知这些用户保存工作。本文将详细介绍如何通过命令行工具查看在线用户,并通过多种方式发送关机通知,确保系统维护时不影响其他用户的工作。

---

## 一、查看当前在线用户

### 1. who命令
最基础的查看在线用户命令,显示登录用户名、终端设备和登录时间:
```bash
who

示例输出:

user1    pts/0        2023-10-01 09:30 (192.168.1.100)
user2    tty2         2023-10-01 10:15

2. w命令

更详细的在线用户信息(包括正在运行的命令):

w

输出包含: - 用户 - 终端 - 登录IP - 空闲时间 - 当前进程

3. users命令

仅显示登录用户名(适合快速检查):

users

4. last命令

查看近期登录记录(包括已退出的会话):

last | head -n 10

二、发送关机通知的三种方式

方法1:wall命令(全站广播)

向所有登录用户发送广播消息:

sudo shutdown -h +30 "系统将在30分钟后维护升级,请保存您的工作!"

或手动发送:

echo "紧急通知:系统将在15分钟后关机!" | wall

方法2:write命令(点对点通知)

向特定用户发送消息(需先通过who确认终端):

write user1 pts/0
系统将在10分钟后关机,请立即保存文件!
(按Ctrl+D结束输入)

方法3:结合脚本的自动化方案

创建通知脚本/usr/local/bin/notify_shutdown.sh

#!/bin/bash

# 检查在线用户
users=$(who | awk '{print $1}' | sort | uniq)

if [ -z "$users" ]; then
    echo "没有在线用户,立即关机"
    shutdown -h now
else
    # 发送分级通知
    for user in $users; do
        write $user <<EOF
【系统通知】服务器将于$(date -d "30 minutes" +%H:%M)进行维护
请及时保存您的工作,避免数据丢失!
EOF
    done
    
    # 延迟关机
    shutdown -h +30
fi

添加执行权限:

sudo chmod +x /usr/local/bin/notify_shutdown.sh

三、高级应用场景

场景1:非交互式通知(通过cron)

在计划性维护前通过cron定时发送通知:

# 每天23:00检查(编辑crontab -e)
0 23 * * * echo "每日备份将在23:30开始,请保存文件" | wall

场景2:图形化用户通知

通过DBUS通知GNOME/KDE用户:

notify-send -u critical "关机警告" "系统将在15分钟后关闭"

场景3:结合SSH的远程用户检测

检查通过SSH连接的用户:

ss -tpn | grep sshd | awk '{print $6}'

四、注意事项

  1. 权限控制

    • wall命令需要sudo权限
    • write命令只能给同一用户或root使用
  2. 用户拒绝消息: 用户可能通过mesg n拒绝接收消息,此时需要root权限强制通知

  3. 定时关机的替代方案

    sudo shutdown -h 23:00 "今晚23点整关机"
    
  4. 取消关机计划

    shutdown -c
    

结语

通过合理使用who、wall等工具,Linux管理员可以优雅地执行关机操作。建议将关键命令封装成脚本,并建立标准的维护通知流程。对于生产环境,还可考虑集成到Ansible/Puppet等自动化工具中实现更完善的通知机制。

附录:常用命令速查表

命令 功能描述
who -uH 带标题的详细用户列表
lastlog 查看所有用户最后登录时间
pkill -KILL -u username 强制注销用户

”`

(注:实际字符数约950字,此处为简化展示)

推荐阅读:
  1. 接口规范 6. 查看在线用户
  2. linux怎么查看用户

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linux

上一篇:Linux中如何使用vgdisplay命令

下一篇:Android如何自定义View实现数字雨效果

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》