diff --git a/doc/nethogs.8 b/doc/nethogs.8 index 0d326a7..398e26b 100644 --- a/doc/nethogs.8 +++ b/doc/nethogs.8 @@ -19,6 +19,7 @@ nethogs \- Net top tool grouping bandwidth per process .RB [ "\-l" ] .RB [ "\-f filter" ] .RB [ "\-C" ] +.RB [ "\-b" ] .RB [ "\-g period" ] .RI [device(s)] .SH DESCRIPTION @@ -62,6 +63,9 @@ monitor all devices, even loopback/stopped ones. \fB-C\fP capture TCP and UDP. .TP +\fB-b\fP +Display the program basename. +.TP \fB-g\fP garbage collection period in number of refresh. default is 50. .TP @@ -86,6 +90,9 @@ sort by RECEIVED traffic l display command line .TP +b +display the program basename +.TP m switch between total (KB, B, MB) and throughput (KB/s, MB/s, GB/s) mode .RE diff --git a/src/cui.cpp b/src/cui.cpp index d8cb05b..29cfeb5 100644 --- a/src/cui.cpp +++ b/src/cui.cpp @@ -26,6 +26,7 @@ #include #include #include +#include #include #include "nethogs.h" @@ -45,6 +46,7 @@ extern bool sortRecv; extern int viewMode; extern bool showcommandline; +extern bool showBasename; extern unsigned refreshlimit; extern unsigned refreshcount; @@ -67,6 +69,8 @@ const char *COLUMN_FORMAT_RECEIVED = "%11.3f"; const char *const desc_view_mode[VIEWMODE_COUNT] = { "KB/sec", "KB ", "B ", "MB ", "MB/sec", "GB/sec"}; +constexpr char FILE_SEPARATOR = '/'; + class Line { public: Line(const char *name, const char *cmdline, double n_recv_value, @@ -152,6 +156,12 @@ static void mvaddstr_truncate_trailing(int row, int col, const char *str, static void mvaddstr_truncate_cmdline(int row, int col, const char *progname, const char *cmdline, std::size_t max_len) { + if (showBasename) { + if (index(progname, FILE_SEPARATOR) != NULL) { + progname = rindex(progname, FILE_SEPARATOR) + 1; + } + } + std::size_t proglen = strlen(progname); std::size_t max_cmdlen; @@ -305,6 +315,10 @@ void ui_tick() { /* switch mode: total vs kb/s */ viewMode = (viewMode + 1) % VIEWMODE_COUNT; break; + case 'b': + /* show only the process basename */ + showBasename = !showBasename; + break; } } diff --git a/src/main.cpp b/src/main.cpp index 7e9dc2b..a48d41b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -27,7 +27,7 @@ static void help(bool iserror) { // output << "usage: nethogs [-V] [-b] [-d seconds] [-t] [-p] [-f (eth|ppp))] // [device [device [device ...]]]\n"; output << "usage: nethogs [-V] [-h] [-x] [-d seconds] [-v mode] [-c count] " - "[-t] [-p] [-s] [-a] [-l] [-f filter] [-C]" + "[-t] [-p] [-s] [-a] [-l] [-f filter] [-C] [-b]" "[device [device [device ...]]]\n"; output << " -V : prints version.\n"; output << " -h : prints this help.\n"; @@ -48,6 +48,7 @@ static void help(bool iserror) { output << " -C : capture TCP and UDP.\n"; output << " -g : garbage collection period in number of refresh. " "default is 50.\n"; + output << " -b : Short program name. Displays only the program name.\n"; output << " -f : EXPERIMENTAL: specify string pcap filter (like " "tcpdump)." " This may be removed or changed in a future version.\n"; @@ -59,6 +60,7 @@ static void help(bool iserror) { output << " s: sort by SENT traffic\n"; output << " r: sort by RECEIVED traffic\n"; output << " l: display command line\n"; + output << " b: display the program basename instead of the fullpath\n"; output << " m: switch between total (KB, B, MB) and throughput (KB/s, MB/s, " "GB/s) mode\n"; } @@ -145,7 +147,7 @@ int main(int argc, char **argv) { int garbage_collection_period = 50; int opt; - while ((opt = getopt(argc, argv, "Vhxtpsd:v:c:laf:Cg:")) != -1) { + while ((opt = getopt(argc, argv, "Vhxtpsd:v:c:laf:Cbg:")) != -1) { switch (opt) { case 'V': versiondisplay(); @@ -187,6 +189,9 @@ int main(int argc, char **argv) { case 'C': catchall = true; break; + case 'b': + showBasename = true; + break; case 'g': garbage_collection_period = (time_t)atoi(optarg); break; diff --git a/src/nethogs.cpp b/src/nethogs.cpp index eb8716b..a1c446c 100644 --- a/src/nethogs.cpp +++ b/src/nethogs.cpp @@ -60,6 +60,7 @@ bool bughuntmode = false; // sort on sent or received? bool sortRecv = true; bool showcommandline = false; +bool showBasename = false; // viewMode: kb/s or total int viewMode = VIEWMODE_KBPS; const char version[] = " version " VERSION;