add dysk
This commit is contained in:
parent
5b1734d551
commit
c34f1d65d2
1 changed files with 141 additions and 0 deletions
141
technology/applications/cli/dysk.md
Normal file
141
technology/applications/cli/dysk.md
Normal file
|
@ -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%'`
|
Loading…
Reference in a new issue