GNU/Linux >> Linux の 問題 >  >> Linux

Linuxコマンドラインで力を使用する

最近の歴史のある時期に、SFオタクは、すべてのスターウォーズの毎年恒例のお祝いを始めました。 5月4日、ジェダイの祝福についてのしゃれ、「力があなたと共にありますように」。ほとんどのLinuxユーザーはおそらくジェダイではありませんが、フォースを使用する方法はまだあります。もちろん、ヨーダがルークに男Xウイングファイターと入力するように指示しただけでは、映画はそれほどエキサイティングではなかったかもしれません。 または人力 。または、彼が「RTFM」と言った場合(もちろん、フォースマニュアルを読んでください)。

その他のLinuxリソース

  • Linuxコマンドのチートシート
  • 高度なLinuxコマンドのチートシート
  • 無料のオンラインコース:RHELの技術概要
  • Linuxネットワーキングのチートシート
  • SELinuxチートシート
  • Linuxの一般的なコマンドのチートシート
  • Linuxコンテナとは何ですか?
  • 最新のLinux記事

多くのLinuxコマンドには-fがあります オプションは、あなたがそれを推測したことを意味します、力!コマンドを実行すると、失敗したり、追加の入力を求められたりすることがあります。これは、変更しようとしているファイルを保護するための取り組みであるか、デバイスがビジーであるかファイルがすでに存在することをユーザーに通知するための取り組みである可能性があります。

プロンプトに煩わされたくない場合、またはエラーを気にしない場合は、力を使用してください!

コマンドのforceオプションを使用してこれらの保護を無効にすることは、一般に破壊的であることに注意してください。したがって、ユーザーは細心の注意を払い、自分が何をしているかを確実に理解する必要があります。力を使うと結果が出る可能性があります!

以下は、forceオプションを備えた4つのLinuxコマンドと、それを使用する方法と理由の簡単な説明です。

cp

cp コマンドはcopyの略で、ファイルまたはディレクトリをコピー(または複製)するために使用されます。マニュアルページでは、 cpの強制オプションについて説明しています。 として:

-f, --force
       if an existing destination file cannot be opened, remove it
       and try again

この例は、読み取り専用ファイルを使用している場合に使用します。

[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

Hothというファイルをコピーする場合 ナブーへ 、 cp Naboo 以降、コマンドはそれを許可しません 読み取り専用です:

[alan@workstation ~]$ cp Hoth Naboo 
cp: cannot create regular file 'Naboo': Permission denied

しかし、力を使うことによって、 cp プロンプトは表示されません。 両方の内容と権限 すぐにナブーにコピーされます :

[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

大野!彼らがナブーに防寒着を持っていることを願っています。

ln

ln コマンドは、ファイル間のリンクを作成するために使用されます。マニュアルページでは、 lnの強制オプションについて説明しています。 として:

-f, --force
       remove existing destination files

レイア姫がJavaアプリケーションサーバーを保守していて、すべてのJavaバージョンが保存されているディレクトリを持っているとします。次に例を示します:

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

ご覧のとおり、Java Development Kit(JDK)にはいくつかのバージョンがあり、最新のものを指すシンボリックリンクがあります。彼女は、次のコマンドを含むスクリプトを使用して、新しいJDKバージョンをインストールします。ただし、forceオプションがないと、またはrootユーザーが実行しない限り機能しません:

tar xvzmf jdk1.8.0_181.tar.gz -C jdk1.8.0_181/
ln -vs jdk1.8.0_181 jdk

タール コマンドは.gzファイルを指定されたディレクトリに抽出しますが、 ln リンクがすでに存在するため、コマンドはリンクのアップグレードに失敗します。その結果、リンクは最新の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

彼女はlnを強制することができます forceオプションと他の1つを渡すことにより、リンクを正しく更新するには、 -n -n リンクがディレクトリを指しているため、が必要です。これで、リンクは再び最新の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

パス/usr / lib / java / jdkでJDKを検索するようにJavaアプリケーションを構成できます。 Javaが更新されるたびに変更する必要はありません。

rm

rm コマンドは「remove」の略です(他の一部のオペレーティングシステムには del があるため、削除と呼ばれることがよくあります) このアクションのコマンド)。マニュアルページでは、 rmの強制オプションについて説明しています。 として:

-f, --force
       ignore nonexistent files and arguments, never prompt

読み取り専用ファイルを削除しようとすると、 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'?

yのいずれかを入力する必要があります またはn プロンプトに応答し、 rmを許可します 続行するコマンド。強制オプションを使用する場合は、 rm プロンプトは表示されず、すぐにファイルが削除されます:

[alan@workstation ~]$ rm -f B-wing
[alan@workstation ~]$ ls -l
total 0
[alan@workstation ~]$
>

rmでの最も一般的な力の使用 ディレクトリを削除することです。 -r (再帰的)オプションは rmに通知します ディレクトリを削除します。 forceオプションと組み合わせると、プロンプトなしでディレクトリとそのすべてのコンテンツが削除されます。

rm 特定のオプションを指定したコマンドは、悲惨な結果を招く可能性があります。何年にもわたって、オンラインフォーラムは、ユーザーがシステムを完全に消去するというジョークやホラーストーリーでいっぱいになりました。この悪名高い使用法はrm-rf * 。これにより、使用されている場所にプロンプ​​トが表示されることなく、すべてのファイルとディレクトリがすぐに削除されます。

userdel

userdel コマンドはuserdeleteの略で、ユーザーを削除します。マニュアルページでは、 userdelの強制オプションについて説明しています。 として:

-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.

オビ=ワンがムスタファーの城に到着したとき、彼は何をしなければならないかを知っていました。彼はダースのユーザーアカウントを削除する必要がありましたが、ダースはまだログインしていました。

[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

Darthは現在ログインしているため、Obi-Wanはforceオプションを使用して userdelを実行する必要があります。 。これにより、ログインしていてもユーザーアカウントが削除されます。

[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

ご覧のとおり、 およびps コマンドは、ユーザーDarthが削除されたことを確認します。

シェルスクリプトでのforceの使用

他の多くのコマンドには強制オプションがあります。シェルスクリプトでは、1つの場所の力が非常に役立ちます。 cronジョブやその他の自動化された操作でスクリプトを使用するため、プロンプトを回避することが重要です。そうしないと、これらの自動化されたプロセスが完了しません。

上で共有した4つの例が、特定の状況で力の使用がどのように必要になるかを理解するのに役立つことを願っています。コマンドラインまたは自動化スクリプトの作成で使用する場合は、forceオプションを十分に理解している必要があります。誤用は、単一のマシンだけでなく、インフラストラクチャ全体に壊滅的な影響を与える可能性があります。


Linux
  1. Linuxコマンドラインでパスワードを生成する

  2. Linuxコマンドラインに関する8つのヒント

  3. Linuxコマンドラインでのtcpdumpの使用の概要

  1. Linuxコマンドラインで牛を飼う

  2. Linuxコマンドラインにアクセスしてください

  3. Stratisを使用してコマンドラインからLinuxストレージを管理する

  1. コマンドラインを使用してLinuxでtar.gzファイルを抽出する方法

  2. コマンドラインを使用してLinuxでユーザーを削除する方法

  3. コマンドラインを使用してLinuxを再起動する方法