Short documentation for JWM / Linux

Last Update: 10.02.2023 for version 2.8.0

Contents

Table of contents
  1. Short documentation for JWM / Linux
    1. Contents
    2. Introduction
    3. Author
    4. Tools Summary
    5. History
    6. Installation
    7. Requirements for JWM / Linux
      1. Required GCC version
      2. Required Libraries
      3. Linux Distributions tested
        1. Old Linux Distributions tested (History)
      4. add_os_packages.sh - Script to add missing packages
    8. Using JWM / Linux
      1. Creating a JWM / Linux session
      2. Using JWM commands via jwm.sh
    9. JWM / Linux manServer
    10. Directories in the JWM / Linux archive
    11. Outdated versions of the tools
    12. Libraries included in JWM / Linux
    13. Tools included in JWM / Linux
    14. Scripts and files included in JWM / Linux
      1. Develop Templates
    15. Scripts and files for the JWM / Linux Environment
    16. Aliase in JWM / Linux
    17. Examples
      1. ack
      2. amap
      3. arp-scan
      4. arping
      5. atop
      6. bashtop
      7. bmon
      8. bonnie++
      9. bpytop
      10. busybox
        1. busybox_httpd.sh
      11. bvi
      12. bwm-ng
      13. cdpinfo
      14. cdpr
      15. checksec
      16. collectl
        1. collectl - List detailed output
        2. collectl - List processes in tree view
        3. collectl - View process I/O
        4. collectl - View with timestamps
      17. CPUHog
      18. cpumon
      19. cpustat
      20. darkstat
        1. darkstat.sh
      21. dhtest
      22. dmidecode
      23. dropwatch
      24. dstat
      25. fiemap
      26. fnotifystat
      27. forkstat
      28. eventstat
      29. faultstat
      30. fping
      31. fsmon
      32. fspy
      33. health-check
      34. hdperf
      35. horst
      36. hostscope
      37. hping2
      38. htop
      39. httpry
      40. ibmonitor
      41. iftop
      42. inxi
      43. ifstat
      44. inotifywait / inotifywatch
      45. Intel Performance Counter Monitor
      46. inq
      47. ioping
      48. iotop
      49. iozone
      50. ipaudit
      51. ipband
      52. iperf
      53. iperf3
      54. ipscan
      55. iptraf
      56. iptraf-ng
      57. iptstate
      58. itop
      59. JDiskReport
      60. jnettop
      61. justniffer
      62. latencytop
      63. lxtx
      64. lynis
      65. manServer
      66. memconf
      67. memstat
      68. monitor_system.sh
      69. mpathstat.py
      70. mtr
      71. nano
      72. netcat
      73. netdata
        1. netdata.sh
      74. nethogs
      75. ngrep
      76. nicstat
      77. nload
      78. nmap
      79. netio
      80. netperf
      81. netsniff-ng
      82. nmon
        1. nmonchart
        2. nmonanalyzer
      83. numatop
      84. oprofile
      85. p0f
      86. pagemon
      87. pchar
      88. perftools
        1. exec_snoop_wrapper.sh
        2. open_snoop_wrapper.sh
        3. opensnoop1
      89. pigz
      90. pktstat
      91. powertop
      92. powerstat
      93. procdump
      94. pspy
      95. prtdiag
      96. scanlogd
      97. screen
      98. smartmontools
      99. smem
      100. smemstat
      101. sockperf
      102. sockstat
      103. stress
      104. stress-ng
      105. sysfsutils
      106. sysstat tools
      107. tcpick
      108. t50
      109. tcpdump
      110. tcptrack
      111. testssl.sh
      112. tgkill
      113. tiptop
      114. trace-cmd
      115. wavemon
      116. zmap
    18. Compiling JWM / Linux
      1. make_tools.sh usage
      2. How to add another tool
      3. How to add another OS library
      4. Check for missing libraries
    19. Create your own tar archive
    20. Hints for Compiling the tools
      1. Compiling justniffer with a boost staging area
      2. Strange error messages while linking a binary
      3. Error message : "undefined reference to clock_gettime"
      4. Error message : "error: ‘GENL_ID_GENERATE’ undeclared"
      5. Error message: //lib64/libtinfo.so.5: error adding symbols: DSO missing from command line
      6. Error message:  ... undefined reference to `__builtin_bswap16'
      7. Error message: ... error: called object ‘major’ is not a function or function pointer
      8. Error message: error: /lib64/libncurses.so.5: undefined symbol: _nc_putchar
      9. Error message: /usr/bin/ld: /tmp/ccEmVwXe.o:(.bss+0xc): multiple definition of `timeout'; /tmp/cchQVu2e.o:(.bss+0xc): first defined here
      10. Error message:  ... ld: cannot find -ltinfo
      11. Error message: "...  has no member named ‘emplace_back’ ..."
      12. Error message:  "ISO C++17 does not allow  ...."
    21. Binaries for other OS
    22. Some howtos for Linux internal tools
      1. Using the ftrace interface with shell commands
      2. Using nmcli to view the WLAN status
    23. Sample output of the compile scripts
      1. Example output of compiling the tools in parallel sessions
      2. Example output of compiling the tools sequential
    24. History archive
    25. Download
    26. Links to other resources
    27. Links to libraries neccessary for JWM
    28. Other tools not included
    29. Tools not included anymore



Introduction

JWM / Linux is a collection of various performance and analyze tools for Linux. In addition,  JWM / Linux contains some useful general Linux tools.  These are


JWM / Linux is distributed via tar.gz file so that it can be installed by any user on a Linux machine.

All tools included are compiled and tested under Linux for x86 with 64 Bit (see the list of tested distributions below). For most of the tools the source code is included.

JWM / Linux contains a lot of tools that do the same thing (see here); e.g. there is more then one top replacement, there are multiple tools to monitor the network bandwidth, etc.  Just select the tool that is best for the task you're doing.

Most of the tools included are command line tools for ssh or telnet sessions, some use an internal webserver as user interface, and some are tools with an X Server GUI.

Unfortunately there is no such thing like a "linux binary" that runs on all Linux distributions. Therefore in most cases you must recompile all tools for your distribution.
You can use the script ./compile_scripts/check_for_missing_libs.sh  to check if the libraries required by the tools in JWM / Linux exist in your Linux installation.

Please note that some of the tools included need root privileges (most of them are in the ./sbin directory).

To check for a new version of JWM / Linux and updated documentation visit the JWM / Linux home page http://bnsmb.de/linux/JWM_Linux_documentation.html.


Be aware that this page now heavily uses the "new" html tag <details></details>. Therefor you should use a browser that supports this tag.

<details> Test
If you can see this text and can NOT hide it by clicking on <details> Test above your browser does not support the tag <details></details>.

 

Author

The collection was created by : Bernd Schemmer

email: Bernd.Schemmer@gmx.de

Homepage: http://bnsmb.de

Only small changes necessary to compile the tools on all distributions tested were done for the source code of some tools. All changes done are documented in the entries in the table Tools included in JWM / Linux.




Tools Summary


Find below a list of all tools contained in JWM / Linux sorted by usage:


Usage
Tools
General tools
ack, busybox, bvi, pigz, screen, manServer nano
General Monitoring tools collectl, dstat, hostscope, netdata, oprofile, lxtx, bashtop, bpytop


Hardware information tools dmidecode, inxi, memconf, prtdiaginq, inxi
Software information tools inxi
Security tools lynis, testssl, checksec


Process List
atop, htop, nmon, cpustat
Process monitoring tools forkstat, health-check, procdump, pspy, tgkill


Kernel monitoring tools eventstat, itop, latencytop, numatop, perftools, powertop, powerstat, sysstat tools, tiptop, trace-cmd, faultstat 
CPU Monitoring tools CPUMonIntel Performance Counter Monitor


Memory Monitoring tools smem, smemstat, pagemon, memstat


Network Monitor tools
bwm-ng, darkstat, ibmonitor, iftop, ifstat, ipaud, ipband, iptraf, jnettop, mtr, nethogs, nicstat, nload, pchar, pktstat, bmon, iptstate, iptraf-ng, tcptrack, httpry scanlogd,  sockstat, tcpick,
Network sniffer tools
cdpinfo, cdpr, dhest, ipscan, ngrep, nmap, p0f, justniffer, netsniff-ng, tcpdump, dropwatch, zmap, amap, arp-scan,
Network test tools hping2, t50, sockperf, arping, netcat, fping
WLAN monitoring horst, wavemon


Disk Performance Test bonnie++hdperf, iozone, ioping
Network performance test tools netio, netperf, iperf3, iperf
Performance help tools
CPUHog, stress, stress-ng,


File Info tools
fiemap
File access monitoring tools
fnotifystat, fspy, inotifywait, fsmon
Storage access monitoring tools
iotop
Disk Monitoring tools smartmontools


Tools with WebGUI darkstat, netdata, manServer



History


Date
Version
Comment
10.02.2023/bs
2.8.0
added fsmon 1.8.5
added tgkill

New Versions
new version: ioping 1.2
new version: nano 7.2
new version: inxi 3.3.24
new version: pigz 2.7
new version: memconf 3.16
new version: stress-ng 0.15.03
new version: atop 2.8.1
new version: sysstat 12.7.2
new version: htop 3 3.2.1
new version: tcpdump 4.99.3
new version: dropwatch 1.5.4
new version: iozone 494
new version: busybox 1.36
new version: procdump 1.4
new version: ipscan 3.9.0
new version: netdata 1.37.1
new version: lynis 3.0.8
new version: nmap 7.93



Fixes

- the script to copy the libs created files instead of symbolic links for some libraries -- fixed
- removed files not used anymore from the directory ${JWM_DIR}/lib
- added missing packages to the script add_os_packages.sh

Remove

removed the source code for libpcap

07.11.2021/bs
2.7.1
Fixes

the compile script for hostscope in the previous version did not copy the created binaries to the target directories --fixed

05.11.2021/bs
2.7.0
added amap 5.4
added fping 5.0
added arp-scan 1.10.1
added tcpick 0.2.1

replaced libpcap 1.0.0 with libpcap 1.10.1

New Versions
new version: nano 5.9
new version: inq 9.2
new version: ipscan 3.7.6
new version: htop 3.1.1
new version: stress-ng 0.13.05
new version: tcpdump 4.99.1
new version: dropwatch 1.5.3
new version: sysstat 12.5.4
new version: ack 3.5.0
new version: netdata 1.31
new version: hostscope V8.0
new version: cpustat v0.2.13
new version: bpytop 1.0.63
new version: lynis 3.0.6
new version: dmidecode 3.3
new version: powerstat 0.02.25
new version: busybox 1.33.0
new version: iperf3 3.10
new version: procdump 1.2
new version: iptstate 2.2.7
new version: iozone 3.492
new version: inxi 3.3.07-00
new version: busybox 1.34.1
new version: pigz 2.6
new version: testssl 3.0.6
new version: checksec 2.5.0
new version: bvi 1.4.1
new version: sockperf 3.7


removed: fio (compiling fio for newer kernel does not work anymore)

add_os_packages.sh : code to install the missing packages for Redhat based distributions enhanced



...
see the History archive for the previous updates

27.10.2013/bs 1.0.0 first public release
see also the README file in the tar archive
.


Installation


JWM / Linux is delivered in a compressed tar archive.

The name of the tar archive is

jwml_<archive_version>_<distname>_<distrelease>_<cpu_architecture>_<date>.tar.gz
 
e.g.

jwml_v100_Mint_14_Nadia_3.5.0-17-generic_x86_64_2013-10-26.tar.gz

This is JWM / Linux version v1.0.0 compiled under "MINT 14 Nadia" with kernel patch "3.5.0-17" for "x86_64" created on "2013/10/26".

or

jwml_v226_Fedora_release_23_(Twenty_Three)_4.7.7-100.fc23.x86_64_x86_64_2016-10-26.tar.gz

This is JWM / Linux version 2.2.6 compiled under "Fedora release 23_(Twenty Three)" with kernel patch "4.7.7-100" for "x86_64" created on "2016/10/26".


To use JWM / Linux download the tar file for your distribution and unpack it using tar with the options -xzf in an empty directory.

If there is no archive with precompiled binaries for your distribution just compile the sources yourself.


Note:

Some of the tools included need a fixed target location while building the binaries. To make sure that every user can install the tools the target directory used for the precompiled binaries is /var/tmp/jwm (/var/tmp is writable by everyone on a Linux machine). Therefor you should install the precompiled tools into the directory /var/tmp/jwm to be sure that all included binaries work.

This directory is called ${JWM_DIR} or JWM_DIR in the rest of this document.

To change the target location you should compile the tools.



Requirements for JWM / Linux


The tools in JWM / Linux should run on every modern 64 Bit Linux for x86 . Not so common libraries used by the tools are included in the archive.

In addition, the source code for the tools is included in the archive (if available) so that you can create your own binaries.

The script to execute the compile tools is written in ksh -- therefor /bin/ksh is required to compile the tools.

Some make scripts expect the executable sed to be in /usr/bin but in new Linux distributions sed is in /bin. To get around this issue just create a symoblic link:

sudo ln -s /bin/sed /usr/bin/sed

The same is true for mkdir:

sudo ln -s /bin/mkdir /usr/bin/mkdir



The make scripts from some tools require /usr/bin/python. If /usr/bin/python does not exist anymore in a Linux distribution please create a symbolic link, e.g.:

sudo ln -s /usr/bin/python3 /usr/bin/python


To compile the tools the necessary compile tools (gcc, g++, c++, make, bison, flex, yacc) , the kernel headers, and some library header files must be installed.
If the configure script for a tool fails just check the output of the configure script for missing header files, install them, and restart compiling.

You may use the script ./compile_scripts/ add_os_packages.sh to install the missing OS packages for the supported Linux distributions.


The environment is written for bash or ksh.

See also the notes for the tools in the table with the descriptions and the Hints for Compiling the tools below.


Required GCC version

Some of the tools require a recent version of gcc to compile. Therefor you should update the gcc before compiling the tools.

example:

To update the gcc on Centos 6.x do

sudo yum install centos-release-scl

sudo yum update

sudo yum install devtoolset-7-gcc-c++


Result:

[xtrnaw7@centos69 ~]$ gcc --version | head -1
gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)
[xtrnaw7@centos69 ~]$

[xtrnaw7@centos69 ~]$ scl --list
devtoolset-7
[xtrnaw7@centos69 ~]$

[xtrnaw7@centos69 ~]$ scl enable devtoolset-7 bash
[xtrnaw7@centos69 ~]$

[xtrnaw7@centos69 ~]$ gcc --version | head -1
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
[xtrnaw7@centos69 ~]$


To update the gcc in CentOS 7.x do

sudo yum install centos-release-scl

sudo yum install centos-release-scl

sudo yum install devtoolset-7-gcc-c++

scl enable devtoolset-7 bash



Result:

[xtrnaw7@centos7 compile_scripts]$ scl enable devtoolset-7 bash

[xtrnaw7@centos7 compile_scripts]$ gcc --version
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[xtrnaw7@centos7 compile_scripts]$





Required Libraries


Some of the required libraries are probably not in the standard enabled repositories configured in some distribiutions, e.g:

The package libunistring-devel is in the base repository in CentOS 7.x but in CentOS 8.x it's in the additional repository powertools. Therefor to install the package either enable the repository powertools permanent or install the a package using the command:

sudo dnf --enablerepo=powertools install libunistring-devel





Linux Distributions tested

JWM / Linux was compiled on these Linux Distributions:


JWM Version
Date
Linux Distribution
Kernel version gcc version Supported by
add_os_packages?
Comment
2.8.0
04.02.2023
Fedora 37
6.1.7
gcc (GCC) 12.2.1 20221121 (Red Hat 12.2.1-4)


yes
all packages can be compiled

This is the main distribution for development

2.8.0 04.02.2023 CentOS 9 Stream
5.14.0
gcc (GCC) 11.3.1 20221121 (Red Hat 11.3.1-4)

yes
all packages can be compiled

The epel repositories are neccessary to install all packages required to compile the tools
2.8.0
04.02.2023 CentOS 8 Stream
4.18.0
gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-18)

yes
all packages can be compiled

The epel repositories are neccessary to install all packages required to compile the tools
2.8.0 04.02.2023 CentOS 7
3.10.0
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)

yes
some tools do not compile anymore with the standard gcc in Centos 7.x
Therefor I installed and used the GCC v7 (see Required GCC version)

all packages can be compiled with the GCC v7.x

The epel repositories are neccessary to install all packages required to compile the tools
2.8.0 04.02.2023 CentOS 6.10
2.6.32
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)

yes
some tools do not compile anymore with the standard gcc in Centos 6.x
Therefor I installed and used the GCC v7 (see Required GCC version)

most of the packages can be compiled with the GCC v7.x except these ones:

health-check  (kernel not supported)
fnotifystat  (kernel not supported)
fsmon  (kernel not supported)

justniffer must be compiled manually -- see here

The current version of nmap does not compile in CentOS 6.x - the script will therefor compile one of the previous versions of nmap.

Some tools do not compile in OS with kernel 2.x anymore -- for details see here

The epel repositories are neccessary to install all packages required to compile the tools
2.8.0
04.02.2023 AlmaLinux 9
RockyLinux 9
(= RHEL 9.x)
5.14.0
gcc (GCC) 11.3.1 20220421 (Red Hat 11.3.1-2)

yes
The epel repositories are neccessary to install all packages required to compile the tools
2.8.0
04.02.2023 AlmaLinux 8
RockyLinux 8
(= RHEL 8.x)
4.18.0
gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-16)

yes
The epel repositories are neccessary to install all packages required to compile the tools







2.8.0 04.02.2023 Debian 10 4.19.0
gcc (Debian 8.3.0-6) 8.3.0

yes all packages can be compiled,

2.8.0
04.02.2023 Debian 11
5.10.0
gcc (Debian 10.2.1-6) 10.2.1 20210110

yes
all packages can be compiled, but:

iftop  - can not be compiled with gcc 10 -- use gcc 9 instead








2.8.0 04.02.2023 Ubuntu 16.04.7 LTS
4.15.0
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609

yes
all packages can be compiled but
 
hostscope 8.0 needs a more recent version of gcc than 5.4.0 - the compile script will therefor compile the version V4.0

2.8.0
04.02.2023 Ubuntu 22.04 LTS
5.15.0
gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0

yes
all packages can be compiled
2.8.0 04.02.2023 Ubuntu_20.04.1 LTS (Server)
5.4.0
gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0

yes
all packages can be compiled
2.8.0 04.02.2023 Mint 19 4.15.0
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0

yes
all packages can be compiled







2.8.0 04.02.2023 OpenSuse Tumbleweed
6.1.8
gcc (SUSE Linux) 12.2.1 20230124
yes
all packages can be compiled except these ones:

horst  (see here)
iptraf

2.8.0
04.02.2023 OpenSUSE Leap 15.4



2.8.0 04.02.2023 OpenSUSE Leap 15.2
5.3.18
gcc (SUSE Linux) 7.5.0

yes
all packages can be compiled except these ones:

horst  (see here)
iptraf 
procdump








2.8.0 04.02.2023 Manjaro (ArchLinux)
5.9.11
gcc (GCC) 11.2.0

yes
all packages can be compiled excetp these ones:

oprofile








2.8.0
04.02.2023 Slackware 15.0
5.15.9
gcc (GCC) 11.2.0
no
all packages can be compiled
2.8.0 04.02.2023 Slackware 14.2
4.4.240
gcc (GCC) 5.5.0

no
all packages can be compiled but:

atop v2.6 can not becompiled in Slackware (see here) - the compile script will therefor compile the version V2.4
hostscope 8.0 needs a more recent version of gcc than 5.5.0 - the compile script will therefor compile the version V4.0

Missing packages for Slackware can be found here:

https://pkgs.org/

2.8.0
04.02.2023 Raspbian GNU/Linux 10 (buster)
5.10.103
gcc (Raspbian 8.3.0-6+rpi1) 8.3.0


all packages can be compiled except these ones:

IntelPCM (this tool is only for Intel CPUs)
justniffer (architecture not supported by make scripts)
numatop (this tool is only for Intel CPUs)



Old Linux Distributions tested (History)

The old versions of JWM / Linux were compiled on these Linux Distributions:

JWM / Linux distributions tested

JWM Version
Date
Linux Distribution
Kernel version gcc version Supported by
add_os_packages?
Comment
2.7.0

Fedora 34
5.4.11
gcc (GCC) 11.2.1 20210728 (Red Hat 11.2.1-1)

yes
all packages can be compiled; this is the main distribution for development

2.7.0
CentOS 8
4.18.0
gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1)

yes
all packages can be compiled

The epel repositories are neccessary to install all packages required to compile the tools
2.7.0
CentOS 7
3.10.0
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)



yes
some tools do not compile anymore with the standard gcc in Centos 7.x
Therefor I installed and used the GCC v7 (see Required GCC version)

all packages can be compiled with the GCC v7.x

The epel repositories are neccessary to install all packages required to compile the tools
2.7.0
CentOS 6.10 2.6.32
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
yes
some tools do not compile anymore with the standard gcc in Centos 6.x
Therefor I installed and used the GCC v7 (see Required GCC version)

most of the packages can be compiled with the GCC v7.x except these ones:

health-check  (kernel not supported)
fnotifystat  (kernel not supported)

justniffer must be compiled manually -- see here

some tools do not compile in OS with kernel 2.x anymore -- for details see here

The epel repositories are neccessary to install all packages required to compile the tools
2.7.0

AlmaLinux 8 (= RHEL 8.x)
RockyLinux 8 (= RHEL 8.x)
4.18.0
 gcc (GCC) 8.4.1 20200928 (Red Hat 8.4.1-1)
yes
The epel repositories are neccessary to install all packages required to compile the tools







2.7.0
Debian 10 4.19.0
gcc (Debian 8.3.0-6) 8.3.0

yes all packages can be compiled,

2.7.0
Ubuntu 16.04.7 LTS
4.15.0
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609

yes
all packages can be compiled but
 
hostscope 8.0 needs a more recent version of gcc than 5.4.0 - the compile script will therefor compile the version V4.0

2.7.0
Ubuntu_20.04.1 LTS (Server)
5.4.0
gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
yes
all packages can be compiled
2.7.0
Mint 19 4.15.0 gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
packages can







2.7.0
OpenSuse Tumbleweed
5.14.14
gcc (SUSE Linux) 11.2.1 20210816

yes
all packages can be compiled except these ones:

horst  (see here)
iptraf

2.7.0
OpenSUSE Leap 15.2
5.3.18
gcc (SUSE Linux) 7.5.0

yes
all packages can be compiled except these ones:

horst  (see here)
iptraf 









2.7.0
Manjaro (ArchLinux)
5.9.11
gcc (GCC) 11.1.0

yes
all packages can be compiled








2.7.0
Slackware 14.2
4.4.240
gcc (GCC) 5.5.0

no
all packages can be compiled but:

atop v2.6 can not becompiled in Slackware (see here) - the compile script will therefor compile the version V2.4
hostscope 8.0 needs a more recent version of gcc than 5.5.0 - the compile script will therefor compile the version V4.0

Missing packages for Slackware can be found here:

https://pkgs.org/








2.7.0
Raspberry OS
5.10.63-v7l+
gcc (Raspbian 8.3.0-6+rpi1) 8.3.0
no
all packages can be compiled except these ones:

IntelPCM (this tool is only for Intel CPUs)
justniffer (architecture not supported by the make scripts)
numatop (this tool is only for Intel CPUs)

2.6.0
25.12.2020
Fedora 33
5.9.15
gcc (GCC) 10.2.1 20201125 (Red Hat 10.2.1-9)

yes
all packages can be compiled; this is the main distribution for development

2.6.0 25.12.2020 CentOS 8
4.18.0
gcc (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5)
yes
all packages can be compiled

2.6.0 25.12.2020 CentOS 7
3.10.0
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
yes
some tools do not compile anymore with the standard gcc in Centos 7.x
Therefor I installed and used the GCC v7 (see Required GCC version)

all packages can be compiled with the GCC v7.x

2.6.0 25.12.2020 CentOS 6.10 2.6.32 gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
yes
some tools do not compile anymore with the standard gcc in Centos 6.x
Therefor I installed and used the GCC v7 (see Required GCC version)

all packages can be compiled with the GCC v7.x except these ones:

health-check  (kernel not supported)
fnotifystat  (kernel not supported)

justniffer must be compiled manually -- see here

some tools do not compile in OS with kernel 2.x anymore -- for details see here








2.6.0 26.12.2020 Mint 19
4.15.0
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
yes
all packages can be compiled
2.6.0 26.12.2020 Debian 10 4.19.0
gcc (Debian 8.3.0-6) 8.3.0

yes all packages can be compiled, except these packages:

sockperf

2.6.0 26.12.2020
Ubuntu 16.04.7 LTS
4.15.0
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609

yes
all packages can be compiled

2.6.0 26.12.2020 Ubuntu_20.04.1 LTS (Server)
5.4.0
gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0

yes
all packages can be compiled







2.6.0 26.12.2020
OpenSuse Tumbleweed
5.10.1
gcc (SUSE Linux) 10.2.1 20201202 [revision e563687cf9d3d1278f45aaebd03e0f66531076c9]

yes
all packages can be compiled except these ones:

horst  (see here)
iptraf

2.6.0 26.12.2020 OpenSUSE Leap 15.2
5.3.18
gcc (SUSE Linux) 7.5.0

yes
all packages can be compiled except these ones:

horst  (see here)
iptraf 








2.6.0 26.12.2020 Manjaro (ArchLinux)
5.9.11
gcc (GCC) 10.2.0

yes
all packages can be compiled

2.6.0 26.12.2020 Slackware 4.4.240
gcc (GCC) 5.5.0
no
all packages can be compiled except these ones

atop v2.6 (use atop V2.4, see here)

Missing packages can be find here:

https://pkgs.org/








2.6.0 26.12.2020
Raspberry OS
5.4.79-v7l+
gcc (Raspbian 8.3.0-6+rpi1) 8.3.0
no
all packages can be compiled except these ones:

IntelPCM (this tool is only for Intel CPUs)
justniffer (architecture not supported by make scripts)
numatop (this tool is only for Intel CPUs)

2.5.0
11.09.2020
Fedora 32
5.7.17
gcc (GCC) 10.2.1 20200723 (Red Hat 10.2.1-1)
yes
all packages can be compiled; this is the main distribution for development

2.5.0 11.09.2020 CentOS 8
4.18.0

gcc (GCC) 8.3.1 20191121 (Red Hat 8.3.1-5)
yes
all packages can be compiled

2.5.0
11.09.2020 CentOS 7
3.10.0
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39)
yes
all packages can be compiled except these packages:

t50


2.5.0 11.09.2020 CentOS 6.10 2.6.32 gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
yes
some tools do not compile anymore with the standard gcc in Centos 6.9
Therefor I installed and used the GCC v7 (see Required GCC version)

all packages can be compiled except these ones:

health-check  (kernel not supported)
fnotifystat  (kernel not supported)

justniffer must be compiled manually -- see here








2.5.0 11.09.2020 Mint 19
4.15.0
gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0

yes
all packages can be compiled
2.5.0 11.09.2020 Debian 10 4.19.132
gcc (Debian 8.3.0-6) 8.3.0

yes all packages can be compiled, except these packages:

sockperf

2.5.0
21.09.2020
Ubuntu 16.04.7 LTS
4.15.0
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609
yes
all packages can be compiled
2.5.0
21.09.2020
Ubuntu_20.04.1 LTS (Server)
5.4.0
gcc (Ubuntu 9.3.0-10ubuntu2) 9.3.0

yes
all packages can be compiled







2.5.0 11.09.2020 OpenSuse Tumbleweed
5.8.4
gcc (SUSE Linux) 10.2.1 20200825 [revision c0746a1beb1ba073c7981eb09f55b3d993b32e5c]
yes
all packages can be compiled except these ones:

horst
hostscope
iptraf

compiling horst and hostscope fails with error messages like this:

display.c:435:11: error: lvalue required as left operand of assignment
  435 |  ESCDELAY = 25; /* we don't use ESC sequences */

A workaround for this error is to comment the lines with the "invalid" assignments

2.5.0
13.09.202
OpenSUSE Leap 15.2
5.3.18
gcc (SUSE Linux) 7.5.0

yes
all packages can be compiled except these ones:

horst
hostscope
iptraf

compiling horst and hostscope fails with error messages like this:

display.c:435:11: error: lvalue required as left operand of assignment
  435 |  ESCDELAY = 25; /* we don't use ESC sequences */

A workaround for this error is to comment the lines with the "invalid" assignments







2.5.0 11.09.2020 Antergos (ArchLinux)
5.8.7
gcc (GCC) 10.2.0

yes
all packages can be compiled

To compile some of the tools a modification of a source file is neccessary :

#include <sys/sysmacros.h>

must be added to some of the source files (for details why see below)

Details:
atop add the line

#include <sys/sysmacros.h>

to the file

showsys.c

fio add the line

#include <sys/sysmacros.h>

to the file

os/os-linux.h

fnotifystat add the line

#include <sys/sysmacros.h>

to the file

fnotifystat.c


Note [04.01.2019]

These modifications are also neccesary for other Linux distributions with a recent gcc version
so they are done by the compile scripts in JWM / Linux now.

Note [16.06.2019]

fio will not compile anymore due to a change in the GLUSTER api (Note: you can install the fio package from the ArcLinux repositories if required - see also here: https://github.com/axboe/fio/issues/781)

Note [04.09.2020]

fio compile works again


2.5.0
11.09.2020 Slackware
4.4.14
gcc (GCC) 5.3.0

no
all packages can be compiled

Missing packages can be find here:

https://pkgs.org/

2.3.0
16.06.2019
Fedora 30
5.1.8
gcc (GCC) 9.1.1 20190503 (Red Hat 9.1.1-1)
yes
all packages can be compiled; this is the main distribution for development since 01.01.2019

2.3.0 16.06.2019
RedHat 7 3.10.0
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36)

yes
all packages can be compiled except these ones:

t50

2.3.0 16.06.2019 Centos 6.10 2.6.32
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)
yes
some tools do not compile anymore with the standard gcc in Centos 6.9
Therefor I installed and used the GCC v7:

gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)

(see Required GCC version)

all packages can be compiled except these ones:

health-check  (kernel not supported)
fnotifystat  (kernel not supported)

justniffer must be compiled manually -- see here








2.3.0 16.06.2019 Mint 19
4.15.0
gcc (Ubuntu 7.4.0-1ubuntu1~18.04) 7.4.0
yes
all packages can be compiled
2.3.0 16.06.2019 Debian 3.16.0
gcc (Debian 4.9.2-10+deb8u2) 4.9.2
yes all packages can be compiled







2.3.0 20.06.2019
OpenSuse LEAP
42.3
4.4.180
gcc (SUSE Linux) 4.8.5
yes
all packages can be compiled except these ones:

t50

2.3.0
20.06.2019
OpenSUSE LEAP 15.2
4.12.14
gcc (SUSE Linux) 7.4.1 20190424 [gcc-7-branch revision 270538]

gcc (SUSE Linux) 8.2.1 20180831 [gcc-8-branch revision 264010]


yes
all packages can be compiled except these ones:

horst
hostscope
iptraf
justniffer
tracebox

2.3.0
16.06.2019
OpenSuse Tumbleweed
 5.1.7
gcc (SUSE Linux) 9.1.1 20190520 [gcc-9-branch revision 271396]
yes
all packages can be compiled except these ones:

horst
hostscope
iptraf
justniffer
tracebox









2.3.0 16.06.2019 Antergos (ArchLinux)
5.1.9
gcc (GCC) 8.3.0
yes
To compile some of the tools a modification of a source file is neccessary :

#include <sys/sysmacros.h>

must be added to some of the source files (for details why see below)

Details:
atop add the line

#include <sys/sysmacros.h>

to the file

showsys.c

fio add the line

#include <sys/sysmacros.h>

to the file

os/os-linux.h

fnotifystat add the line

#include <sys/sysmacros.h>

to the file

fnotifystat.c



Note [04.01.2019]

These modifications are also neccesary for other Linux distributions with a recent gcc version
so they are done by the compile scripts in JWM / Linux now.

Note [16.06.2019]

fio will not compile anymore due to a change in the GLUSTER api (Note: you can install the fio package from the ArcLinux repositories if required - see also here: https://github.com/axboe/fio/issues/781)







2.2.11
22.08.2018
Fedora 27 4.17.14
gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-6)
yes
all packages can be compiled; this is the main distribution for development as of 19.08.2018
2.2.11 22.08.2018
RedHat 7 3.10.0
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
yes
all packages can be compiled except these ones:

t50

2.2.11 22.08.2018
Centos 6.9 2.6.32
gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)

installed per default but not used is:

gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23)

yes
some tools do not compile anymore with standard gcc in Centos 6.9
Therefor I installed and used the GCC v7:

gcc (GCC) 7.3.1 20180303 (Red Hat 7.3.1-5)

(see Required GCC version)

all packages can be compiled except these ones:

health-check  (kernel not supported)
fnotifystat  (kernel not supported)

justniffer must be compiled manually -- see here

2.2.11
22.08.2018
Mint 19
4.15.0
gcc (Ubuntu 7.3.0-16ubuntu3) 7.3.0
yes
all packages can be compiled
2.2.11
25.08.2018
OpenSuse LEAP
4.4.104
gcc (SUSE Linux) 4.8.5
yes
all packages can be compiled except these ones:

t50

2.2.11
25.08.2018
Debian
3.16.0
gcc (Debian 4.9.2-10+deb8u1) 4.9.2
yes
all packages can be compiled
2.2.11
25.08.2018
Antergos (ArchLinux)
4.18.4.0
gcc (GCC) 8.2.0

yes
all packages can be compiled except these ones

unfs3

To compile some of the tools a modification of a source file is neccessary :

#include <sys/sysmacros.h>

must be added to some of the source files (for details why see below):

Details:
atop add the line

#include <sys/sysmacros.h>

to the file

showsys.c

fio add the line

#include <sys/sysmacros.h>

to the file

os/os-linux.h

fnotifystat add the line

#include <sys/sysmacros.h>

to the file

fnotifystat.c




2.2.11
29.08.2018
Fedora 23
4.8.13
gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
yes
all packages can be compiled
2.2.10 26.12.201 Fedora 27 4.14.7 gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2) yes all packages can be compiled; this is the main distribution for development as of 26.12.2017
2.2.10 26.12.201 RedHat 7 3.10.0 gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) yes all packages can be compiled except these ones:

t50
2.2.10 26.12.201 entos 6.9 2.6.32 gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18) yes all packages can be compiled except these ones:

t50

health-check  (kernel not supported)
fnotifystat  (kernel not supported)














2.2.9 08.10.2017 Antergos (Arch Linux based Distribution) 4.13.4 gcc (GCC) 7.2.0 yes all packages can be compiled
2.2.9 08.10.2017 Fedora 25 4.12.14 gcc version 6.4.1 20170727 (Red Hat 6.4.1-1) (GCC) yes all packages can be compiled; this is the main distribution for development as of 14.08.2017
2.2.9 08.10.2017 Fedora 23 4.8.13 gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6) yes all packages can be compiled
2.2.9 08.10.2017 RHEL 7.4 (Maipo) 3.10.0 gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-16) yes all packages can be compiled
2.2.9 08.10.2017 Open Suse LEAP 42 4.4.87
gcc (SUSE Linux) 4.8.5
yes all packages can be compiled
2.2.9 08.10.2017 Ubuntu 16.04.3 LTS 4.10.0 gcc (Ubuntu 5.4.0-06ubuntu1-16.04.4) 5.4.0  20160609 yes all packages can be compiled
2.2.9
08.10.2017
Linux Mint 18
4.4.0
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
yes
all packages can be compiled
2.2.9
08.10.2017
Debian 8.6
3.16.0
gcc (Debian 4.9.2-10) 4.9.2
yes
all packages can be compiled except these ones:

t50

2.2.9 08.10.2017 Centos (RHEL 6.9) 2.6.32 gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18) yes all packages can be compiled except these ones:

health-check  (kernel not supported)
fnotifystat  (kernel not supported)

t50 can not be compiled with the default gcc from this Linux distribution

2.2.8 07.04.2017 Fedora 25 4.9.13
yes all packages can be compiled; this is the main distribution for development as of 07.04.2017
2.2.8 08.04.2017 Apricity (Arch Linux based Distribution) 4.10.8
yes all packages can be compiled
2.2.8 08.04.2017 Mint 17 3.19.0
yes all packages can be compiled
2.2.8 08.04.2017 OpenSUSE 12 3.7.10
yes all packages can be compiled except these ones:

horst
hostscope (can be compiled with a current gcc version)
  Note:  Use the binaries from the tar files ${JWM_DIR}/hostscope_jwm_rhel6.tar for this distribution

2.2.8
07.04.2017
Centos 6.9
2.6.32

yes
all packages can be compiled except these ones:

health-check  (kernel not supported)
fnotifystat  (kernel not supported)
hostscope (can be compiled with a current gcc version)
  Note:  Use the binaries from the tar files ${JWM_DIR}/hostscope_jwm_rhel6.tar for this distribution
t50 can not be compiled with the default gcc from this Linux distribution




JWM Version
Date
Linux Distribution
Kernelversion Supported by
add_os_packages?
Comment
2.2.7 25.12.2016 Fedora 23 4.8.13 yes all packages can be compiled; this is the main distribution for development as of 27.12.2016
2.2.7 25.12.2016 Fedora 24 4.8.14 yes all packages can be compiled
2.2.7 27.12.2016 Fedora 25 4.8.15 yes all packages can be compiled
2,2.7 25.12.2016 Mint 18 4.4.0 yes all packages can be compiled
2.2.7 26.12.2016 Mint 17 3.19.0 yes all packages can be compiled
2.2.7 27.12.2016 Debian 8 3.16.0 yes all packages can be compiled
2.2.7 25.12.2016 OpenSUSE 42.2 4.4.36 yes all packages can be compiled
2.2.7 26.12.2016 OpenSUSE 12.3 3.7.10 yes all packages can be compiled
2.2.7 26.12.2016 OpenSUSE 13.2 3.16.6 yes all packages can be compiled
2.2.7 25.12.2016 Oracle Linux Server release 6.5 3.8.13 yes
all packages can be compiled except these ones:

health-check  (kernel not supported)
fnotifystat  (kernel not supported)
hostscope (can be compiled with a current gcc version)
  Note:  Use the binaries from the tar files ${JWM_DIR}/hostscope_jwm_rhel6.tar for this distribution

to compile bmon you must download, compile, and install libnl3 and libconfuse (both libraries are not in the repositories for this distribution)

to compile justniffer you must download boost (the boost in the repositories for this distribution is to old)

see also Libraries neccessary for JWM
2.2.7 26.12.2016 Red Hat Enterprise Linux Workstation release 6.8 (Santiago) 2.6.32 yes
all packages can be compiled except these ones:

health-check  (kernel not supported)
fnotifystat  (kernel not supported)
hostscope  (can be compiled with a current gcc version)
  Note:  Use the binaries from the tar files ${JWM_DIR}/hostscope_jwm_rhel6.tar for this distribution

to compile justniffer you must download boost (the boost in the repositories for this distribution is to old)

t50 only compiles with a current version of gcc; the gcc 4.4.7 does not like pragma statements inside of functions

see also Libraries neccessary for JWM
2.2.7 30.12.2016 Fedora 13 2.6.33 yes all packages can be compiled except these ones:

health-check  (kernel not supported)
fnotifystat  (kernel not supported)
hostscope (can be compiled with a current gcc version)
  Note:  Use the binaries from the tar files ${JWM_DIR}/hostscope_jwm_rhel6.tar for this distribution

to compile bmon you must download, compile, and install libnl3  (the libraries are not in the repositories for this distribution)

to compile justniffer you must download boost (the boost in the repositories for this distribution is to old)

to compile oprofile and stress-ng a new version of the binutils is required

t50 only compiles with a current version of gcc; the gcc 4.4.7 does not like pragma statements inside of functions

see also Libraries neccessary for JWM




add_os_packages.sh - Script to add missing packages

The script ./compile_scripts/add_os_packages.sh can be used to install the missing packages to compile all tools in JWM / Linux.

Usage:

[26.12.2016 16:19 ] ### The logfile used is /var/tmp/add_os_packages.sh.log
 add_os_packages.sh

 Function: add missing OS packages for compiling JWM / Linux
 
 Usage:    add_os_packages.sh [-v|--verbose] [-q|--quiet] [-f|--force] [start|stop|restart|status]

 Parameter:
   -v - verbose mode
   -q - quiet mode
   -f - force execution
   -d - dry-run mode, only print the commands to execute

[26.12.2016 16:19 ] ### The logfile used was /var/tmp/add_os_packages.sh.log
[26.12.2016 16:19 ] ### add_os_packages.sh ended at Mon Dec 26 16:19:17 CET 2016
[xtrnaw7@t540p /var/tmp/jwm/compile_scripts]$

add_os_packages.sh supports Linux distributions based on

add_os_packages.sh installs all packages that are missing after an initial installation of the distribution without any modifications.

The script asks the user for confirmation before starting the installation or changing anything.

Note:

The scripts assumes a "standard installation" of the Linux distribution  - so there may be other libraries or tools missing to compile all tools . Just check the error messages of the compile script and install the missing packages manually.



Using JWM / Linux




Creating a JWM / Linux session


To use JWM / Linux change to the directory with JWM / Linux (the JWM_DIR) and issue

. ./init_session

e.g.

screenshot:





[xtrnaw7@t15g /var/tmp/jwm/compile_scripts]$ cd /var/tmp/jwm
[xtrnaw7@t15g /var/tmp/jwm]$ . ./init_session
JWM_DIR is "/var/tmp/jwm"
[bash] Starting environment for "JMW / Linux v280 created on Fedora_release_37_(Thirty_Seven) 6.1.7-200.fc37.x86_64 x86_64 at 2023-02-04" ...
[bash] Initializing JWM environment ...
[bash] JWM environment initialized. The tools available are:
/var/tmp/jwm/bin:
amap             cifsiostat       get_device  ibmonitor     nano       ocount               pit_server   smemstat        tcpick                zblocklist
amap6            cpulimit         get_driver  ifstat        ncat       opannotate           plugins      sockperf        tcptrack              ziterate
amapcrap         cpumon           get-iab     inotifywait   ndiff      oparchive            powerstat    sockstat        tgkill                zmap
arp-fingerprint  cpustat          get_module  inotifywatch  netio      op-check-perfevents  procdump     stress          tiptop                ztee
arp-scan         dlist_test       get-oui     iostat        netperf    operf                protoc       stress-ng       total
atop             dropwatch        hdperf      iozone        netserver  opgprof              prtdiag      sysstat         trace-cmd
atopsar          dropwatch.1.5.0  horst       iperf3        nicstat    ophelp               prtdiag.cfg  systool         trace-graph
bmon             dstat            horst.sh    jnettop       nload      opimport             ptiptop      tapestat        trace-view
bmore            faultstat        hostscope   justniffer    nmap       opjitconv            rawtime      tcpdump         uninstall_ndiff
bon_csv2html     fiemap           hping2      kernelshark   nmapfe     opreport             rnano        tcpdump.4.99.0  uninstall_zenmap.org
bon_csv2txt      fileop           htop        makelocal     nmon       pcap-config          rvnamed      tcpdump.4.99.1  unpigz
bvi              fsmon            htop2       memstat       nmonchart  pidstat              rvnamed-ng   tcpdump.4.99.3  wavemon
bwm-ng           fspy             httpry      mpstat        nping      pigz                 screen       tcpflow         xnmap

/var/tmp/jwm/bin1:
CPUhog.jar  inq             inq.LinuxI386  iperf   ipscan-linux64-3.9.0.jar  latencytop-tui  pchar_for_linux26
CPUhog.sh   inq.LinuxAMD64  iodump         ipscan  latencytop-gui            lxtx            pspy64

/var/tmp/jwm/sbin:
arping        darkstat     forkstat      ioping       iptraf-ng   netsniff-ng  pcm-core.x    pcm-sensor.x  smartctl  update-smart-drivedb  ztee
astraceroute  dhtest       fping         ipaudit      iptstate    ngrep        pcm-memory.x  pcm-tsx.x     smartd    vpddecode
biosdecode    dmidecode    health-check  ipband       latencytop  numatop      pcm-msr.x     pcm.x         t50       zblocklist
bonnie++      eventstat    hostscoped    ipstrings    mausezahn   p0f          pcm-numa.x    pktstat       tcpdump   zcav
bpfc          flowtop      ifpps         iptraf       mtr         pagemon      pcm-pcie.x    powertop      trafgen   ziterate
cdpr          fnotifystat  iftop         iptraf.fc31  nethogs     pchar        pcm-power.x   scanlogd      unfsd     zmap

/var/tmp/jwm/scripts:
ack                              collectl_top_io                      hostscope.sh            manServer_107_ma1.pl  opensnoop1
ack-2.24-single-file.pl          compile_justniffer_with_boost.sh     init_infoscale.include  manServer_107.pl      open_snoop_wrapper.sh
ack-v3.5.0                       darkstat.sh                          init_infoscale.sh       manServer.pl          rtp_task_desc.inp
addtimestamp                     exec_snoop_wrapper.sh                inxi                    manServer.pl.org      show_kernel_memory
bashtop                          execute_on_all_hosts.sh              iotop                   memconf               smem
bpytop                           execute_osbuild_check_tasks.include  iotop-0.4.4             memconf-v3.15.pl      start_stop_manserver.sh
busybox_httpd.sh                 execute_osbuild_check_tasks.sh       iotop-0.6               memconf.v3.16.pl      testssl.sh
cdpinfo                          execute_scripts.sh                   iotop.sh                mle.sh                view_vmware_server_configuration.sh
check_network_adapter_config.sh  execute_tasks.sh                     itop                    monitor_system.sh
collectl                         fio_tests.sh                         jdiskreport             mpathstat.py
collectl_top                     getroute.sh                          jwm.sh                  netdata.sh

Additional general Linux tools are in the directory /var/tmp/jwm/busybox

Additional performance monitoring tools are in /var/tmp/jwm/perf-tools

[JWM session] [xtrnaw7@t15g /var/tmp/jwm]$




Notes:

init_session sets the environment variables PATH, LD_LIBRARY_PATH, MANPATH, PYTHONPATH, and PS1 and defines some useful aliase.

If you want to use the already installed Linux libraries instead of the libraries contained in JWM / Linux set and export the variable LD_LIBRARY_PATH before calling init_session.



Using JWM commands via jwm.sh


To only execute a single command from the JWM / Linux environment without starting a JWM / Linux shell you can use the script ${JWM_DIR}/scripts/jwm.sh.

jwm.sh creates a temporary JWM / Linux environment and then executes the command. The usage for jwm.sh is

[xtrnaw7@t540p /var/tmp/jwm]$ /var/tmp/jwm/scripts/jwm.sh -h
[18.11.2016 17:08 ] ### jwm.sh started at Fri Nov 18 17:08:53 CET 2016
[18.11.2016 17:08 ] ### The logfile used is /var/tmp/jwm.sh.log
 jwm.sh

 Function: exeucte a command in a temporary JWM / Linux environment
 
 Usage:    jwm.sh [-v|--verbose] [-q|--quiet] [-f|--force] command [parameter]

 Parameter:
   -v - verbose mode
   -q - quiet mode
   -f - force execution

[18.11.2016 17:08 ] ### The logfile used was /var/tmp/jwm.sh.log
[18.11.2016 17:08 ] ### jwm.sh ended at Fri Nov 18 17:08:53 CET 2016
[xtrnaw7@t540p /var/tmp/jwm]$


You should create a symbolic link for jwm.sh in a directory that is in your standard path, e.g

sudo ln -s /var/tmp/jwm/scripts/jwm.sh /usr/bin/jwm

Then you can use jwm.sh like this

[xtrnaw7@t540p /var/tmp/jwm]$  jwm  nicstat 1 1
[18.11.2016 17:29 ] ### jwm started at Fri Nov 18 17:29:22 CET 2016
[18.11.2016 17:29 ] ### The logfile used is /var/tmp/jwm.log
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
17:29:22  enp0s25   12.01    3.06    9.34    6.22  1316.5   504.8  0.01   0.00
17:29:22       lo    2.74    2.74   41.09   41.09   68.30   68.30  0.00   0.00
17:29:22   wlp4s0    0.00    0.00    0.00    0.00   112.5   145.5  0.00   0.00
[18.11.2016 17:29 ] ### The logfile used was /var/tmp/jwm.log
[18.11.2016 17:29 ] ### jwm ended at Fri Nov 18 17:29:22 CET 2016
[xtrnaw7@t540p /var/tmp/jwm]$



Note: Use jwm.sh with the parameter -v to get some more information for trouble shooting:
[xtrnaw7@t540p /var/tmp/jwm]$ jwm -v nicstat 1 1
[29.08.2018 13:32 ] ### jwm started at Wed Aug 29 13:32:54 CEST 2018
[29.08.2018 13:32 ] ### The logfile used is /var/tmp/jwm.log
[29.08.2018 13:32 ] INFO: SCRIPTNAME is "jwm"
[29.08.2018 13:32 ] INFO: SCRIPTDIR is "/tools/scripts"
[29.08.2018 13:32 ] INFO: REAL_SCRIPTNAME is "/data/tools/scripts/jwm"
[29.08.2018 13:32 ] INFO: REAL_SCRIPTDIR is "/data/tools/scripts"
[29.08.2018 13:32 ] INFO: WORKING_DIR is "/var/tmp/jwm"
[29.08.2018 13:32 ] INFO: RUNNING_IN_TERMINAL_SESSION is "0" (0 = yes, 1 = no)
[29.08.2018 13:32 ] INFO: CUR_USER_ID is "1000"
[29.08.2018 13:32 ] INFO: CUR_USER_NAME is "xtrnaw7"
[29.08.2018 13:32 ] INFO: CUR_GROUP_ID is "1000"
[29.08.2018 13:32 ] INFO: CUR_GROUP_NAME is "xtrnaw7"
[29.08.2018 13:32 ] INFO: ACTION is ""
[29.08.2018 13:32 ] INFO: Using the JWM directory "/var/tmp/jwm"
[29.08.2018 13:32 ] INFO: PATH is now /var/tmp/jwm/scripts:/var/tmp/jwm/bin:/var/tmp/jwm/sbin:/tools/scripts:/tools/bin:/tools/sbin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/xtrnaw7/.local/bin:/home/xtrnaw7/bin
[29.08.2018 13:32 ] INFO: LD_LIBRARY_PATH is now /var/tmp/jwm/lib:
[29.08.2018 13:32 ] INFO: MANPATH is now /var/tmp/jwm/man:/tools/man:
[29.08.2018 13:32 ] INFO: PYTHONPATH is now :/var/tmp/jwm/lib/python2.7/site-packages/
[29.08.2018 13:32 ] INFO: Executing now "nicstat 1 1" ...
    Time      Int   rKB/s   wKB/s   rPk/s   wPk/s    rAvs    wAvs %Util    Sat
13:32:54  enp0s25   20.84    8.38   18.73   12.40  1139.6   692.1  0.02   0.00
13:32:54       lo    0.00    0.00    0.01    0.01   77.56   77.56  0.00   0.00
[29.08.2018 13:32 ] ### The logfile used was /var/tmp/jwm.log
[29.08.2018 13:32 ] ### jwm ended at Wed Aug 29 13:32:54 CEST 2018
[xtrnaw7@t540p /var/tmp/jwm]$


 




JWM / Linux manServer


JWM / Linux contains a simple manServer that can be used to view the man pages in a web browser that listens on localhost:7777.

To use it start a JWM / Linux session

cd /var/tmp/jwm

. init_session


and start the JWM / Linux manServer

[JWM session] [xtrnaw7@t540p /var/tmp/jwm/scripts]$ start_stop_manserver.sh start
[04.11.2016 21:01 ] ### start_stop_manserver.sh started at Fri Nov  4 21:01:38 CET 2016
[04.11.2016 21:01 ] ### The logfile used is /var/tmp/start_stop_manserver.sh.log
[04.11.2016 21:01 ] Starting the JWM manserver ...
export MANPATH="/var/tmp/jwm/share/man:/tools/man::/var/tmp/jwm/perf-tools/man"   
nohup /var/tmp/jwm/scripts/manServer.pl -s 7777 >/tmp/manserver_jwm.log 2>&1 &
echo $! >"/tmp/manserver_jwm.pid"
[04.11.2016 21:01 ] Use "http://localhost:7777" or "http://t540p:7777" to connect to the JWM manserver
[04.11.2016 21:01 ] ### The logfile used was /var/tmp/start_stop_manserver.sh.log
[04.11.2016 21:01 ] ### start_stop_manserver.sh ended at Fri Nov  4 21:01:38 CET 2016
[JWM session] [xtrnaw7@t540p /var/tmp/jwm/scripts]$



Now you can use your Web Browser to view the man pages, e.g.




To add other man pages to the JWM / Linux manServer and use another port use :

MANPATH=$MANPATH:/usr/share/man ./start_stop_manserver.sh --port 7788 start


example
[JWM session] [xtrnaw7@t540p /var/tmp/jwm]$ MANPATH=$MANPATH:/usr/share/man start_stop_manserver.sh --port 7788 start
[12.01.2019 17:23 ] ### start_stop_manserver.sh started at Sat Jan 12 17:23:05 CET 2019
[12.01.2019 17:23 ] ### The logfile used is /var/tmp/start_stop_manserver.sh.log
[12.01.2019 17:23 ] Starting the JWM manserver ...
export MANPATH="/var/tmp/jwm/share/man:/tools/man::/var/tmp/jwm/perf-tools/man:/usr/share/man"   
nohup /var/tmp/jwm/scripts/manServer.pl -s 7788 >/tmp/jwm_manserver_7788.log 2>&1 &
echo $! >"/tmp/jwm_manserver_7788.pid"
[12.01.2019 17:23 ] Use "http://localhost:7788" or "http://t540p:7788" to connect to the JWM manserver
[12.01.2019 17:23 ] ### The logfile used was /var/tmp/start_stop_manserver.sh.log
[12.01.2019 17:23 ] ### start_stop_manserver.sh ended at Sat Jan 12 17:23:05 CET 2019
[JWM session] [xtrnaw7@t540p /var/tmp/jwm]$






start_stop_manserver.sh details
Use the parameter status to check the status of the JWM manserver:

[JWM session] [xtrnaw7@t540p /var/tmp/jwm/scripts]$ start_stop_manserver.sh status
[04.11.2016 21:02 ] ### start_stop_manserver.sh started at Fri Nov  4 21:02:11 CET 2016
[04.11.2016 21:02 ] ### The logfile used is /var/tmp/start_stop_manserver.sh.log
[04.11.2016 21:02 ] The JWM manserver already running; the PID is 8378
[04.11.2016 21:02 ] The JWM manserver is listening to the ports:
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 0.0.0.0:7777            0.0.0.0:*               LISTEN      8378/perl          
[04.11.2016 21:02 ] ### The logfile used was /var/tmp/start_stop_manserver.sh.log
[04.11.2016 21:02 ] ### start_stop_manserver.sh ended at Fri Nov  4 21:02:11 CET 2016
[JWM session] [xtrnaw7@t540p /var/tmp/jwm/scripts]$



[JWM session] [xtrnaw7@t540p /var/tmp/jwm/scripts]$ start_stop_manserver.sh stop
[04.11.2016 21:04 ] ### start_stop_manserver.sh started at Fri Nov  4 21:04:37 CET 2016
[04.11.2016 21:04 ] ### The logfile used is /var/tmp/start_stop_manserver.sh.log
[04.11.2016 21:04 ] The JWM manserver is not running
[04.11.2016 21:04 ] ### The logfile used was /var/tmp/start_stop_manserver.sh.log
[04.11.2016 21:04 ] ### start_stop_manserver.sh ended at Fri Nov  4 21:04:37 CET 2016
[JWM session] [xtrnaw7@t540p /var/tmp/jwm/scripts]$


The usage for the JWM mansever start/stop script is:

[JWM session] [xtrnaw7@t540p /var/tmp/jwm/scripts]$ start_stop_manserver.sh --help
[04.11.2016 21:13 ] ### start_stop_manserver.sh started at Fri Nov  4 21:13:13 CET 2016
[04.11.2016 21:13 ] ### The logfile used is /var/tmp/start_stop_manserver.sh.log
 start_stop_manserver.sh

 Function: start or stop the manserver in JWM / Linux
 
 Usage:    start_stop_manserver.sh [-v|--verbose] [-q|--quiet] [-f|--force] [-p|--port port] [start|stop|restart|status]

 Parameter:
   -v - verbose mode
   -q - quiet mode
   -f - force execution
   -p - port for the JWM manserver, the default port is 7777

[04.11.2016 21:13 ] ### The logfile used was /var/tmp/start_stop_manserver.sh.log
[04.11.2016 21:13 ] ### start_stop_manserver.sh ended at Fri Nov  4 21:13:13 CET 2016
[JWM session] [xtrnaw7@t540p /var/tmp/jwm/scripts]$





Directories in the JWM / Linux archive


Directory name
Directory contents
Comment
bashtop*
bashtop

bin
binaries w/ source

bin1
binaries w/o source

bpytop*
bpytop

busybox
busybox binary and links

checksec*
checksec
collectl*
collectl

compile_scripts
scripts for compiling the tools

data/*
data files for the tools

develop
script templates and other development files

etc
config files for the tools

htdocs
webserver based applications and html pages

include
include files

info
.info files

iotop*
iotop (various versions)

jdiskreport* JDiskReport
lib
libraries for the tools

lib64
symbolic link to lib

libexec add files for the tools
lynis*
lynis installation

man
symbolic link to ./share/man

netdata*
netdata installation

new
staging directory for new tools

other_os
this directory contains some binaries for other OS

perf-tools
directory with the perftools

sbin
binaries that need root privileges

scripts
well, scripts

share
docs, manpages, etc for the tools

src
source for the tools

src/old
source code for the previous version of some tools (see here)

testssl* directories with the tool testssl.sh
workdir
data files and log files for compiling the tools



Outdated versions of the tools


The current version of some of the tools can not be compiled on older kernels anymore. For these tools the archive also contains the source code for the old version of the tool in the directory ${JWM_DIR}/src/old. The compile script then compiles the old version of a tool if neccessary.

e.g. the version 2.6 of atop does not compile for kernel 2.x . Therefor the compile script for atop will compile the version 2.4 of atop if a kernel 2.x is detected.

As of [04.02.2023] the tar archive contains this "old" versions of the tools


[JWM session] [xtrnaw7@t15g /var/tmp/jwm]$ date
Sat Feb  4 04:43:11 PM CET 2023
[JWM session] [xtrnaw7@t15g /var/tmp/jwm]$ ls -l /var/tmp/jwm/src/old
total 40
drwxrwxr-x.  4 xtrnaw7 xtrnaw7  4096 Jan 12  2019 atop-2.4.0
drwxrwxr-x.  2 xtrnaw7 xtrnaw7  4096 Dec 26  2020 hostscope-V4.0
drwxrwxr-x. 12 xtrnaw7 xtrnaw7  4096 Apr 17  2021 htop3-3.0.5
drwxr-xr-x. 12 xtrnaw7 xtrnaw7  4096 Oct 30  2021 ibpcap-1.0.0
lrwxrwxrwx.  1 xtrnaw7 xtrnaw7    18 Sep  5  2020 iptraf-ng -> ./iptraf-ng-1.1.4/
drwxrwxr-x.  4 xtrnaw7 xtrnaw7  4096 Jul 23  2013 iptraf-ng-1.1.4
drwxrwxr-x. 24 xtrnaw7 xtrnaw7  4096 Feb  4 15:17 nmap-7.70
drwxr-xr-x.  8 xtrnaw7 xtrnaw7  4096 Dec 24  2020 procdump-1.1.1
drwxr-xr-x.  7 xtrnaw7 xtrnaw7 12288 Sep  5  2020 stress-ng-0.10.08
lrwxrwxrwx.  1 xtrnaw7 xtrnaw7    18 Sep  5  2020 stress-ng-without_O_PATH -> stress-ng-0.10.08/
[JWM session] [xtrnaw7@t15g /var/tmp/jwm]$




Libraries included in JWM / Linux

Because not all libraries necessary for the tools are installed on all machines (especially on machines in production environments) some libraries are included in JWM / Linux. The libraries are in the directory ${JWM_DIR}/lib.

As of this writing these libraries are:

Library
Version
Description
Source










The make script for JWM / Linux also copies some OS libraries necessary for some of the tools to the JWM / Linux lib directory. The libraries to copy are listed in the file

${JWM_DIR}/compile_scripts/OS_LIBS

The libraries to copy are [as of 22.09.2020]; (you may change the file if the libraries are already on the target machines for JWM / Linux ]:

Library
Comment
libpcap*

libcrypto.so.10*

libdb-4.7*

libdb-5.3*

libtinfo*
libnuma*
liblua*
liblua5.2*

liblua-5.1*

liblua-5.2*

liblua-5.3*

liblua-5.4*
liblua-5*
libnet*

libnl*
libconfuse*



libnl-3*
libnl-route-3*
libnl-genl-3*
libsctp1*
libnetfilter_conntrack*
libboost_regex*
libboost_regex-mt*
libboost_iostreams*
libboost_iostreams-mt*
libboost_program_options*
libboost_program_options-mt*
liburcu*
libcli*


libsctp1*

libjson-c*

libbsd*





see How to add another OS Library for details for the copy process

Note:

To suppress the copying of the libraries create the semaphor file ${JWM_DIR}/lib/_DO_NOT_COPY_LIBS_ prior to calling the make script (or remove the file ${JWM_DIR}/compile_scripts/OS_LIBS).

 


Tools included in JWM / Linux


Tool
Version
Last
Update
Interface
Description
Source
ack
3.5
2021
cli
ack is a grep replacement written in Perl; requirement is Perl 5.8.8 or higher

http://beyondgrep.com/
amap
5.4
2011
cli
amap is a tool to identify application protocols on target ports.
https://www.thc.org/

Download source from

https://github.com/hackerschoice/THC-Archive/blob/master/Tools
arp-scan
1.10.1
2021
cli
arp-scan is an arp scanner
arp-scan documentation:

http://www.royhills.co.uk/wiki/index.php/Arp-scan_Documentation

download the source from

https://github.com/royhills/arp-scan

arping
2.19
2017
cli
arping is a util to find out if a specific IP address on the LAN is 'taken' and what MAC address owns it.
http://github.com/ThomasHabets/arping

atop
2.8.1
2023
cli
top like system monitor

Hints for compiling atop
If you get the error message

cc -O2 -I. -Wall          -c -o photosyst.o photosyst.c
photosyst.c: In function ‘lvmmapname’:
photosyst.c:1466:19: error: called object ‘major’ is not a function or function pointer
     dmp->major  = major(statbuf.st_rdev);
                   ^~~~~
photosyst.c:1421:25: note: declared here
 lvmmapname(unsigned int major, unsigned int minor,
            ~~~~~~~~~~~~~^~~~~

add the line

#include <sys/sysmacros.h>

to the file

photosyst.c


Note [25.12.2020]

The compile script for atop will compile the old version 2.4 of atop if a kernel version 2.x is detected because the atop version 2.6 can not be compiled for kernel 2.x (see also here.)
The script will also compile the version 2.4 if ETHTOOL_GLINKSETTINGS is not defined in the current OS.


http://www.atoptool.nl/
bashtop
0.9.25
2020
cli
a "top" written in bash  (see also bpytop)

Dependencies for bashtop are

bash (v4.4 or later)

GNU coreutils, sed, grep, ps, awk

(see also the homepage of bashtop)

https://github.com/aristocratos/bashtop
bmon 4.0 2017 cli "bmon is a monitoring and debuggng tool to capture networking related statistics and prepare them visually in a human friendly way. It features various output methods including an interactive curses user interface and a programmable text output for scripting."

https://github.com/tgraf/bmon/
bonnie++
1.04 UNRELEASED
2017
cli
bonnie++ is a disk performance test tool
http://www.coker.com.au/bonnie++/
bpytop
1.0.63
2020
cli
a "top" written in Python (see also bashtop)

Dependencies for bpytop are
https://github.com/aristocratos/bpytop
busybox
1.36
2023
cli BusyBox: The Swiss Army Knife of Embedded Linux

Note:
The config for busybox in the tar archive is the default config without the i2c tools. The compile script does not create a new config.

Use

make menuconfig

in the busybox source directory to select which busybox components should be compiled.


Hints for some of the errors I got while compiling busybox on older Linux versions
Error message ‘MTD_FILE_MODE_RAW’ undeclared


-> disable "Miscellaenous Utilities/nandwrite" and "Miscellaenous Utilities/nanddump"

Error message  ‘BLKSECDISCARD’ undeclared


-> disable "Linux System Utilities/blkdiscard"

Error message  sync.c:(.text.sync_main+0x7a): undefined reference to `syncfs'


-> disable "Core Utils/sync"

Error message  nsenter.c:(.text.nsenter_main+0x1b6): undefined reference to `setns'


-> disable "Linux System Utilties/nsenter"

The config without these tools is saved in the file rhel6_config in the busybox source directroy. Use "make menuconfig" in the busybox source directory to use this config.


http://www.busybox.net
bvi 1.4.1 2019 cli
bvi is a vi like editor for binary files http://bvi.sourceforge.net/
bwm-ng
0.6.2
2018
cli Bandwidth Monitor NG is a small and console-based live network and disk-io bandwidth monitor
http://sourceforge.net/projects/bwmng/
cdpinfo
1.2
2012
cli A perl script to  listen for Cisco Discovery Protocol (CDP) packets and print out key values such as switch, port and vlan