FreeSpace-Fähigkeit
Helfen Sie dem Benutzer, sicher Speicherplatz auf einem Linux-Rechner freizugeben. Der Benutzer muss stets sehen, was bereinigt wird und wie viel Speicherplatz es freigibt, bevor etwas gelöscht wird.
Harte Regeln
- Probelauf ist Standard. Der erste Aufruf in einer Unterhaltung MUSS
--dry-runsein. Führen Sie niemals eine zerstörerische Bereinigung durch, bevor Sie dem Benutzer einen Probelauf-Bericht gezeigt haben. - Nie
--yesohne explizite Benutzeranfrage. Übergeben Sie--yes/-ynur, wenn der Benutzer eindeutig zugestimmt hat („einfach alles bereinigen“, „ja mach alles“, „überspringe die Eingabeaufforderungen“). Standardmäßig sollte eine Bestätigung pro Aufgabe über--task <name>eingeholt werden. - Größen anzeigen, dann fragen. Fassen Sie nach einem Probelauf für den Benutzer zusammen: Name jeder Aufgabe, was sie betrifft und wie viel Speicherplatz sie freigeben würde. Warten Sie, bis der Benutzer auswählt, was tatsächlich ausgeführt werden soll.
- Aufgabenweise Ausführung. Bevorzugen Sie
--task <name>gegenüber der Ausführung aller Aufgaben auf einmal. Der Benutzer wählt aus. - Keine Annahmen über sudo. Wenn eine Aufgabe Root-Rechte benötigt, teilen Sie dem Benutzer mit, dass sie
sudobenötigt, und lassen Sie ihn diese spezifische Aufgabe erneut ausführen. - Ausgabe nicht durch Tools leiten, die sie verstecken. Der Benutzer muss die Ausgabe des Skripts sehen. Führen Sie es im Vordergrund aus.
Distribution erkennen
Das auszuführende Skript finden:
. /etc/os-release 2>/dev/null
case "${ID:-unknown}:${ID_LIKE:-}" in
ubuntu*|debian*|*ubuntu*|*debian*) echo ubuntu.sh ;;
fedora*|rhel*|centos*|*fedora*|*rhel*) echo fedora.sh ;;
*) echo "nicht unterstützt: ID=$ID ID_LIKE=$ID_LIKE" >&2 ;;
esac
Die Skripte befinden sich neben dieser SKILL.md:
ubuntu.sh— Ubuntu, Debian, Pop!_OS, Mint, Elementary (apt-basiert)fedora.sh— Fedora, RHEL, CentOS, Rocky, AlmaLinux (dnf/yum)
Wenn die Distribution nicht unterstützt wird, teilen Sie dem Benutzer mit, welche Distributionen unterstützt werden, und brechen Sie ab. Versuchen Sie nicht, ein Skript spontan anzupassen.
Standard-Workflow
1. Distribution erkennen → Skript auswählen
2. Ausführen: bash <skript> --dry-run
3. Ausgabe parsen, dem Benutzer eine saubere Zusammenfassungstabelle anzeigen:
- Aufgabenname
- Zielpfad(e)
- Freizugebende Größe
- Ob sudo benötigt wird
4. Fragen: „Welche Aufgaben möchtest du tatsächlich ausführen?“
5. Für jede vom Benutzer ausgewählte Aufgabe:
- Wenn auf Benutzerebene: bash <skript> --task <name>
- Wenn sudo benötigt: Dem Benutzer den genauen Befehl mitteilen und ihn selbst ausführen lassen
6. Nach Abschluss aller ausgewählten Aufgaben: `df -h /` ausführen und den freigegebenen Speicherplatz melden.
Argument-Spickzettel
Die Skripte akzeptieren dieselben Flags:
| Flag | Wirkung |
|---|---|
--dry-run | Nur Vorschau, keine Änderungen. Dies zuerst verwenden. |
--list | Verfügbare Aufgabennamen auflisten |
--task <name> | Nur eine Aufgabe ausführen |
--yes / -y | Bestätigung pro Aufgabe überspringen. Nur verwenden, wenn der Benutzer explizit darum bittet. |
--help | Skript-Hilfe anzeigen |
Verfügbare Aufgabennamen sind über Skripte hinweg gemeinsam: pip, npm, trash, docker_builder, journal, oldlogs, cuda_repos, cuda_old, crash. Distributionsspezifische Aufgaben: apt (Ubuntu/Debian), dnf (Fedora/RHEL), abrt (Fedora/RHEL).
Führen Sie bash <skript> --list aus, um die maßgebliche Liste für den Host zu erhalten.
Sudo-Handhabung
Aufgaben auf Benutzerebene (pip, npm, trash, docker_builder) werden als Benutzer ausgeführt.
Systemweite Aufgaben benötigen sudo. Rufen Sie sudo nicht im Namen des Benutzers auf, ohne zu fragen. Sagen Sie stattdessen:
Aufgabe
journalbenötigt sudo. Führe dies selbst aus:sudo bash <pfad>/<skript> --task journal
Wenn der Benutzer sich bereits in einer sudo bash-Sitzung befindet und Sie explizit gebeten hat, alle sudo-benötigenden Aufgaben auszuführen, können Sie diese mit --task für jede Aufgabe verketten.
Rückmeldung
Zeigen Sie dem Benutzer nach jedem Bereinigungslauf:
- Welche Aufgaben erfolgreich ausgeführt wurden.
- Welche übersprungen wurden und warum.
- Das Vorher/Nachher von
df -h /, damit der tatsächlich freigegebene Speicherplatz sichtbar ist.
Wenn etwas schiefgeht
- Wenn der Probelauf für eine Aufgabe
Größe: 0meldet, erwähnen Sie es, aber belästigen Sie den Benutzer nicht damit. - Wenn
dubei einem Pfad einen Fehler meldet (Zugriff verweigert), machen Sie den Benutzer darauf aufmerksam – es bedeutet normalerweise, dass sudo benötigt wird. - Wenn eine Aufgabe während der Ausführung fehlschlägt, stoppen Sie den Batch und melden Sie, welche Aufgabe fehlgeschlagen ist, bevor Sie fortfahren.
Was NICHT zu tun ist
- Bearbeiten Sie die Skripte nicht, um basierend auf der Situation des Benutzers
rm -rf /irgendwas/andereshinzuzufügen. Wenn das Skript seinen Anwendungsfall nicht abdeckt, teilen Sie ihm das mit und lassen Sie ihn entscheiden. - Führen Sie keine Bereinigung von Verzeichnissen außerhalb der definierten Ziele des Skripts durch.
- Schlagen Sie keine aggressiveren Bereinigungen vor (Löschen von
/tmp, Snap-Caches, Kernel usw.), es sei denn, der Benutzer fragt explizit danach – und selbst dann bevorzugen Sie sicherere Alternativen (apt autoremove --purgefür Kernel usw.). - Unterdrücken Sie nicht die Ausgabe des Skripts. Der Sinn ist die Transparenz.