查看源代码 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

另请参阅

alarm_handler, os_mon

摘要

类型

用于 disklog API 的时间单位。

函数

返回磁盘空间利用率的阈值,以百分比表示。

返回定期磁盘空间检查的时间间隔,以毫秒为单位。

返回最近一次磁盘检查的结果。

立即获取本地磁盘的总空间、可用空间和容量。

立即获取指定路径的总空间、可用空间和容量。

更改磁盘空间利用率的阈值,以浮点数形式给出 (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/0Time 为正整数。时间间隔必须至少为一毫秒。

函数

链接到此函数

get_almost_full_threshold()

查看源代码
-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}]

链接到此函数

get_disk_info()

查看源代码 (自 OTP 26.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}]

链接到此函数

get_disk_info(Path)

查看源代码 (自 OTP 26.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}]

链接到此函数

set_almost_full_threshold(Float)

查看源代码
-spec set_almost_full_threshold(Float :: float()) -> ok.

更改磁盘空间利用率的阈值,以浮点数形式给出 (0.0 =< Float =< 1.0)。

更改将在下一次磁盘空间检查期间生效,并且是非持久的。也就是说,如果进程重新启动,此值将被遗忘,并且将使用默认值。请参阅上面的 配置

链接到此函数

set_check_interval(Value)

查看源代码
-spec set_check_interval(time()) -> ok.

更改定期磁盘空间检查的时间间隔。

更改将在下一次磁盘空间检查后生效,并且是非持久的。也就是说,如果进程重新启动,此值将被遗忘,并且将使用默认值。请参阅上面的 配置