写一个Linux脚本,统计每一层目录空间占用
时间: 2024-06-04 20:13:53 浏览: 39
#!/bin/bash
# 定义函数用于计算目录大小
function count_size() {
local dir=$1
du -sh $dir | awk '{ print $1 }'
}
# 获取当前目录
dir=$(pwd)
# 遍历当前目录下的所有子目录
for d in $(find $dir -type d); do
# 如果不是当前目录,计算其大小并输出
if [ "$d" != "$dir" ]; then
size=$(count_size $d)
echo "$d: $size"
fi
done
相关问题
写一个Linux shell脚本,查看目录下所有子目录占用空间
可以使用 `du` 命令来查看目录的大小,加上 `-h` 参数可以以易读的方式显示目录大小,加上 `-d` 参数可以指定查看的目录深度。结合 `find` 命令可以查找指定目录下的所有子目录。
下面是一个查看指定目录下所有子目录占用空间的 shell 脚本示例:
```bash
#!/bin/bash
# 指定要查看的目录
dir="/path/to/directory"
# 查找指定目录下的所有子目录,并遍历输出它们的空间占用情况
find "$dir" -type d -print0 | while read -d $'\0' path; do
# 使用 du 命令计算目录大小,并以易读的方式显示
size=$(du -sh "$path" | cut -f1)
echo "$size $path"
done
```
在上面的脚本中,`find` 命令会查找指定目录下的所有子目录,并将它们的路径以 null 字符 (`\0`) 分隔输出。接着使用 `while` 循环读取每个子目录的路径,并使用 `du` 命令计算它们的大小。最后将目录大小和路径输出。
写一个脚本获取linux服务器资源占用情况
### 回答1:
可以使用 `top` 命令来获取 Linux 服务器的资源占用情况。例如,可以使用以下命令来查看 CPU 和内存的使用情况:
```
top
```
此命令将显示系统的实时性能信息,包括 CPU 和内存的使用情况。
如果要将此信息保存到文件中,可以使用以下命令:
```
top -b > top.txt
```
这将在后台运行 `top` 命令,并将输出保存到 `top.txt` 文件中。
如果要查看其他资源的使用情况,可以使用其他命令,如 `df` 命令查看磁盘使用情况,`vmstat` 命令查看虚拟内存使用情况,`iostat` 命令查看 I/O 使用情况等。
下面是一个示例脚本,可以查看 CPU、内存、磁盘和 I/O 的使用情况:
```bash
#!/bin/bash
echo "CPU usage:"
echo "-----------"
mpstat
echo ""
echo "Memory usage:"
echo "-------------"
free
echo ""
echo "Disk usage:"
echo "-------------"
df -h
echo ""
echo "I/O usage:"
echo "-------------"
iostat
```
将此脚本保存为 `resource_usage.sh`,然后运行:
```
bash resource_usage.sh
```
这将输出 CPU、内存、磁盘和 I/O 的使用情况。
### 回答2:
编写一个脚本来获取Linux服务器的资源占用情况,可以通过以下步骤完成:
1. 首先,在脚本的开始部分,可以添加必要的注释和描述信息以提高可读性和易用性。
2. 使用命令行参数来接收服务器的IP地址或主机名。可以使用`sys.argv`来获取输入的IP地址或主机名。
3. 使用`ssh`命令来通过SSH协议连接到服务器。可以使用`subprocess`模块来执行系统命令。
4. 在连接到服务器后,可以使用各种Linux命令来获取服务器的资源占用信息。例如,可以使用`top`命令来获取CPU和内存的使用情况,可以使用`df`命令来获取磁盘空间使用情况,可以使用`netstat`命令来获取网络连接信息等。可以使用标准输出重定向来将命令输出保存到临时文件中。
5. 使用`scp`命令将临时文件从服务器复制到本地计算机。可以使用`subprocess`模块来执行系统命令。
6. 在本地计算机上,可以读取临时文件的内容并进行解析。可以使用Python的文件操作函数来读取和处理文件内容。获取所需的信息后,可以将其打印或保存到其他地方。
7. 最后,关闭和终止SSH连接。可以使用`subprocess`模块来执行`ssh`和`scp`命令,可以使用`subprocess`模块来执行系统命令。
以上是一个简单的脚本实现,可以根据需要进一步扩展和改进,以满足特定的需求。
### 回答3:
这是一个用于获取Linux服务器资源占用情况的脚本:
```bash
#!/bin/bash
# 获取CPU使用情况
cpu_usage=$(top -bn1 | awk '/^%Cpu/ {print $2}')
# 获取内存使用情况
memory_usage=$(free -m | awk '/^Mem/ {print $3}')
# 获取磁盘使用情况
disk_usage=$(df -h | awk '/\/$/ {print $5}')
# 获取网络流量
network_usage=$(ifstat | awk '/average/ {print $6}')
echo "CPU 使用率: $cpu_usage"
echo "内存 使用量: $memory_usage MB"
echo "磁盘 使用率: $disk_usage"
echo "网络 流量: $network_usage"
```
这个脚本首先使用`top`命令获取CPU使用情况,并使用`awk`命令过滤出百分比值。然后使用`free`命令获取内存使用情况,并使用`awk`命令过滤出已使用的内存量。接下来使用`df`命令获取磁盘使用情况,并使用`awk`命令过滤出根目录("/")的使用率。最后使用`ifstat`命令获取网络流量,并使用`awk`命令过滤出平均流量。
你可以通过运行这个脚本来获取Linux服务器资源占用情况。将脚本保存为文件(例如`resource_usage.sh`),然后在终端中运行`bash resource_usage.sh`即可查看结果。