写个shell脚本,过滤出磁盘剩余空间小于20G
时间: 2023-03-24 22:02:21 浏览: 66
可以使用以下的 shell 脚本来过滤出磁盘剩余空间小于 20G 的磁盘:
```
#!/bin/bash
df -h | awk '$4 ~ /G/ { if ($4 < 20) print $;}'
```
这个脚本会使用 `df -h` 命令来获取磁盘使用情况,并使用 `awk` 命令来过滤出剩余空间小于 20G 的磁盘。最后,输出符合条件的磁盘信息。
相关问题
写一个shell脚本,监控系统磁盘空间余量不足的情况
### 回答1:
#!/bin/bash
# 监控系统磁盘空间余量不足的情况
while true
do
# 检查磁盘空间使用率
df -h | grep -vE '^Filesystem|tmpfs|cdrom' | awk '{ print $5 " " $1 }' | while read output;
do
# 获取磁盘使用率
usep=$(echo $output | awk '{ print $1}' | cut -d'%' -f1 )
# 获取磁盘名称
partition=$(echo $output | awk '{ print $2 }' )
# 如果磁盘使用率大于80,发出警告
if [ $usep -ge 80 ]; then
echo "磁盘 $partition 空间余量不足!"
fi
done
# 休眠5秒
sleep 5
done
### 回答2:
这是一个用于监控系统磁盘空间余量不足情况的Shell脚本:
```bash
#!/bin/bash
# 设置警告阈值(以字节为单位)
warning_threshold=5000000000
# 获取系统磁盘空间信息
disk_usage=$(df --output=avail /)
# 从输出中提取可用空间的字节数
available_space=$(echo "$disk_usage" | tail -n 1)
# 检查可用空间是否小于警告阈值
if [ "$available_space" -lt "$warning_threshold" ]; then
echo "系统磁盘空间不足,请及时清理!"
else
echo "系统磁盘空间充足,无需担心。"
fi
```
该脚本首先设置了一个警告阈值(单位为字节),然后使用`df`命令获取磁盘空间信息,其中`--output=avail`选项用于只输出可用空间信息。接下来,脚本从输出中提取出可用空间的字节数。
最后,脚本使用一个条件判断语句检查可用空间是否小于警告阈值。如果小于,则输出警告信息;否则,输出一条无需担心的信息。可以将该脚本设置为定时任务,定时检查系统磁盘空间的余量情况。
### 回答3:
以下是一个示例的shell脚本,用于监控系统磁盘空间余量不足的情况:
```shell
#!/bin/bash
# 设定阈值,表示磁盘可用空间的最小值(以字节为单位)
threshold=10485760
# 获取当前系统中所有磁盘的可用空间
disk_space=$(df -P | awk 'NR>1 {print $4}')
# 遍历所有磁盘的可用空间
for space in $disk_space;
do
# 如果可用空间小于阈值,输出警告信息
if [[ $space -lt $threshold ]]; then
echo "磁盘空间余量不足!可用空间:$space 字节"
fi
done
```
脚本的工作原理如下:
1. 设置一个阈值,表示磁盘可用空间的最小值(这里设定为10MB),可以根据实际需求进行修改。
2. 使用`df -P`命令获取当前系统中所有磁盘的可用空间,并使用`awk`命令过滤掉表头。
3. 对于每一个磁盘的可用空间进行遍历,如果可用空间小于阈值,则输出警告信息。
4. 可以将该脚本设置为定时任务,定期执行以监控系统磁盘空间是否足够。
请注意,该脚本只是一个示例,具体的磁盘空间阈值和监控频率需要根据实际情况进行调整。
shell 写一个oracle表空间小于100G则退出执行的脚本
可以以下脚本实现:
```shell
#!/bin/bash
# 设置Oracle环境变量
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export PATH=$PATH:$ORACLE_HOME/bin
# 连接到Oracle数据库
sqlplus -S /nolog <<EOF
connect username/password@database
# 查询表空间使用情况
set feedback off
set heading off
set pagesize 0
set linesize 200
SELECT ROUND(SUM(bytes) / 1024 / 1024 / 1024) as "Total Size (GB)", ROUND(SUM(bytes - blocks * block_size) / 1024 / 1024 / 1024) as "Used Size (GB)", ROUND((SUM(bytes - blocks * block_size) / SUM(bytes)) * 100) as "Used %", tablespace_name FROM dba_data_files GROUP BY tablespace_name;
# 判断表空间大小是否小于100GB
set serveroutput on
declare
ts_name varchar2(30);
ts_size number;
begin
select sum(bytes) / 1024 / 1024 / 1024 into ts_size from dba_data_files;
if ts_size < 100 then
dbms_output.put_line('Tablespace size is less than 100GB, exiting script.');
exit;
end if;
end;
/
EOF
```
脚本中的 `username/password@database` 需要替换为实际的数据库连接信息。执行脚本时,如果表空间大小小于100GB,则会输出提示信息并退出脚本。