GNU/Linux >> Belajar Linux >  >> Linux

Perintah exec Linux Dengan Contoh

Pendahuluan

Linux exec perintah mengeksekusi perintah Shell tanpa membuat proses baru. Sebagai gantinya, ini menggantikan operasi Shell yang saat ini terbuka. Bergantung pada penggunaan perintah, exec memiliki perilaku dan kasus penggunaan yang berbeda.

Artikel ini menunjukkan cara menggunakan exec perintah di Linux.

Prasyarat

  • Akses ke baris perintah/terminal sebagai sudo.
  • Pemahaman dasar tentang perintah terminal Linux (gunakan lembar contekan perintah Linux kami).
  • Editor teks Linux seperti nano.

Sintaks Perintah Linux exec

exec sintaks perintahnya adalah:

exec [options] [command [arguments]] [redirection]

Perintah berperilaku berbeda tergantung pada jumlah argumen:

  • Jika ada argumen, exec perintah menggantikan shell saat ini dengan program yang dieksekusi. Dalam skrip Bash, perintah apa pun setelahnya tidak dieksekusi .
  • Jika tidak ada argumen perintah, semua pengalihan terjadi di shell saat ini.

exec perintah tidak pernah kembali ke proses asli kecuali ada kesalahan atau perintah berjalan dalam subkulit.

Opsi Perintah Linux exec

Di bawah ini adalah penjelasan singkat dari semua exec pilihan:

Opsi Deskripsi
-c Mengeksekusi perintah di lingkungan kosong.
-l Melewati tanda hubung (- ) sebagai argumen ke nol.
-a [name] Melewati [name] sebagai argumen ke nol.

Lanjutkan membaca untuk melihat bagaimana exec bekerja melalui contoh.

Contoh Perintah Linux exec

Contoh di bawah menunjukkan perilaku exec perintah di terminal dan melalui skrip Bash.

Penggunaan Dasar (Penggantian Proses)

Untuk melihat bagaimana exec berhasil, lakukan hal berikut:

1. Buka terminal dan daftar proses yang sedang berjalan:

ps

Output menunjukkan shell Bash yang sedang berjalan dan ps memerintah. Shell Bash memiliki PID yang unik.

2. Untuk mengonfirmasi, periksa ID proses saat ini dengan:

echo $$

PID sama dengan output dari ps perintah, menunjukkan ini adalah proses Bash yang sedang berjalan.

3. Sekarang, jalankan exec dan berikan perintah sleep selama seratus detik:

exec sleep 100

sleep perintah menunggu selama 100 detik.

4. Di tab terminal lain, daftarkan semua proses yang sedang berjalan dan ambil sleep perintah:

ps -ae | grep sleep

PID untuk proses ini sama dengan PID shell Bash, menunjukkan exec perintah menggantikan proses shell Bash.

Sesi Bash (tab terminal) ditutup ketika seratus detik selesai dan proses berakhir.

Ganti Sesi Shell Saat Ini

Gunakan exec perintah untuk mengganti sesi shell saat ini:

1. Periksa PID shell saat ini:

echo $$

2. Gunakan exec untuk beralih ke Bourne Shell:

exec sh

3. Di tab lain, periksa PID untuk proses Bourne Shell:

ps -ae | grep "\bsh\b"

Catatan: \b di grep adalah Regex untuk mencocokkan batas kata, memungkinkan pencocokan tepat sh dalam keluaran. Pelajari lebih lanjut di tutorial Regex Grep kami.

Perintah menggantikan proses Bash. Keluar dari Bourne Shell akan keluar dari sesi terminal sepenuhnya.

Panggilan Program Dengan exec di Bash Scripts

Untuk melihat bagaimana exec bekerja di skrip Bash, lakukan hal berikut:

1. Buka editor teks, seperti Nano, dan buat file skrip:

nano [script name]

2. Tempelkan kode berikut:

#!/bin/bash

while true
do
        echo "1. Update "
        echo "2. Upgrade "
        echo "3. Exit"
   read Input
   case "$Input" in
        1) exec sudo apt update ;;
        2) exec sudo apt upgrade  ;;
        3) break
   esac
done

Skrip melakukan hal berikut:

  • Baris 3 menciptakan while . yang tak terbatas lingkaran.
  • Baris 5-7 cetak tiga opsi yang mungkin.
  • Baris 8 membaca input pengguna ke dalam variabel $Input .
  • Baris 9 memulai case pernyataan memeriksa input pengguna.
  • Baris 10-11 jalankan apt update atau apt upgrade perintah di tempat shell saat ini. Saat proses pembaruan atau peningkatan versi berakhir, sesi terminal akan ditutup.
  • Baris 12 menggunakan break pernyataan untuk keluar dari while . yang tak terbatas loop dan mengakhiri skrip. Sesi kembali ke shell saat ini seperti biasa.

3. Simpan skrip dan tutup Nano.

4. Jalankan skrip Bash di lingkungan saat ini untuk melihat hasilnya:

. [script name]

Menjalankan skrip dengan perintah sumber menerapkan perilaku skrip ke shell Bash saat ini. Gunakan exec untuk menjalankan skrip Bash dalam program lain untuk keluar bersih.

Mencatat Skrip Bash

exec perintah ditemukan digunakan dalam memanipulasi deskriptor file untuk kesalahan logging di skrip Bash. Deskriptor file Linux default adalah:

  • stdin (0) - Standar di
  • stdout (1) - Keluar standar
  • stderr (2) - Kesalahan standar

Gunakan exec perintah dan mengarahkan deskriptor file ke file untuk membuat log. Untuk melihat cara kerja logging, ikuti langkah-langkah di bawah ini:

1. Buat contoh skrip Bash:

nano logging.sh

2. Tempelkan kode tersebut ke dalam file:

#!/bin/bash

# Create test.log file
touch test.log

# Save test.log to log_file variable
log_file="test.log"

# Redirect stdin to $log_file
exec 1>>$log_file

# Redirect stderr to the same place as stdin
exec 2>&1

echo "This line is added to the log file"
echo "And any other lines after"
eho "This line has an error and is logged as stderr"

Script mengalihkan semua keluaran perintah dan kesalahan ke file yang sama (test.log ).

3. Simpan skrip dan tutup editor teks.

4. Ubah izin skrip menjadi executable:

chmod +x logging.sh

5. Jalankan skrip:

./logging.sh

Script tidak menampilkan kode apa pun. Sebagai gantinya, semua output log ke test.log berkas.

6. Gunakan perintah cat untuk melihat test.log isi file:

cat test.log

File log berisi semua output standar dan pesan kesalahan. Gunakan exec untuk men-debug skrip dan mencatat input, output, atau kesalahan tergantung pada situasinya.

Jalankan Skrip di Lingkungan yang Bersih

-c opsi untuk exec perintah menciptakan lingkungan yang bersih. Untuk mendemonstrasikan, lakukan hal berikut di terminal:

1. Mulai sesi shell Bash baru:

bash

2. Gunakan printenv perintah untuk mencetak semua variabel lingkungan di shell Bash saat ini:

printenv

Perintah mencetak semua variabel lingkungan untuk sesi shell Bash saat ini.

3. Jalankan perintah yang sama menggunakan exec dengan -c bendera:

exec -c printenv

Perintah printenv berjalan di lingkungan yang bersih, dan tidak ada variabel yang keluar ke konsol. Gunakan -c opsi untuk menjalankan skrip atau perintah di lingkungan yang bersih.

exec Dengan perintah find

Perintah find di Linux memiliki exec perintah sebagai opsi untuk menjalankan tindakan pada konten yang ditemukan. Misalnya, baris di bawah menjalankan chmod perintah pada find hasil perintah:

sudo find ~ -name "test.log" -exec chmod +x '{}' \;

find perintah pencarian melalui direktori home (~ ) untuk test.log file dan menjalankan perubahan izin.

Kesimpulan

Setelah mengikuti contoh dari tutorial ini, Anda harus mengetahui cara menggunakan exec perintah secara efektif dalam skrip Bash.

Selanjutnya, pelajari cara menjalankan tugas secara otomatis saat reboot menggunakan Crontab.


Linux
  1. Perintah Tee Linux dengan Contoh

  2. Perintah kepala Linux dengan Contoh

  3. Perintah JQ di Linux dengan Contoh

  1. Perintah wc Linux dengan Contoh

  2. Perintah sortir Linux dengan Contoh

  3. Perintah Echo di Linux (Dengan Contoh)

  1. Perintah man di Linux dengan Contoh

  2. Perintah AWK di Linux dengan Contoh

  3. Perintah Curl di Linux dengan Contoh