Er is geen enkel commando om een perfect opgemaakt "rapport" te genereren van gebruikersquota in homedirectories in Linux. De aanpak hangt af van welke informatie u in uw rapport nodig heeft en hoe u deze wilt opmaken. Hier zijn een paar methoden, waarbij standaard Linux-opdrachten worden gecombineerd:
Methode 1:`quota` en `awk` gebruiken (voor een basisrapport)
Deze methode werkt als quota's op uw systeem zijn ingeschakeld. Het toont het gebruik en de limieten voor elke gebruiker.
``` bash
quotum -v | awk '{print $1, $2, $3, $4}'
```
* `quota -v`:Toont uitgebreide quota-informatie voor de huidige gebruiker. Om informatie voor alle gebruikers te zien, gebruikt u `sudo quota -v` (rootrechten vereist).
* `awk '{print $1, $2, $3, $4}'`:Dit extraheert de gebruikersnaam, gebruikte spatie, zachte limiet en harde limiet. Pas de veldnummers aan als uw `quota`-uitvoer verschilt (bekijk de `quota` manpagina voor details).
Methode 2:`find`, `du` en `awk` gebruiken (voor een gedetailleerder rapport)
Deze methode is flexibeler, waardoor u andere details kunt opnemen, maar er worden *geen* quotalimieten weergegeven, alleen de gebruikte ruimte. Het vereist root-rechten.
``` bash
zoek /home -type d -user "$(whoami)" -printf "%u %s %p\n" | awk '{sum[$1]+=$2} END {voor (gebruiker in totaal) printgebruiker, sum[gebruiker]}'
```
of voor alle gebruikers:
``` bash
zoek /home -type d -printf "%u %s %p\n" | awk '{sum[$1]+=$2} END {voor (gebruiker in totaal) printgebruiker, sum[gebruiker]}'
```
* `find /home -type d -user "$(whoami)" -printf "%u %s %p\n"`:Vindt alle thuismappen, drukt de gebruikersnaam (`%u`), de grootte in bytes (`%s`) en het pad (`%p`) af. Vervang `$(whoami)` door `-user all` om alle gebruikers weer te geven; hiervoor zijn rootrechten vereist.
* `awk '{sum[$1]+=$2} END {for (user in sum) print user, sum[user]}'`:Dit somt de groottes voor elke gebruiker op en drukt de gebruiker en zijn totale schijfgebruik af.
Methode 3:Combineren met `sort` en `numfmt` voor een opgemaakt rapport
We kunnen de uitvoer van Methode 2 verbeteren voor een betere leesbaarheid:
``` bash
zoek /home -type d -printf "%u %s %p\n" | awk '{sum[$1]+=$2} END {voor (gebruiker in totaal) printgebruiker, sum[gebruiker]}' | sorteer -k2,2nr | numfmt --to=iec --suffix=B
```
* `sort -k2,2nr`:Sorteert de uitvoer numeriek in omgekeerde volgorde (grootste gebruik eerst) op basis van de tweede kolom (grootte).
* `numfmt --to=iec --suffix=B`:Formatteert de getallen met behulp van IEC-eenheden (KB, MB, GB, etc.) en voegt een "B" achtervoegsel toe voor de duidelijkheid.
Belangrijke overwegingen:
* Rootrechten: Om informatie over alle gebruikers te krijgen, moet u deze opdrachten uitvoeren met `sudo`.
* Quota ingeschakeld: Methoden die `quota` gebruiken, werken alleen als gebruikersquota op uw systeem zijn ingeschakeld. Je kunt dit controleren met `repquota -a` (root nodig).
* Bestandssysteem: Deze opdrachten gaan ervan uit dat uw thuismappen zich onder `/home` bevinden. Als uw systeem een andere locatie gebruikt, pas dan het `find`-commando dienovereenkomstig aan.
* Foutafhandeling: De meegeleverde scripts ontberen een robuuste foutafhandeling. Voor productiegebruik zou u controles op fouten willen toevoegen (bijvoorbeeld 'find' mislukt, parseerproblemen).
Vergeet niet om deze commando's aan te passen op basis van uw specifieke behoeften en de uitvoer van de commando's op uw systeem. Overweeg om een geavanceerder script te schrijven met behulp van een scripttaal zoals Python of Bash voor geavanceerde rapportagebehoeften. Dit kan database-integratie inhouden om regelmatig quota-informatie op te slaan en op te vragen. |