Saya belajar exec
perintah. Saya tahu bahwa exec
perintah itu menggantikan proses yang telah memulainya. Jadi itu tidak mungkin untuk kembali ke proses yang digantikan oleh exec
perintah.
Orang dapat mengatakan bahwa tujuannya adalah untuk membuatnya tidak mungkin untuk kembali ke proses yang memulai itu.
Tetapi apa kegunaan lain untuk memiliki sesuatu seperti exec
tersedia sebagai perintah?
command-line
mizech
sumber
sumber
exec ssh server-that-does-byobu-on-login.example.com
sangat menyenangkan, karena ^ A ^ D menutup terminal sama sekali. (Lebih umum lagi,exec byobu
(atauexec screen
,exec tmux
)Jawaban:
Dalam skrip wrapper
exec
digunakan terutama dalam skrip wrapper.Jika Anda ingin memodifikasi lingkungan untuk program sebelum menjalankan program utama, Anda akan sering menulis skrip dan pada akhirnya memulai program utama. Tapi skrip itu tidak perlu disimpan dalam memori saat itu. Jadi,
exec
digunakan dalam kasus ini sehingga, program utama dapat menggantikan skrip ibu.Ini adalah contoh praktisnya. Itu
mate-terminal.wrapper
naskah datang dengan pasangan-terminal. Ini dimulaimate-terminal
dengan beberapa argumen tambahan dengan memeriksa lingkungan pengguna.Poin yang perlu diperhatikan di sini adalah, ada
exec
panggilan, yang menggantikan skrip ini dalam memori.Berikut adalah pertanyaan serupa yang dijawab di Situs Unix & Linux StackExchange - /unix//q/270929/19288
Untuk mengarahkan file-deskriptor
Penggunaan umum lainnya
exec
adalah dalam mengarahkan file-deskriptor.stdin
,stdout
,stderr
Dapat diarahkan ke file menggunakan exec.Redirect
stdout
-exec 1>file
akan menyebabkan output standar menjadi file bernamafile
untuk akhir sesi shell saat ini. Apa pun untuk ditampilkan ke tampilan akan ada di file.Redirect
stdin
- Ini juga dapat digunakan untuk mengarahkan ulangstdin
ke file. Misalnya, Jika Anda ingin mengeksekusi file skripscript.sh
, Anda bisa mengarahkan sajastdin
ke file menggunakanexec 0<script.sh
.sumber
exec
yaitu penggunaannya dalam pengalihan file deskriptor.Itu
exec
perintah menggantikan proses shell saat ini dengan perintah yang ditentukan. Biasanya, ketika Anda menjalankan perintah proses baru muncul (bercabang). Theexec
perintah tidak menelurkan sebuah proses baru. Sebagai gantinya, proses saat ini dilapis dengan perintah baru. Dengan kata lainexec
perintah dijalankan di tempat shell saat ini tanpa membuat proses baru.Ada tiga penggunaan perintah exec yang paling umum:
1. Penggantian proses
Contoh-1: Jika Anda membuka
bash
shellbarusebagaidi
pstree
dalamnya terlihat sepertibash
Shell sebelumnya masih ada dan Anda mendapatbash
shell baru . Sedangkan jika Anda membuka bash shell baru seperti,yang
pstree
menunjukkanDi sini yang lama
bash
diganti dengan yang baru. Sangat berguna untuk keluar dari banyak login dalam satu perintah. Itu lebih aman dan menghilangkan kesempatan meninggalkan terminal terbuka karena kesalahan. Lihat Keluar dari root dan pengguna dengan satu perintahContoh-2: Anda dapat membuka file sebagai
Ketika Anda berhenti,
vi
tidak perlu menutup terminal secara terpisah karena shell sudah diganti. Segera setelah Anda menutup terminal vi juga ditutup.2. Metode pengalihan deskriptor file dalam skrip shell
Itu
exec
perintah juga dapat digunakan dalam skrip shell dinamis terbuka, dekat, dan menyalin file deskriptor. Itu memungkinkan melakukan pengalihan STDIN, STDERR, STDOUT dan deskriptor file lainnya ke berbagai file di dalam skrip shell, alih-alih string permintaan perintah. Jika Anda tidak menentukan perintah atau argumen, Anda bisa menentukan simbol pengalihan dan deskriptor file untuk melakukan fungsi-fungsi ini.Katakanlah Anda memiliki skrip shell yang
script.sh
Anda ingin memiliki file logscript.log
, Anda dapat menggunakanexec
sebagai,yang setara dengan
3. Membuat tahapan proses menggunakan perintah exec
Anda juga dapat menggunakan perintah exec untuk membuat satu set skrip shell yang mengeksekusi satu sama lain seperti tahapan proses. Alih-alih menelurkan proses baru setiap kali Anda perlu mentransfer kontrol ke skrip berikutnya Anda menjalankan perintah exec.
Dalam hal ini pernyataan terakhir dari setiap tahap harus berupa
exec
perintah yang memanggil tahap berikutnya.Lihat penggunaan
exec
perintah dalam skrip shell untuk lebih lanjut.Catatan: Bagian di atas diambil dari ini.
sumber
Sejauh yang saya tahu itu juga digunakan untuk mengarahkan file deskriptor (misalnya, STDOUT, STDERR, STDIN) dari skrip bash.
Jadi misalnya, Anda bisa membaca dari file sebagai ganti dari keyboard dengan menggunakan pengalihan STDIN dan menulis ke file bukan terminal dengan STDOUT (atau bisa STDERR tergantung pada program) pengalihan.
sumber