カテゴリ: Linux 更新日: 2026/04/22

Linuxのexecコマンド完全ガイド!シェルプロセスを置き換えて実行する方法

Linuxのexecコマンドとは?シェルプロセスを置き換えて実行する方法
Linuxのexecコマンドとは?シェルプロセスを置き換えて実行する方法

先生と生徒の会話形式で理解しよう

生徒

「先生、Linuxでexecコマンドってよく聞くけど、どういう意味ですか?」

先生

execコマンドは、今使っているシェルプロセスを別のプログラムで置き換えて実行するコマンドです。プロセスを入れ替えるので、新しいプロセスを作らずにプログラムを直接実行できます。」

生徒

「それって普通にコマンドを実行するのと何が違うんですか?」

先生

「通常のコマンド実行だと、親シェルは残ったまま新しいプロセスが作られます。execを使うと、親シェル自体が置き換わるので、終了後に元のシェルに戻ることはありません。」

生徒

「なるほど、シェルを置き換えるって少し特殊ですね。初心者でも使えますか?」

先生

「はい、順を追って簡単な例を見ながら理解すれば大丈夫です。一緒に学びましょう。」

Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。

試して理解 Linuxのしくみを見る

※ Amazonアソシエイト広告リンク

1. execコマンドとは?

1. execコマンドとは?
1. execコマンドとは?

execコマンドは、Linuxやbash(バッシュ)、zsh(ゼットシェル)などのシェルで使えるプロセス置き換えコマンドです。シェルプロセスを新しいプログラムで置き換えることで、無駄な子プロセスを作らずに効率よく処理を実行できます。

例えば、通常のコマンド実行では親シェルが残り、新しい子プロセスが作られますが、execは親シェル自体を置き換えます。これによりシステム資源の節約や、ログインシェルの入れ替えなどに便利です。

2. execコマンドの基本的な使い方

2. execコマンドの基本的な使い方
2. execコマンドの基本的な使い方

基本構文は次の通りです。


exec プログラム名 引数

例えば、bashシェルをzshシェルで置き換えたい場合は次のようにします。


exec zsh

このコマンドを実行すると、現在のbashシェルは終了し、zshが新しいシェルとして起動します。

3. execコマンドでよく使う例

3. execコマンドでよく使う例
3. execコマンドでよく使う例

簡単な例として、現在のシェルで別のプログラムを起動してみましょう。


exec ls -l
total 8
-rw-r--r-- 1 user user 1234 Mar 23 10:00 file1.txt
-rw-r--r-- 1 user user 4321 Mar 23 11:00 file2.txt

この場合、ls -lの実行後、元のシェルには戻れません。シェルがexecで置き換わるためです

4. execを使ったシェルスクリプト内での利用

4. execを使ったシェルスクリプト内での利用
4. execを使ったシェルスクリプト内での利用

シェルスクリプト内でもexecは便利です。スクリプトの最後に別のプログラムを置き換えることで、無駄なプロセスを残さずに処理を続けられます。


#!/bin/bash
echo "このメッセージは表示されます"
exec python3 myscript.py

この例では、bashスクリプトが実行され、最後にmyscript.pyでシェルが置き換わります。

5. execコマンドで標準入出力を置き換える方法

5. execコマンドで標準入出力を置き換える方法
5. execコマンドで標準入出力を置き換える方法

execはファイルの入出力にも使えます。例えば、ログファイルに標準出力を書き込む場合です。


exec > output.log
echo "このメッセージはoutput.logに書き込まれます"

ここでは、シェルの標準出力(stdout)がoutput.logに置き換わり、ターミナルには表示されません。

6. execコマンドとプロセス管理の関係

6. execコマンドとプロセス管理の関係
6. execコマンドとプロセス管理の関係

Linuxではプロセス管理が重要です。execを使うことで、新しい子プロセスを作らずに直接プログラムを実行できるため、メモリ消費を抑えたりプロセス数を減らしたりできます。これは特にサーバー環境で役立ちます。


ps -ef | grep myscript
user   12345  1  0 10:00 ?    00:00:00 python3 myscript.py

親シェルが置き換わるので、余計なプロセスが残らないことがわかります。

7. execコマンド使用時の注意点

7. execコマンド使用時の注意点
7. execコマンド使用時の注意点

execを使うと、置き換え前のシェルには戻れません。そのため、作業中の重要な情報やシェル環境の設定を保存しておく必要があります。また、ルート権限で実行する場合はシステムへの影響を考慮してください。

例えば、誤ってrootシェルを別のプログラムで置き換えると、再ログインが必要になる場合があります。

8. 重要なポイント整理

8. 重要なポイント整理
8. 重要なポイント整理
  • execはシェルを置き換えるコマンドであり、子プロセスを作らない
  • スクリプト内で最後に使用することで効率よくプログラムを実行できる
  • 標準入出力のリダイレクトにも応用できる
  • 使用時は元のシェルに戻れないことに注意

LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。

Linux教科書 LPICレベル1 スピードマスター問題集を見る

※ Amazonアソシエイト広告リンク

まとめ

まとめ
まとめ

本記事では、Linuxでのexecコマンドの基本から応用までを詳しく解説しました。execは、現在のシェルプロセスを別のプログラムで置き換えるため、無駄な子プロセスを作らずに効率的に処理を実行できます。シェルの置き換えによるプロセス管理の最適化、スクリプト内での活用方法、標準入出力のリダイレクトなど、さまざまな使い方があります。特に、サーバー環境や自動化スクリプトでは、メモリ消費の軽減やプロセス数の削減に大きく役立ちます。

基本的な使い方としては、次のようにexecで別のプログラムを呼び出します。


exec プログラム名 引数

例えば、bashシェルをzshシェルに置き換える場合は以下の通りです。


exec zsh

シェルスクリプト内では、最後にexecを使って別プログラムに置き換えることで無駄なプロセスを残さずに処理できます。


#!/bin/bash
echo "このメッセージは表示されます"
exec python3 myscript.py

また、標準入出力のリダイレクトにも応用可能で、ログファイルに出力をまとめる際にも便利です。


exec > output.log
echo "このメッセージはoutput.logに書き込まれます"

execを正しく理解し使いこなすことで、Linuxのシェル操作やプロセス管理をより効率的に行えるようになります。しかし、元のシェルに戻れない点や権限による影響など、注意すべきポイントもあります。必ず実行前に作業環境を確認してから使用することが重要です。

先生と生徒の振り返り会話

生徒

「先生、execコマンドって色々な場面で使えるんですね。シェルを置き換えるって、最初は少し怖い感じがしました。」

先生

「そうですね。でも、基本を理解すれば便利です。例えば、スクリプトの最後にexecを使うと、無駄なプロセスが残らず効率的に処理できます。」

生徒

「標準出力も置き換えられるんですね。ログをまとめるのに便利そうです。」

先生

「その通りです。exec > output.logのように使えば、ターミナルに表示せずログだけに出力できます。サーバーや自動化スクリプトでは特に役立ちます。」

生徒

「でも、元のシェルに戻れないのは注意ですね。実行前に確認しておくことが大事ですね。」

先生

「そうです。プロセス置き換えは便利ですが、誤って実行すると作業が中断されることもあります。必ず確認してから使いましょう。」

生徒

「理解できました。基本の構文からスクリプト内での活用、ログ出力まで、順を追って学ぶとexecはすごく便利なコマンドですね。」

先生

「はい、正しく使えばLinux環境での作業効率が大幅に上がります。これからも色々なシェルコマンドを試してみましょう。」

カテゴリの一覧へ
新着記事
New1
Linux
Linuxの/proc/meminfoとは?メモリ使用状況を確認する仕組みを初心者向けに徹底解説
新規投稿
New2
情報セキュリティマネジメント試験
RATとは?リモートアクセス型ウイルスの仕組みと対策を初心者向けに解説
更新記事
New3
基本情報技術者試験
ビッグデータとは?初心者でもわかる大量データ活用の基本と活用事例
更新記事
New4
基本情報技術者試験
クライアントとは?初心者でもわかるコンピュータの基本用語をやさしく解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
基本情報技術者試験
NIC
307
NICとは何か?初心者にもわかるネットワークインターフェースカードの基本
No.2
Java&Spring記事人気No2
基本情報技術者試験
セグメントとは?ネットワークの基本単位を初心者向けにやさしく解説
No.3
Java&Spring記事人気No3
基本情報技術者試験
16進数とは?初心者にもわかる意味・読み方・変換方法をやさしく解説!
No.4
Java&Spring記事人気No4
基本情報技術者試験
DHCP
236
DHCPとは?初心者でもわかるIPアドレス自動割り当ての仕組み
No.5
Java&Spring記事人気No5
基本情報技術者試験
SMTP
174
SMTPとは?初心者でもわかるメール送信の仕組みとプロトコルをやさしく解説!
No.6
Java&Spring記事人気No6
基本情報技術者試験
マイクロ(μ)とは?初心者にもわかる単位の意味と使い方をやさしく解説
No.7
Java&Spring記事人気No7
基本情報技術者試験
IMAP
162
IMAPとは?初心者でもわかるメール受信プロトコルの仕組みと使い方
No.8
Java&Spring記事人気No8
基本情報技術者試験
ビット(bit)とは?デジタルデータの最小単位をわかりやすく解説