Linux で複数のコマンドを同時に実行して効率を上げる

Linux で複数のコマンドを同時に実行して効率を上げる
フィーチャーイメージ 複数のコマンドの処理を高速化

生産性を高めたいですか? Linux ターミナルで複数のコマンドを同時に実行することを検討してください。このアプローチにより、単純なシーケンス コマンドを実行したり、バックグラウンドでタスクを実行したり、条件付きコマンドをまとめて管理したりできます。

この記事では、Linux ターミナルでコマンドを順次および同時に実行するためのいくつかのテクニックについて詳しく説明します。

複数のコマンドを同時に実行する利点

定期的なメンテナンス タスクを実行する場合でも、大規模なデータセットを処理する場合でも、ワークフローのセグメントを自動化する場合でも、コマンドを組み合わせることで操作を合理化し、全体的な効率を高めることができます。

たとえば、複数のディレクトリをバックアップする場合、各コマンドを個別に処理するのではなく、コマンドをリンクすることで、時間と労力を節約できます。

複数のモジュールを必要とする Linux パッケージをインストールするときは、コマンドを連鎖させることがよくあります。これにより、パッケージとその依存関係が 1 回の操作でインストールされ、繰り返し入力する必要がなくなります。

順次コマンド実行

この方法は、ターミナルを使用するときに私がよく使う方法です。コマンドをリンクして、前のコマンドが正常に実行されたかどうかに関係なく、コマンドを次々に実行することができます。

これらのコマンドを順番に実行するには、;区切り文字としてセミコロンを使用します。Enter キーを押すと、ターミナルは最初のコマンドを処理し、完了するまで待機してから、次のコマンドに進みます。

たとえば、システムを更新し、同時に未使用のパッケージをクリアしたい場合は、次のコマンドを実行できます。

apt パッケージ マネージャーを使用して Ubuntu システムを更新、アップグレード、およびクリーニングします。

これらのコマンドを連鎖させることで、順次実行が強制され、各タスクは前のタスクが終了した後にのみ完了し、効率が維持されます。

条件ベースのコマンド実行

&&最初のコマンドが成功した場合 (または失敗した場合) のみ 2 番目のコマンドを実行する場合は、 (AND)演算子と (OR) 演算子を使用して条件付き実行を活用できます||

最初のコマンドが成功したら実行する

前のコマンドが成功した場合にのみ次のコマンドが実行されるようにするには、&&コマンド間に演算子を使用します。

たとえば、新しいディレクトリを作成し、ディレクトリの作成が成功した場合にのみそのディレクトリに変更する場合は、次のようにします。

ディレクトリの作成と変更を同時に行います。

最初のコマンドが失敗した場合、後続のコマンドは実行されません。

最初のコマンドが失敗した場合に実行する

|| 演算子。これは、ワークフローを中断せずにフォールバック コマンドやエラーをログに記録する場合に特に便利です。

ファイルをバックアップ場所にコピーするなどのファイル操作中に、この方法が役立つことがよくあります。コピーに失敗した場合は、進行中のタスクを中断せずに通知を受け取りたいです。次のように構成できます。

cp file_name /backup || echo "Failed!" >> error_log.txt

この場合、cpコマンドは指定されたファイルをバックアップ ディレクトリにコピーしようとします。失敗した場合、||オペレーターは次のコマンドを実行し、エラー メッセージをエラー ログに追加します。このようにして、ワークフローは中断されることなく継続され、問題を文書化して後で確認することもできます。

バックグラウンドでコマンドを実行する

場合によっては、タスクが完了するまで一時停止したくないことがあります。プロセスにかなりの時間がかかる場合は、&コマンドの最後にアンパサンドを追加することで、作業をスムーズに進めることができます。

たとえば、他のタスクを実行しながら特定の URL から大きなファイルをダウンロードしたい場合は、次のようにします。

sudo wget https://example.com/large-file.zip &

これにより、ダウンロードがバックグラウンドで実行されている間も、端末で作業を継続できます。

バックグラウンド実行によるコマンドの連鎖

2 つのコマンドを接続して、前のコマンドが完了した後に後者のコマンドがバックグラウンドで実行されるようにしたい場合はどうすればよいでしょうか。この場合、パイプ|演算子とアンパサンドの両方を利用できます&

パイプは|最初のコマンドの出力を 2 番目のコマンドの入力として送信し、アンパサンドは&2 番目のコマンドをバックグラウンドで実行できるようにします。

たとえば、大きなファイルを読み取ってキーワードを抽出し、結果を新しいファイルに保存するには、リダイレクト>演算子を使用します。

cat samplefile.txt | grep "Project" > output.txt &
大きなファイルを検索し、指定した結果を個別に保存します。

この設定では、検索と保存の両方の操作がバックグラウンドで実行されます。これにより、ファイルの処理中に中断することなく他のコマンドを実行できます。

Xargs で複数のコマンドを同時に実行する

マルチタスク機能を強化したい場合は、xargsコマンドを使用してコマンドを並列実行することを検討してください。これにより、複数のコマンドを順番に処理するのではなく、同時に実行できるようになります。

このxargsコマンドは、引数のリストを効率的に小さなバッチに分割し、各バッチで特定のコマンドを同時に実行します。

たとえば、ファイルに URL のリストが保存されていて、それらをすべて一度にダウンロードしたい場合は、これを 1 つずつ実行するのではなく、次のように実行します。

cat urls_file.txt | xargs -n 1 -P 4 wget

この場合、コマンドごとに 1 つの引数を処理するように-n 1指示しxargs-P 44 つのコマンドを同時に実行するように指示します。これにより、順次アプローチと比較してダウンロード プロセスが大幅に高速化されます。

結論

要約すると、セミコロンを使用してコマンドを組み合わせたり;&&とを使用して条件付き実行を実装したり||、を使用してバックグラウンド プロセスを実行したり&、を使用して並列実行によってマルチタスク機能を向上させることができますxargs

画像クレジット: Unsplash。すべての変更とスクリーンショットはHaroon Javedによるものです。

ソース

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です