df
在概述方面做得很好。但是如果我想在shell脚本中将变量设置为磁盘上可用的字节数呢?
示例:
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda 1111111111 2222222 33333333 10% /
tmpfs 44444444 555 66666666 1% /dev/shm
但我只想返回33333333
(/
上可用的字节数),而不是整个df
输出。
答案 0 :(得分:6)
您可以使用awk,
df | awk '$1=="/dev/sda"{print $4}'
答案 1 :(得分:4)
便携地:
df -P /dev/sda1 | awk 'NR==2 {print $4}'
-P
选项可确保df
以预期的格式打印输出,特别是在设备名称后不会破坏该行,即使它很长。将设备名称作为参数传递给df
可以消除解析的任何危险,例如在查询/dev/sda10
时获取/dev/sda1
的信息。 df -P
只打印两行,标题行(您忽略)和打印所需列的一行数据。
df
存在显示包含空格的设备名称的风险,例如,如果按名称装入卷且名称包含空格,或者远程装入点包含空格的NFS卷。在这种情况下,没有完全可移植的方法来解析df
的输出。如果您确信df
将显示您传递给它的确切设备名称(情况并非总是这样),您可以将其删除:
df -P -- "$device" | awk -vn=${#device} 'NR==2 {$0 = substr($0, n+1); print $3}'
答案 2 :(得分:3)
你可以使用awk
df | grep sda | awk '{print $4}'
答案 3 :(得分:2)
仅限Linux
df --output=avail
答案 4 :(得分:1)
您也可以使用import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { Http } from '@angular/http';
import { map } from 'rxjs/operators';
@Injectable()
export class DataService {
users: string[];
data: Observable<Array<number>>;
constructor(public http: Http) {
this.users = ['supun' , 'madhushi' , 'kennady' , 'sachini'];
}
getUsers() {
return this.users;
}
getUsers1() {
return this.http.get('http://jsonplaceholder.typicode.com/users')
.map(res => res.json());
}
getData() {
this.data = new Observable(observer => {
setTimeout(() => {
observer.next(1);
}, 1000);
setTimeout(() => {
observer.next(2);
}, 2000);
setTimeout(() => {
observer.next(3);
}, 3000);
setTimeout(() => {
observer.next('hello');
}, 4000);
setTimeout(() => {
observer.complete();
}, 5000);
});
return this.data;
}
}
查询磁盘状态。要查询安装在stat
上的文件系统上的空闲块:
/
要以字节而不是块为单位获取结果,可以使用Shell的算法:
stat -f -c '%f' /
答案 5 :(得分:0)
使用df可能会获得确切的字节数:
df -B1 /
Filesystem 1B-blocks Used Available Use% Mounted on
/dev/mapper/cl-root 32893632512 13080072192 18119061504 42% /
答案 6 :(得分:0)
与所示的答案非常相似,但是如果您不知道文件系统的名称,而只是在寻找分区上的总可用空间。
df -P --total | grep 'total' | awk '{print $4}'