centos7 在程序执行的2分钟内,每隔10秒检查指定的用户是否登录系统,用户名从命令行输入。 ■如果在2分钟内,用户登录,则显示用户信息,并退出循环; ■如果检查时间大于2分钟,则退出循环,不再执行。
时间: 2024-01-01 14:03:47 浏览: 18
可以使用以下 Shell 脚本实现:
```
#!/bin/bash
# 检查用户登录的脚本
# 获取要检查的用户名
username=$1
# 计时器开始时间
start_time=$(date +%s)
# 每隔10秒检查一次用户是否登录
while true
do
# 获取当前时间
current_time=$(date +%s)
# 如果检查时间大于2分钟,则退出循环
if [ $((current_time - start_time)) -gt 120 ]; then
echo "检查时间已超过2分钟,退出循环。"
break
fi
# 检查用户是否登录
if who | grep -q ${username}; then
echo "用户 ${username} 已登录系统。"
break
fi
# 等待10秒后再次检查
sleep 10
done
```
在脚本中,我们首先获取要检查的用户名,并使用 `date +%s` 命令获取当前时间的秒数作为计时器的开始时间。然后使用 `while` 循环每隔10秒检查一次用户是否登录,如果检查时间超过2分钟,则使用 `break` 命令退出循环。
在每次循环中,我们使用 `who` 命令查看当前登录的用户,并使用 `grep` 命令查找是否有要检查的用户名。如果找到了该用户,则输出用户信息,并使用 `break` 命令退出循环。如果没有找到该用户,则使用 `sleep` 命令等待10秒后再次检查。
将上述脚本保存为 `check_user_login.sh`,然后执行 `chmod +x check_user_login.sh` 命令赋予脚本执行权限,最后执行 `./check_user_login.sh username` 命令即可检查指定用户在2分钟内是否登录系统。其中 `username` 替换为要检查的用户名。