diff options
author | Johannes Weißl <[email protected]> | 2014-03-17 01:05:08 +0100 |
---|---|---|
committer | Johannes Weißl <[email protected]> | 2014-07-01 00:47:19 +0200 |
commit | 56c8dabfbc6a6dc8cb6a066d0b74f861b9d16327 (patch) | |
tree | 4a1ae69ca95b5e5f90b06185b7b6665314be099b /lib/os_mon/src/disksup.erl | |
parent | 614bca0f5832f06bcc181c58b78e3371d79ec40d (diff) | |
download | otp-56c8dabfbc6a6dc8cb6a066d0b74f861b9d16327.tar.gz otp-56c8dabfbc6a6dc8cb6a066d0b74f861b9d16327.tar.bz2 otp-56c8dabfbc6a6dc8cb6a066d0b74f861b9d16327.zip |
Add 'disksup_posix_only' parameter to disksup
On embedded (Linux) systems the "df" program is very often provided by
the Busybox (or Toolbox) project. This version does not provide the "-l"
option (for displaying only local filesystems) used in disksup.erl.
To make disksup work on these embedded platforms, this patch adds a new
application parameter 'disksup_posix_only', to make diskup use only
options defined in the POSIX standard:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/df.html
Diffstat (limited to 'lib/os_mon/src/disksup.erl')
-rw-r--r-- | lib/os_mon/src/disksup.erl | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/os_mon/src/disksup.erl b/lib/os_mon/src/disksup.erl index 278da26a20..3fd80f2365 100644 --- a/lib/os_mon/src/disksup.erl +++ b/lib/os_mon/src/disksup.erl @@ -81,10 +81,12 @@ param_type(disk_space_check_interval, Val) when is_integer(Val), param_type(disk_almost_full_threshold, Val) when is_number(Val), 0=<Val, Val=<1 -> true; +param_type(disksup_posix_only, Val) when Val==true; Val==false -> true; param_type(_Param, _Val) -> false. param_default(disk_space_check_interval) -> 30; -param_default(disk_almost_full_threshold) -> 0.80. +param_default(disk_almost_full_threshold) -> 0.80; +param_default(disksup_posix_only) -> false. %%---------------------------------------------------------------------- %% gen_server callbacks @@ -94,7 +96,8 @@ init([]) -> process_flag(trap_exit, true), process_flag(priority, low), - OS = get_os(), + PosixOnly = os_mon:get_env(disksup, disksup_posix_only), + OS = get_os(PosixOnly), Port = case OS of {unix, Flavor} when Flavor==sunos4; Flavor==solaris; @@ -102,6 +105,7 @@ init([]) -> Flavor==dragonfly; Flavor==darwin; Flavor==linux; + Flavor==posix; Flavor==openbsd; Flavor==netbsd; Flavor==irix64; @@ -205,8 +209,10 @@ format_status(_Opt, [_PDict, #state{os = OS, threshold = Threshold, %% Internal functions %%---------------------------------------------------------------------- -get_os() -> +get_os(PosixOnly) -> case os:type() of + {unix, _} when PosixOnly -> + {unix, posix}; {unix, sunos} -> case os:version() of {5,_,_} -> {unix, solaris}; @@ -259,6 +265,9 @@ check_disk_space({unix, irix}, Port, Threshold) -> check_disk_space({unix, linux}, Port, Threshold) -> Result = my_cmd("/bin/df -lk", Port), check_disks_solaris(skip_to_eol(Result), Threshold); +check_disk_space({unix, posix}, Port, Threshold) -> + Result = my_cmd("df -k -P", Port), + check_disks_solaris(skip_to_eol(Result), Threshold); check_disk_space({unix, dragonfly}, Port, Threshold) -> Result = my_cmd("/bin/df -k -t ufs,hammer", Port), check_disks_solaris(skip_to_eol(Result), Threshold); |