shell写个循环脚本,每隔5秒,查看下Linux系统fd使用情况,和指定程序的fd使用情况,并输出到文本中。
时间: 2024-03-17 11:47:29 浏览: 210
Linux shell编程中IO和条件及循环处理的细节问题讨论
可以使用如下的 Shell 脚本实现每隔 5 秒查看系统 fd 使用情况和指定程序 fd 使用情况,并将结果输出到文本文件中:
```bash
#!/bin/bash
while true
do
# 获取系统 fd 使用情况
sys_fd=$(cat /proc/sys/fs/file-nr | awk '{print $1}')
# 获取指定程序的 fd 使用情况,这里以 nginx 为例
nginx_fd=$(lsof -p $(pidof nginx) | wc -l)
# 将结果输出到文本中
echo "$(date '+%Y-%m-%d %H:%M:%S') sys_fd: $sys_fd, nginx_fd: $nginx_fd" >> fd_usage.txt
# 睡眠 5 秒
sleep 5
done
```
脚本中使用了一个无限循环 `while true`,每次循环中获取系统 fd 使用情况和指定程序的 fd 使用情况,将结果格式化成字符串,并输出到指定文件 `fd_usage.txt` 中。`sleep 5` 表示每次循环结束后睡眠 5 秒。该脚本可以通过 `chmod +x script.sh` 命令添加可执行权限,然后通过 `./script.sh` 命令执行。
阅读全文