您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 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
更详细的在线用户信息(包括正在运行的命令):
w
输出包含: - 用户 - 终端 - 登录IP - 空闲时间 - 当前进程
仅显示登录用户名(适合快速检查):
users
查看近期登录记录(包括已退出的会话):
last | head -n 10
向所有登录用户发送广播消息:
sudo shutdown -h +30 "系统将在30分钟后维护升级,请保存您的工作!"
或手动发送:
echo "紧急通知:系统将在15分钟后关机!" | wall
向特定用户发送消息(需先通过who
确认终端):
write user1 pts/0
系统将在10分钟后关机,请立即保存文件!
(按Ctrl+D结束输入)
创建通知脚本/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
在计划性维护前通过cron定时发送通知:
# 每天23:00检查(编辑crontab -e)
0 23 * * * echo "每日备份将在23:30开始,请保存文件" | wall
通过DBUS通知GNOME/KDE用户:
notify-send -u critical "关机警告" "系统将在15分钟后关闭"
检查通过SSH连接的用户:
ss -tpn | grep sshd | awk '{print $6}'
权限控制:
用户拒绝消息:
用户可能通过mesg n
拒绝接收消息,此时需要root权限强制通知
定时关机的替代方案:
sudo shutdown -h 23:00 "今晚23点整关机"
取消关机计划:
shutdown -c
通过合理使用who、wall等工具,Linux管理员可以优雅地执行关机操作。建议将关键命令封装成脚本,并建立标准的维护通知流程。对于生产环境,还可考虑集成到Ansible/Puppet等自动化工具中实现更完善的通知机制。
附录:常用命令速查表
命令 功能描述 who -uH
带标题的详细用户列表 lastlog
查看所有用户最后登录时间 pkill -KILL -u username
强制注销用户 ”`
(注:实际字符数约950字,此处为简化展示)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。