blkzone -- this new command is excellent example of the open source collaboration. The command has been developed by people from WD, Seagate and SanDisk (thanks to Shaun Tancheff, Damien Le Moal and others). The goal is to have command line interface to run zone commands on block devices that support Zoned Block Commands (ZBC) or Zoned-device ATA Commands (ZAC). For now the supported zone commands are "reset" and "report". See http://www.storagereview.com/methods_of_smr_data_management for more details about zones.
fincore (file in core)-- this is nice useful command to get information about number of memory pages used by file content. For example my fulltext email DB:
# fincore ~/Mail/Maildir/.notmuch/xapian/*.DB RES PAGES SIZE FILE 60.1M 15392 4.6G /home/kzak/Mail/Maildir/.notmuch/xapian/position.DB 687.4M 175982 3.5G /home/kzak/Mail/Maildir/.notmuch/xapian/postlist.DB 328K 82 18.6M /home/kzak/Mail/Maildir/.notmuch/xapian/record.DB 190.5M 48758 2.1G /home/kzak/Mail/Maildir/.notmuch/xapian/termlist.DB
Fortunately RAM is cheap :) Thanks to Masatake Yamato from Red Hat.
lsmem (list memory) and chmem (change memory) -- another new commands. The commands have been originally implemented in Perl for s390-tools, now re-implemented in C in more generic way and to be usable on another architectures too. (thanks to Clemens von Mann and Heiko Carstens from IBM.)
The command fallocate supports an "insert range" operation now.
We continue on hwclock cleanup, some things in the code have been simplified, dead and useless things removed. (thanks to J William Piggott)
The code behind "column -t|--table" uses libsmartcols now. This change dramatically increased number of available features for table formatting. Now it's possible to define header for columns, truncate text in cells, align text to the right, change order of columns, JSON output or create tree-like output. Now almost all libsmartcols features are available on command line, example:
pstree-like output:
$ ps -h -o pid,ppid,comm | column --table --tree 3 --tree-id 1 --tree-parent 2 --table-hide 2 --table-right 1 1799 bash 2254 bash 28427 └─mutt 4263 └─vim 7409 bash 10641 └─man 10657 └─less 16775 bash 11486 ├─ps 11487 └─column
diskstat:
$ column /proc/diskstats --table --table-columns MAJ,MIN,NAME,READ-COMP,\ READ-MERG,READ-SECS,READ-TIME,WRITE-COMP,WRITE-MERG,WRITE-SECS,\ WRITE-TIME,IO-CURR,IO-TIME,WTIME \ --table-hide MAJ,MIN \ --table-right 4,5,6,7,8,9,10,11,12,13,14 \ NAME READ-COMP READ-MERG READ-SECS READ-TIME WRITE-COMP WRITE-MERG WRITE-SECS WRITE-TIME IO-CURR IO-TIME WTIME sda 13486466 149085 1288469300 9715620 45556082 7788088 1600182109 150180178 0 12935701 159902109 sda1 463 170 19002 131 91 0 161 331 0 334 462 sda2 778 16 63140 276 434 261 507574 12616 0 2382 12889 sda3 10710224 109592 1052352266 8018950 43983768 7022717 1153182094 126210185 0 11002854 134299501 sda4 1630396 32476 67166050 1039837 1197142 665798 343331344 23264993 0 2148041 24306932 sda5 1140435 241 168747746 655625 225373 73891 102920032 637906 0 627834 1293105 sda6 3703 6590 99512 691 4691 25421 240904 8418 0 6402 9108 sdb 448 0 22506 3088 1887 4 128 275 0 1449 3363 sdb1 404 0 19370 3035 12 4 128 60 0 1187 3095 loop0 22086 0 347311 2025 10738 0 844888 2226 0 1129 4265 loop1 947 0 26940 325 1100 0 133316 734 0 411 1058 md8 0 0 0 0 0 0 0 0 0 0 0
passwd in JSON:
$ grep -v nologin /etc/passwd | \ column --separator : --table --table-name passwd --json \ --table-columns USERNAME,PWD,UID,GID,GECOS,HOME,SHELL \ --table-hide PWD { "passwd": [ {"username": "root", "uid": "0", "gid": "0", "gecos": "root", "home": "/root", "shell": "/bin/bash"}, {"username": "sync", "uid": "5", "gid": "0", "gecos": "sync", "home": "/sbin", "shell": "/bin/sync"}, {"username": "shutdown", "uid": "6", "gid": "0", "gecos": "shutdown", "home": "/sbin", "shell": "/sbin/shutdown"}, {"username": "halt", "uid": "7", "gid": "0", "gecos": "halt", "home": "/sbin", "shell": "/sbin/halt"}, {"username": "kzak", "uid": "1000", "gid": "1000", "gecos": "Karel Zak,Home,,,", "home": "/home/kzak", "shell": "/bin/bash"}, {"username": "gamer", "uid": "1001", "gid": "1001", "gecos": null, "home": "/home/gamer", "shell": "/bin/bash"}, {"username": "test", "uid": "1002", "gid": "1002", "gecos": null, "home": "/home/test", "shell": "/bin/bash"} ] }
findmnt-like output:
$ column /proc/self/mountinfo \ --table-columns ID,PARENT,MAJMIN,ROOT,TARGET,VFS-OPTS,PROP,SEP,TYPE,SOURCE,FS-OPTS \ --table-hide=SEP,ID,PARENT,ROOT,PROP,FS-OPTS,MAJMIN \ --table-order TARGET,SOURCE,TYPE,VFS-OPTS \ --tree TARGET \ --tree-id ID \ --tree-parent PARENT TARGET SOURCE TYPE VFS-OPTS / /dev/sda4 ext4 rw,relatime ├─/sys sysfs sysfs rw,nosuid,nodev,noexec,relatime │ ├─/sys/kernel/security securityfs securityfs rw,nosuid,nodev,noexec,relatime │ ├─/sys/fs/cgroup tmpfs tmpfs ro,nosuid,nodev,noexec │ │ ├─/sys/fs/cgroup/systemd cgroup cgroup rw,nosuid,nodev,noexec,relatime │ │ ├─/sys/fs/cgroup/blkio cgroup cgroup rw,nosuid,nodev,noexec,relatime │ │ ├─/sys/fs/cgroup/cpu,cpuacct cgroup cgroup rw,nosuid,nodev,noexec,relatime │ │ ├─/sys/fs/cgroup/devices cgroup cgroup rw,nosuid,nodev,noexec,relatime │ │ ├─/sys/fs/cgroup/hugetlb cgroup cgroup rw,nosuid,nodev,noexec,relatime │ │ ├─/sys/fs/cgroup/pids cgroup cgroup rw,nosuid,nodev,noexec,relatime │ │ ├─/sys/fs/cgroup/memory cgroup cgroup rw,nosuid,nodev,noexec,relatime │ │ ├─/sys/fs/cgroup/cpuset cgroup cgroup rw,nosuid,nodev,noexec,relatime ... and so on ...
Thanks to all contributors. The next version v2.31 is planned for September 2017.