查看源代码 disksup (os_mon v2.10.1)
磁盘监控进程
disksup
是一个监控系统中可用磁盘空间的进程。它是 OS_Mon 应用程序的一部分,请参阅 os_mon(6)。适用于 Unix 和 Windows。
定期检查磁盘。对于每个使用超过一定可用空间量的磁盘或分区,会设置警报 {{disk_almost_full, MountedOn}, []}
。
在 Unix 上 - 检查所有(本地)挂载的磁盘,包括交换磁盘(如果存在)。
在 WIN32 上 - 检查所有类型为 "FIXED_DISK" 的逻辑驱动器。
警报会报告给 SASL 警报处理程序,请参阅 alarm_handler
。要设置警报,会调用 alarm_handler:set_alarm(Alarm)
,其中 Alarm
是上面指定的警报。
当警报原因不再有效时,警报会自动清除。
配置
可以使用以下配置参数来更改时间间隔和阈值的默认值
disk_space_check_interval =
time/0
- 定期磁盘空间检查的时间间隔。默认值为 30 分钟。disk_almost_full_threshold = float()
- 在设置disk_almost_full
警报之前,磁盘可用空间可以被利用的阈值,以总磁盘空间的百分比表示。默认值为 0.80 (80%)。disksup_posix_only = bool()
- 指定disksup
辅助进程是否应仅使用符合 POSIX 标准的命令 (true
)。默认值为false
。在具有精简版 Unix 工具(如df
)的嵌入式系统上,可能需要将此参数设置为true
。使用此选项时,返回的磁盘数据和警报可能会有所不同。在已知不兼容 POSIX 的平台(Windows 和 SunOS)上,该参数将被忽略。
有关如何更改配置参数值的信息,请参阅 config。
另请参阅
摘要
函数
返回磁盘空间利用率的阈值,以百分比表示。
返回定期磁盘空间检查的时间间隔,以毫秒为单位。
返回最近一次磁盘检查的结果。
立即获取本地磁盘的总空间、可用空间和容量。
立即获取指定路径的总空间、可用空间和容量。
更改磁盘空间利用率的阈值,以浮点数形式给出 (0.0 =< Float =< 1.0
)。
更改定期磁盘空间检查的时间间隔。
类型
-type time() :: pos_integer() | {TimeUnit :: erlang:time_unit(), Time :: pos_integer()}.
用于 disklog API 的时间单位。
支持的单位为
integer() >= 1
- 时间间隔,以分钟为单位。{TimeUnit, Time}
- 时间间隔Time
,以TimeUnit
指定的时间单位表示,其中TimeUnit
的类型为erlang:time_unit/0
,Time
为正整数。时间间隔必须至少为一毫秒。
函数
-spec get_almost_full_threshold() -> Percent :: integer().
返回磁盘空间利用率的阈值,以百分比表示。
-spec get_check_interval() -> Milliseconds :: integer().
返回定期磁盘空间检查的时间间隔,以毫秒为单位。
-spec get_disk_data() -> [DiskData] when DiskData :: {Id, TotalKiB, Capacity}, Id :: string(), TotalKiB :: integer(), Capacity :: integer().
返回最近一次磁盘检查的结果。
Id
是一个字符串,用于标识磁盘或分区。TotalKiB
是磁盘或分区的总大小,以千字节 (KiB) 为单位。Capacity
是已用磁盘空间的百分比。
该函数是异步的,因为它不调用磁盘检查,而是返回最新的可用值。
如果 disksup
不可用,则返回 [{"none",0,0}]
。
-spec get_disk_info() -> [DiskData] when DiskData :: {Id, TotalKiB, AvailableKiB, Capacity}, Id :: string(), TotalKiB :: integer(), AvailableKiB :: integer(), Capacity :: integer().
立即获取本地磁盘的总空间、可用空间和容量。
Id
是一个字符串,用于标识磁盘或分区。TotalKiB
是磁盘或分区的总大小,以千字节 (KiB) 为单位。AvailableKiB
是已用磁盘空间,以千字节 (KiB) 为单位。Capacity
是已用磁盘空间的百分比。
如果 disksup
不可用,则返回 [{"none",0,0,0}]
。
-spec get_disk_info(Path :: string()) -> [DiskData] when DiskData :: {Id, TotalKiB, AvailableKiB, Capacity}, Id :: string(), TotalKiB :: integer(), AvailableKiB :: integer(), Capacity :: integer().
立即获取指定路径的总空间、可用空间和容量。
Id
是一个字符串,用于标识磁盘或分区。TotalKiB
是磁盘或分区的总大小,以千字节 (KiB) 为单位。AvailableKiB
是已用磁盘空间,以千字节 (KiB) 为单位。Capacity
是已用磁盘空间的百分比。
如果 Path
无效或无法确定空间,则返回 [{Path,0,0,0}]
。如果 disksup
不可用,则返回 [{"none",0,0,0}]
。
-spec set_almost_full_threshold(Float :: float()) -> ok.
更改磁盘空间利用率的阈值,以浮点数形式给出 (0.0 =< Float =< 1.0
)。
更改将在下一次磁盘空间检查期间生效,并且是非持久的。也就是说,如果进程重新启动,此值将被遗忘,并且将使用默认值。请参阅上面的 配置。
-spec set_check_interval(time()) -> ok.
更改定期磁盘空间检查的时间间隔。
更改将在下一次磁盘空间检查后生效,并且是非持久的。也就是说,如果进程重新启动,此值将被遗忘,并且将使用默认值。请参阅上面的 配置。