diff --git a/technology/applications/cli/dysk.md b/technology/applications/cli/dysk.md new file mode 100644 index 0000000..7e14653 --- /dev/null +++ b/technology/applications/cli/dysk.md @@ -0,0 +1,141 @@ +--- +obj: application +website: https://dystroy.org/dysk +repo: https://github.com/Canop/dysk +--- + +# dysk +dysk is a [linux](../../linux/Linux.md) utility listing your [filesystems](../../linux/filesystems/Filesystems.md). + +## Usage +Usage: `dysk [-a, --all] [PATH]` + +### Table +The standard output of dysk is a table with a default set of columns and only the "normal looking" [filesystems](../../linux/filesystems/Filesystems.md). You can modify it easily. + +#### Columns +You can run `dysk --list-cols` for the list of all columns. + +**All columns:** + +| name | default | meaning | +| ------------------ | ------- | ---------------------------------------------- | +| id | | mount point id | +| dev | | device id | +| filesystem | ✓ | filesystem | +| label | | label | +| type | ✓ | filesystem type | +| remote | | whether it's a remote filesystem | +| disk | ✓ | short tag of the underlying storage identified | +| used | ✓ | cumulated size of the occupied blocks | +| use | ✓ | graphical view of the use share | +| use_percent | | percentage of occupied blocks | +| free | ✓ | cumulated size of the available blocks | +| free_percent | | percentage of available blocks | +| size | ✓ | size of the volume | +| inodesfree | | available inodes | +| inodesused | | inodes used | +| inodes | | inodes use share, graphical | +| inodes_use_percent | | inodes use share, in percents | +| inodescount | | total number of inodes in the filesystem | +| mount | ✓ | mounting path | + +#### Choose columns +With the `--cols` launch argument, shortened as `-c`, you can change the displayed columns or their order. + +With `-c all`, you may see all available columns, but that's normally too much for convenience: + +The most obvious use of the `--cols` argument is the explicit definition of the columns to display. +For example `dysk -c label+use+size+disk+mount` will show the label, use, size, disk, and mount columns, in that order. + +#### Sort +With the `--sort` launch argument, shortened as `-s`, you can specify the order of displayed rows. + +The argument's value must be either a column name, for example `dysk -s dev`, or a column name and a direction, for example `dysk --sort size-desc`. + +The `desc` and `asc` directions can be abbreviated into `d` and `a`. + +#### CSV +With the `--csv` argument, you can ask dysk to output the table in [CSV](../../files/CSV.md): + +`dysk --csv > mounts.csv` + +You may choose the separator with the `--csv-separator` argument. + +Filters, sorting, and column selection work the same than for standard tables so you may do this: + +`dysk --csv -f 'size>100G' -c remote+default+inodes > mounts.csv` + +### [JSON](../../files/JSON.md) +Use `-j` or `--json`. The normal output is an array of all filesystem matching the filter. + +`dysk -j | jq '.[0]' > disk.json` + +```json +{ + "bound": false, + "dev": { + "major": 8, + "minor": 1 + }, + "disk": { + "crypted": false, + "ram": false, + "removable": false, + "rotational": false, + "type": "SSD" + }, + "fs": "/dev/sda1", + "fs-label": null, + "fs-type": "ext4", + "id": 26, + "mount-point": "/", + "remote": false, + "stats": { + "available": "81G", + "bavail": 19764035, + "bfree": 22790364, + "blocks": 59233748, + "bsize": 4096, + "inodes": { + "avail": 13880393, + "files": 15114240, + "free": 13880393, + "used-percent": "8%" + }, + "size": "243G", + "used": "162G", + "used-percent": "67%" + }, + "unreachable": false +} +``` + +The disk, stats, and stats.inodes structures, or the fs-label, may be null for some [filesystems](../../linux/filesystems/Filesystems.md). + +### Filter +The `--filter` argument, shortened in `-f`, lets you specify a constraint, or combine several ones. + +A constraint can be related to any column. + +You can for example fetch the [filesystems](../../linux/filesystems/Filesystems.md) with a given type with `dysk -f 'type=xfs'`. + +Or remote volumes with `dysk -f 'remote=true'`. + +The operators you can apply to a column are the following ones: + +| operator | meaning | +| -------- | -------------------------------------------------------- | +| `<` | lower | +| `<=` | lower or equal | +| `>` | greater | +| `>=` | greater or equal | +| `<>` | different | +| `=` | somehow equal - for example `fs=sda` matches `/dev/sda1` | +| `==` | really equal | + +You can combine several column conditions with boolean operators `|` (or), `&` (and) and `!` (not) and if needed you can use parenthesis. + +For example you may want to select the volumes with not enough space with + +`dysk -f 'free<100G | use>65%'`