Ich plane, eine kleine Automator-App zu erstellen, um diese Befehle zu etwas zu machen, das ich regelmäßig ausführen kann:
rm -rf ~/Library/Caches/*
rm -rf ~/Library/Saved\ Application\ State/*
sudo rm -rf /Library/Caches/*
sudo rm -rf /System/Library/Caches/*
atsutil databases -removeUser
sudo atsutil databases -remove
sudo atsutil server -shutdown
sudo atsutil server -ping
sudo rm -rf /var/folders/*
Da es sich um sudo handelt, was meiner Meinung nach ein gefährlicher Befehl ist, wird dies jemandem empfohlen, der neu bei Automator ist, und es wird den Mac nicht beschädigen?
Ich habe den bei iMac vorgeschlagenen Befehl ausprobiert, der seit dem Upgrade auf OS X 10.11, El Capitan, nicht heruntergefahren wurde, um Probleme mit dem Herunterfahren meines Mac zu beheben (es ist MacOS Sierra 10.12.6 auf einem alten Mac Mini).
Ich würde mich über Ratschläge dazu freuen, da ich die Grundlagen von Automator kenne, nur ob es empfehlenswert ist, dies mit sudo-Befehlen als Automator-App zu tun.
Sudo ist (an und für sich) nicht gefährlich. Sudo entfernt lediglich Schutzbeschränkungen und legt Ihnen die Last auf, sicheren Code auszuführen, anstatt Sie hinter den Kulissen zu schützen. Sudo kann gefährlich sein, wenn zum Beispiel:
Sie machen einen Codierungsfehler, der unbeabsichtigte Folgen hat: z. B. wenn Sie beabsichtigen, Folgendes auszuführen:
sudo rm -Rf /Users/yourname/something/something/
aber stattdessen tippst du:
sudo rm -Rf /Users/yourname/ something/something/
(mit einem versehentlichen Leerzeichen nach „Ihr Name“)
Das zweite Skript (mit dem fehlerhaften Leerzeichen) löscht alle Daten für den Benutzer „Ihr Name“ ohne Warnung.
Solange Sie vorsichtig sind, ist sudo sicher genug. Seien Sie sich nur der Schadenspotenziale bewusst.
sudo
Gefährlich seinEs gibt per se keine gefährlichen Befehle. Was Sie mit ihnen machen, kann Probleme verursachen. Zum Beispiel kann der harmlose Befehl yes
, der eine Zeichenfolge wiederholt ausgibt, bis Sie ihn beenden, auf schändliche Weise verwendet werden, um eine Maschine zum Kriechen zu bringen:
echo "Spawning 1000 yesses"
for i in {1..1000} ;
do
( /usr/bin/yes & )
; done
Nichts darin ist gefährlich. Es ist, wie es verwendet wird, was das Problem verursacht.
sudo
erteilt oder entfernt keine Berechtigungen/Einschränkungen für Ihr Konto. Es ermöglicht Ihnen, einen Befehl als ein anderer Benutzer auszuführen. Dies ist normalerweise der Superuser (alias root), daher der Befehl - su "do" ( su
= Substitute User Identity )
Der Schlüssel, den Sie sich merken sollten, ist, dass Sie, wenn Sie einen Befehl mit dem Präfix „ausgeben“, sudo
ihn als root und nicht als „Sie“ ausführen.
Hier sind einige Tipps...
sudo
.Bevor Sie das „Fleisch“ des Skripts ausführen, überprüfen Sie zuerst die Root-Rechte:
# Validates that user is root; exits if not
echo "Checking Root Priviliges"
if [ $(id -u) -ne 0 ]
then
echo "User is not root"
exit 1;
else
echo "User is root. Continuing";
fi
Verwenden Sie keine Tilde-Erweiterung (~) für Ihren Pfad. Verwenden Sie stattdessen den gesamten Pfad. Dadurch wird sichergestellt, dass Sie das gewünschte Verzeichnis beeinflussen. Das Home-Verzeichnis für Sie unterscheidet sich stark vom Root-Home-Verzeichnis.
rm -rf ~/Library/Caches/* ← Don't do this!!!
rm -rf /Users/FooBarUser/Library/Caches/* ← Do this instead!
Wenn Sie vorhaben, dies zu automatisieren (es klingt so, als würden Sie es tun), müssen Sie es als Skript (bash oder zsh) speichern, und dann schlage ich vor, launchd
dafür und nicht Automator zu verwenden. Einzelheiten dazu, wie Sie dies bewerkstelligen können, finden Sie im Post- Launchd-Plist-Format zum Ausführen eines Befehls zu einer bestimmten Zeit an einem Wochentag .
Anki