Irgendwann in der jüngeren Geschichte begannen Science-Fiction-Nerds mit einer jährlichen Feier rund um Star Wars am 4. Mai, ein Wortspiel mit dem Segen der Jedi:„May the Force be with you.“ Obwohl die meisten Linux-Benutzer wahrscheinlich keine Jedi sind, haben sie dennoch Möglichkeiten, die Macht einzusetzen. Natürlich wäre der Film vielleicht nicht ganz so spannend gewesen, wenn Yoda Luke einfach gesagt hätte, er solle man X-Wing fighter eingeben oder Mannkraft . Oder wenn er "RTFM" gesagt hätte (lesen Sie natürlich das Force-Handbuch).
Weitere Linux-Ressourcen
- Spickzettel für Linux-Befehle
- Spickzettel für fortgeschrittene Linux-Befehle
- Kostenloser Online-Kurs:RHEL Technical Overview
- Spickzettel für Linux-Netzwerke
- SELinux-Spickzettel
- Spickzettel für allgemeine Linux-Befehle
- Was sind Linux-Container?
- Unsere neuesten Linux-Artikel
Viele Linux-Befehle haben ein -f Option, die für, Sie haben es erraten, Kraft steht! Wenn Sie einen Befehl ausführen, schlägt er manchmal fehl oder fordert Sie zu einer zusätzlichen Eingabe auf. Dies kann ein Versuch sein, die Dateien zu schützen, die Sie ändern möchten, oder den Benutzer darüber zu informieren, dass ein Gerät ausgelastet ist oder eine Datei bereits vorhanden ist.
Wenn Sie nicht mit Eingabeaufforderungen belästigt werden möchten oder sich um Fehler nicht kümmern, verwenden Sie die Gewalt!
Beachten Sie, dass die Verwendung der Force-Option eines Befehls zum Aufheben dieser Schutzmaßnahmen im Allgemeinen destruktiv ist. Daher muss der Benutzer genau aufpassen und sicher sein, dass er weiß, was er tut. Der Einsatz von Gewalt kann Folgen haben!
Es folgen vier Linux-Befehle mit einer Force-Option und einer kurzen Beschreibung, wie und warum Sie sie verwenden möchten.
CP
Der cp command ist die Abkürzung für copy – es wird verwendet, um eine Datei oder ein Verzeichnis zu kopieren (oder zu duplizieren). Die Manpage beschreibt die Force-Option für cp als:
-f, --force
if an existing destination file cannot be opened, remove it
and try again
Dieses Beispiel gilt für die Arbeit mit schreibgeschützten Dateien:
[alan@workstation ~]$ ls -l
total 8
-rw-rw---- 1 alan alan 13 May 1 12:24 Hoth
-r--r----- 1 alan alan 14 May 1 12:23 Naboo
[alan@workstation ~]$ cat Hoth Naboo
Icy Planet
Green Planet
Wenn Sie eine Datei namens Hoth kopieren möchten zu Naboo , der cp Befehl erlaubt dies seit Naboo nicht ist schreibgeschützt:
[alan@workstation ~]$ cp Hoth Naboo
cp: cannot create regular file 'Naboo': Permission denied
Aber durch Anwendung der Gewalt, vergl. wird nicht aufgefordert. Die Inhalte und Berechtigungen von Hoth werden sofort nach Naboo kopiert :
[alan@workstation ~]$ cp -f Hoth Naboo
[alan@workstation ~]$ cat Hoth Naboo
Icy Planet
Icy Planet
[alan@workstation ~]$ ls -l
total 8
-rw-rw---- 1 alan alan 12 May 1 12:32 Hoth
-rw-rw---- 1 alan alan 12 May 1 12:38 Naboo
Ach nein! Ich hoffe, sie haben Winterausrüstung auf Naboo.
ln
Der ln Befehl wird verwendet, um Links zwischen Dateien herzustellen. Die Manpage beschreibt die Force-Option für ln als:
-f, --force
remove existing destination files
Angenommen, Prinzessin Leia verwaltet einen Java-Anwendungsserver und sie hat ein Verzeichnis, in dem alle Java-Versionen gespeichert sind. Hier ist ein Beispiel:
leia@workstation:/usr/lib/java$ ls -lt
total 28
lrwxrwxrwx 1 leia leia 12 Mar 5 2018 jdk -> jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Mar 5 2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Aug 28 2017 jdk1.8.0_144
Wie Sie sehen können, gibt es mehrere Versionen des Java Development Kit (JDK) und einen symbolischen Link, der auf die neueste Version verweist. Sie verwendet ein Skript mit den folgenden Befehlen, um neue JDK-Versionen zu installieren. Es funktioniert jedoch nicht ohne eine Force-Option oder es sei denn, der Root-Benutzer führt es aus:
tar xvzmf jdk1.8.0_181.tar.gz -C jdk1.8.0_181/
ln -vs jdk1.8.0_181 jdk
Der Teer Der Befehl extrahiert die .gz-Datei in das angegebene Verzeichnis, aber die Datei ln Der Befehl kann den Link nicht aktualisieren, da bereits einer vorhanden ist. Das Ergebnis wird sein, dass der Link nicht mehr auf das neueste JDK verweist:
leia@workstation:/usr/lib/java$ ln -vs jdk1.8.0_181 jdk
ln: failed to create symbolic link 'jdk/jdk1.8.0_181': File exists
leia@workstation:/usr/lib/java$ ls -lt
total 28
drwxr-x--- 2 leia leia 4096 May 1 15:44 jdk1.8.0_181
lrwxrwxrwx 1 leia leia 12 Mar 5 2018 jdk -> jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Mar 5 2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Aug 28 2017 jdk1.8.0_144
Sie kann ln erzwingen um den Link korrekt zu aktualisieren, indem Sie die Force-Option und eine andere übergeben, -n . Das -n wird benötigt, da der Link auf ein Verzeichnis zeigt. Jetzt zeigt der Link wieder auf das neueste JDK:
leia@workstation:/usr/lib/java$ ln -vsnf jdk1.8.0_181 jdk
'jdk' -> 'jdk1.8.0_181'
leia@workstation:/usr/lib/java$ ls -lt
total 28
lrwxrwxrwx 1 leia leia 12 May 1 16:13 jdk -> jdk1.8.0_181
drwxr-x--- 2 leia leia 4096 May 1 15:44 jdk1.8.0_181
drwxr-xr-x 8 leia leia 4096 Mar 5 2018 jdk1.8.0_162
drwxr-xr-x 8 leia leia 4096 Aug 28 2017 jdk1.8.0_144
Eine Java-Anwendung kann so konfiguriert werden, dass sie das JDK mit dem Pfad /usr/lib/java/jdk findet anstatt es jedes Mal ändern zu müssen, wenn Java aktualisiert wird.
rm
Der rm command ist die Abkürzung für "remove" (was wir oft als delete bezeichnen, da einige andere Betriebssysteme ein del haben Befehl für diese Aktion). Die Manpage beschreibt die Force-Option für rm als:
-f, --force
ignore nonexistent files and arguments, never prompt
Wenn Sie versuchen, eine schreibgeschützte Datei zu löschen, werden Sie von rm dazu aufgefordert :
[alan@workstation ~]$ ls -l
total 4
-r--r----- 1 alan alan 16 May 1 11:38 B-wing
[alan@workstation ~]$ rm B-wing
rm: remove write-protected regular file 'B-wing'?
Sie müssen entweder y eingeben oder n um die Eingabeaufforderung zu beantworten und den rm zuzulassen Befehl zum Fortfahren. Wenn Sie die Force-Option verwenden, rm wird Sie nicht fragen und die Datei sofort löschen:
[alan@workstation ~]$ rm -f B-wing
[alan@workstation ~]$ ls -l
total 0
[alan@workstation ~]$
Die häufigste Anwendung von Gewalt mit rm ist das Löschen eines Verzeichnisses. Das -r (rekursive) Option teilt rm mit um ein Verzeichnis zu entfernen. In Kombination mit der Force-Option wird es das Verzeichnis und seinen gesamten Inhalt ohne Nachfrage entfernen.
Der rm Befehl mit bestimmten Optionen kann katastrophal sein. Im Laufe der Jahre haben sich Online-Foren mit Witzen und Horrorgeschichten von Benutzern gefüllt, die ihre Systeme vollständig löschen. Diese berüchtigte Verwendung ist rm -rf * . Dies löscht sofort alle Dateien und Verzeichnisse ohne Rückfrage, wo immer es verwendet wird.
userdel
Das userdel command ist die Abkürzung für user delete, was einen Benutzer löscht. Die Manpage beschreibt die Force-Option für userdel als:
-f, --force
This option forces the removal of the user account, even if the
user is still logged in. It also forces userdel to remove the
user's home directory and mail spool, even if another user uses
the same home directory or if the mail spool is not owned by the
specified user. If USERGROUPS_ENAB is defined to yes in
/etc/login.defs and if a group exists with the same name as the
deleted user, then this group will be removed, even if it is
still the primary group of another user.
Note: This option is dangerous and may leave your system in an
inconsistent state.
Als Obi-Wan das Schloss auf Mustafar erreichte, wusste er, was zu tun war. Er musste Darths Benutzerkonto löschen – aber Darth war immer noch angemeldet.
[root@workstation ~]# ps -fu darth
UID PID PPID C STIME TTY TIME CMD
darth 7663 7655 0 13:28 pts/3 00:00:00 -bash
[root@workstation ~]# userdel darth
userdel: user darth is currently used by process 7663
Da Darth derzeit eingeloggt ist, muss Obi-Wan die Force-Option zum userdel verwenden . Dadurch wird das Benutzerkonto gelöscht, obwohl es angemeldet ist.
[root@workstation ~]# userdel -f darth
userdel: user darth is currently used by process 7663
[root@workstation ~]# finger darth
finger: darth: no such user.
[root@workstation ~]# ps -fu darth
error: user name does not exist
Wie Sie sehen können, der Finger und ps Befehle bestätigen, dass der Benutzer Darth gelöscht wurde.
Force in Shell-Skripten verwenden
Viele andere Befehle haben eine Force-Option. Ein Ort, an dem force sehr nützlich ist, ist in Shell-Skripten. Da wir Skripte in Cron-Jobs und anderen automatisierten Vorgängen verwenden, ist es entscheidend, Eingabeaufforderungen zu vermeiden, da diese automatisierten Prozesse sonst nicht abgeschlossen werden.
Ich hoffe, die vier Beispiele, die ich oben genannt habe, helfen Ihnen zu verstehen, wie bestimmte Umstände die Anwendung von Gewalt erfordern können. Sie sollten die Force-Option bei der Verwendung in der Befehlszeile oder beim Erstellen von Automatisierungsskripts gut verstehen. Ihr Missbrauch kann verheerende Auswirkungen haben – manchmal auf Ihre gesamte Infrastruktur und nicht nur auf einem einzelnen Computer.