GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden der Kraft in der Linux-Befehlszeile

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.


Linux
  1. Generieren Sie Passwörter auf der Linux-Befehlszeile

  2. 8 Tipps für die Linux-Kommandozeile

  3. Eine Einführung in die Verwendung von tcpdump auf der Linux-Befehlszeile

  4. So extrahieren Sie die tar.gz-Datei in Linux mithilfe der Befehlszeile

  5. So entfernen Sie Benutzer in Linux über die Befehlszeile

Verwenden von more zum Anzeigen von Textdateien in der Linux-Befehlszeile

Verwenden von less zum Anzeigen von Textdateien in der Linux-Befehlszeile

Verwenden des kostenlosen Linux-Befehls

Meistern Sie die Linux-Befehlszeile

Tutorial zur Verwendung des Timeout-Befehls unter Linux

So laden Sie Dateien in Rocky Linux 8 über die Befehlszeile mit wget herunter