IF_NC(APPLET(nc, _BB_DIR_USR_BIN, _BB_SUID_DROP))
IF_NETSTAT(APPLET(netstat, _BB_DIR_BIN, _BB_SUID_DROP))
IF_NICE(APPLET(nice, _BB_DIR_BIN, _BB_SUID_DROP))
-IF_NMETER(APPLET(nmeter, _BB_DIR_USR_BIN, _BB_SUID_DROP))
IF_NOHUP(APPLET(nohup, _BB_DIR_USR_BIN, _BB_SUID_DROP))
IF_NSLOOKUP(APPLET(nslookup, _BB_DIR_USR_BIN, _BB_SUID_DROP))
IF_NTPD(APPLET(ntpd, _BB_DIR_USR_SBIN, _BB_SUID_DROP))
"\n -c One-byte character display" \
"\n -C Canonical hex+ASCII, 16 bytes per line" \
"\n -d Two-byte decimal display" \
- "\n -e FORMAT STRING" \
- "\n -f FORMAT FILE" \
+ "\n -e FORMAT_STRING" \
+ "\n -f FORMAT_FILE" \
"\n -n LENGTH Interpret only LENGTH bytes of input" \
"\n -o Two-byte octal display" \
"\n -s OFFSET Skip OFFSET bytes" \
" or\n" \
"$ nameif -c /etc/my_mactab_file\n" \
-#define nmeter_trivial_usage \
- "format_string"
-#define nmeter_full_usage "\n\n" \
- "Monitor system in real time\n\n" \
- "Format specifiers:\n" \
- " %Nc or %[cN] Monitor CPU. N - bar size, default 10\n" \
- " (displays: S:system U:user N:niced D:iowait I:irq i:softirq)\n" \
- " %[niface] Monitor network interface 'iface'\n" \
- " %m Monitor allocated memory\n" \
- " %[mf] Monitor free memory\n" \
- " %[mt] Monitor total memory\n" \
- " %s Monitor allocated swap\n" \
- " %f Monitor number of used file descriptors\n" \
- " %Ni Monitor total/specific IRQ rate\n" \
- " %x Monitor context switch rate\n" \
- " %p Monitor forks\n" \
- " %[pn] Monitor # of processes\n" \
- " %b Monitor block io\n" \
- " %Nt Show time (with N decimal points)\n" \
- " %Nd Milliseconds between updates (default:1000)\n" \
- " %r Print <cr> instead of <lf> at EOL" \
-
-#define nmeter_example_usage \
- "nmeter '%250d%t %20c int %i bio %b mem %m forks%p'"
-
#define nohup_trivial_usage \
"PROG ARGS"
#define nohup_full_usage "\n\n" \
default y
depends on KILL
-config NMETER
- bool "nmeter"
- default y
- help
- Prints selected system stats continuously, one line per update.
-
config PGREP
bool "pgrep"
default y
lib-$(CONFIG_FUSER) += fuser.o
lib-$(CONFIG_KILL) += kill.o
lib-$(CONFIG_ASH) += kill.o # used for built-in kill by ash
-lib-$(CONFIG_NMETER) += nmeter.o
lib-$(CONFIG_PGREP) += pgrep.o
lib-$(CONFIG_PKILL) += pgrep.o
lib-$(CONFIG_PIDOF) += pidof.o
* Contact me: vda.linux@googlemail.com
*/
+//config:config NMETER
+//config: bool "nmeter"
+//config: default y
+//config: help
+//config: Prints selected system stats continuously, one line per update.
+
+//applet:IF_NMETER(APPLET(nmeter, _BB_DIR_USR_BIN, _BB_SUID_DROP))
+
+//kbuild:lib-$(CONFIG_NMETER) += nmeter.o
+
+//usage:#define nmeter_trivial_usage
+//usage: "[-d MSEC] FORMAT_STRING"
+//usage:#define nmeter_full_usage "\n\n"
+//usage: "Monitor system in real time"
+//usage: "\n"
+//usage: "\n -d MSEC Milliseconds between updates (default:1000)"
+//usage: "\n"
+//usage: "\nFormat specifiers:"
+//usage: "\n %Nc or %[cN] Monitor CPU. N - bar size (default:10)"
+//usage: "\n (displays: S:system U:user N:niced D:iowait I:irq i:softirq)"
+//usage: "\n %[niface] Monitor network interface 'iface'"
+//usage: "\n %m Monitor allocated memory"
+//usage: "\n %[mf] Monitor free memory"
+//usage: "\n %[mt] Monitor total memory"
+//usage: "\n %s Monitor allocated swap"
+//usage: "\n %f Monitor number of used file descriptors"
+//usage: "\n %Ni Monitor total/specific IRQ rate"
+//usage: "\n %x Monitor context switch rate"
+//usage: "\n %p Monitor forks"
+//usage: "\n %[pn] Monitor # of processes"
+//usage: "\n %b Monitor block io"
+//usage: "\n %Nt Show time (with N decimal points)"
+//usage: "\n %r Print <cr> instead of <lf> at EOL"
+
//TODO:
// simplify code
// /proc/locks
typedef s_stat* init_func(const char *param);
+// Deprecated %NNNd is to be removed, -d MSEC supersedes it
static const char options[] ALIGN1 = "ncmsfixptbdr";
static init_func *const init_functions[] = {
init_if,
s_stat *first = NULL;
s_stat *last = NULL;
s_stat *s;
+ char *opt_d;
char *cur, *prev;
INIT_G();
xchdir("/proc");
- if (!argv[1])
- bb_show_usage();
-
if (open_read_close("version", buf, sizeof(buf)-1) > 0) {
buf[sizeof(buf)-1] = '\0';
is26 = (strstr(buf, " 2.4.") == NULL);
}
- // Can use argv[1] directly, but this will mess up
+ if (getopt32(argv, "d:", &opt_d))
+ init_delay(opt_d);
+ argv += optind;
+
+ if (!argv[0])
+ bb_show_usage();
+
+ // Can use argv[0] directly, but this will mess up
// parameters as seen by e.g. ps. Making a copy...
- cur = xstrdup(argv[1]);
+ cur = xstrdup(argv[0]);
while (1) {
char *param, *p;
prev = cur;