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