Qualche volta nella storia recente, i nerd di fantascienza hanno iniziato una celebrazione annuale di tutto Star Wars il 4 maggio, un gioco di parole sulla benedizione Jedi, "Che la Forza sia con te". Sebbene la maggior parte degli utenti Linux probabilmente non siano Jedi, hanno ancora modi per usare la forza. Ovviamente, il film potrebbe non essere stato così eccitante se Yoda avesse semplicemente detto a Luke di digitare uomo combattente X-Wing o forza umana . O se avesse detto "RTFM" (leggi il Force Manual, ovviamente).
Più risorse Linux
- Comandi Linux cheat sheet
- Cheat sheet sui comandi avanzati di Linux
- Corso online gratuito:Panoramica tecnica RHEL
- Cheat sheet della rete Linux
- Cheat sheet di SELinux
- Cheat sheet dei comandi comuni di Linux
- Cosa sono i container Linux?
- I nostri ultimi articoli su Linux
Molti comandi Linux hanno una -f opzione, che sta per, avete indovinato, forza! A volte, quando si esegue un comando, non riesce o viene richiesto un input aggiuntivo. Questo potrebbe essere uno sforzo per proteggere i file che stai tentando di modificare o informare l'utente che un dispositivo è occupato o un file esiste già.
Se non vuoi essere disturbato dai messaggi o non ti interessano gli errori, usa la forza!
Tieni presente che l'utilizzo dell'opzione di forza di un comando per ignorare queste protezioni è, in genere, distruttivo. Pertanto, l'utente deve prestare molta attenzione ed essere sicuro di sapere cosa sta facendo. Usare la forza può avere conseguenze!
Di seguito sono riportati quattro comandi Linux con un'opzione di forza e una breve descrizione di come e perché potresti volerla utilizzare.
cp
Il pc comando è l'abbreviazione di copy:viene utilizzato per copiare (o duplicare) un file o una directory. La pagina man descrive l'opzione di forza per cp come:
-f, --force
if an existing destination file cannot be opened, remove it
and try again
Questo esempio è per quando lavori con file di sola lettura:
[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
Se vuoi copiare un file chiamato Hoth a Naboo , il cp comando non lo consentirà poiché Naboo è di sola lettura:
[alan@workstation ~]$ cp Hoth Naboo
cp: cannot create regular file 'Naboo': Permission denied
Ma usando la forza, cp non verrà richiesto. I contenuti e le autorizzazioni di Hoth verrà immediatamente copiato su Naboo :
[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
Oh no! Spero che abbiano abbigliamento invernale su Naboo.
ln
Il ln comando viene utilizzato per creare collegamenti tra i file. La pagina man descrive l'opzione di forza per ln come:
-f, --force
remove existing destination files
Supponiamo che la principessa Leia stia mantenendo un server di applicazioni Java e abbia una directory in cui sono archiviate tutte le versioni di Java. Ecco un esempio:
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
Come puoi vedere, ci sono diverse versioni del Java Development Kit (JDK) e un collegamento simbolico che punta all'ultima. Utilizza uno script con i seguenti comandi per installare le nuove versioni di JDK. Tuttavia, non funzionerà senza un'opzione di forza o a meno che l'utente root non la esegua:
tar xvzmf jdk1.8.0_181.tar.gz -C jdk1.8.0_181/
ln -vs jdk1.8.0_181 jdk
Il catrame il comando estrarrà il file .gz nella directory specificata, ma il ln comando non riuscirà ad aggiornare il collegamento perché ne esiste già uno. Il risultato sarà che il collegamento non punta più all'ultimo JDK:
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
Può forzare ln per aggiornare correttamente il collegamento passando l'opzione di forza e un'altra, -n . Il -n è necessario perché il collegamento punta a una directory. Ora, il collegamento punta di nuovo all'ultimo 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
È possibile configurare un'applicazione Java per trovare il JDK con il percorso /usr/lib/java/jdk invece di doverlo modificare ogni volta che si aggiorna Java.
rm
Il rm comando è l'abbreviazione di "rimuovi" (che spesso chiamiamo elimina, poiché alcuni altri sistemi operativi hanno un del comando per questa azione). La pagina man descrive l'opzione di forza per rm come:
-f, --force
ignore nonexistent files and arguments, never prompt
Se provi a eliminare un file di sola lettura, ti verrà richiesto da rm :
[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'?
Devi digitare y o n per rispondere alla richiesta e consentire il rm comando di procedere. Se utilizzi l'opzione di forza, rm non ti chiederà e cancellerà immediatamente il file:
[alan@workstation ~]$ rm -f B-wing
[alan@workstation ~]$ ls -l
total 0
[alan@workstation ~]$
L'uso più comune della forza con rm è eliminare una directory. Il -r L'opzione (ricorsiva) dice a rm per rimuovere una directory. Se combinato con l'opzione di forza, rimuoverà la directory e tutto il suo contenuto senza chiedere conferma.
Il rm comando con determinate opzioni può essere disastroso. Nel corso degli anni, i forum online si sono riempiti di battute e storie dell'orrore di utenti che cancellavano completamente i loro sistemi. Questo uso famigerato è rm -rf * . Questo cancellerà immediatamente tutti i file e le directory senza alcun prompt ovunque venga utilizzato.
userdel
Il utentedel comando è l'abbreviazione di user delete, che cancellerà un utente. La pagina man descrive l'opzione di forza per userdel come:
-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.
Quando Obi-Wan raggiunse il castello di Mustafar, sapeva cosa doveva essere fatto. Ha dovuto eliminare l'account utente di Darth, ma Darth era ancora connesso.
[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
Dal momento che Darth è attualmente connesso, Obi-Wan deve usare l'opzione di forza per userdel . Questo cancellerà l'account utente anche se ha effettuato l'accesso.
[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
Come puoi vedere, il dito e ps i comandi confermano che l'utente Darth è stato eliminato.
Uso della forza negli script della shell
Molti altri comandi hanno un'opzione di forza. Un posto forza è molto utile è negli script di shell. Poiché utilizziamo gli script nei processi cron e in altre operazioni automatizzate, evitare qualsiasi prompt è fondamentale, altrimenti questi processi automatizzati non verranno completati.
Spero che i quattro esempi che ho condiviso sopra ti aiutino a capire come determinate circostanze possono richiedere l'uso della forza. Dovresti avere una profonda conoscenza dell'opzione di forza quando viene utilizzata dalla riga di comando o nella creazione di script di automazione. Il suo uso improprio può avere effetti devastanti, a volte sull'intera infrastruttura e non solo su un singolo computer.