GNU/Linux >> Belajar Linux >  >> Linux

Mengapa menjalankan perintah shell Linux dengan '&'?

Dalam skrip Bash Shell, ampersand “&” digunakan untuk proses fork:

find -name hello &

Ini akan menyebabkan perintah find bercabang dan dijalankan di latar belakang (Anda selalu dapat mematikannya dengan PID-nya).


Mengapa menjalankan perintah shell Linux dengan '&'?

Untuk segera mendapatkan permintaan Anda kembali, dan menjalankan proses di latar belakang.

Apa fungsinya?

nohup memungkinkan proses latar belakang untuk terus berjalan bahkan setelah pengguna keluar (atau keluar dari shell yang memulai).

>& mengalihkan keluaran standar dan kesalahan standar ke file log.

& menjalankan semuanya di latar belakang, segera mengembalikan permintaan Anda.

Penjelasan:

Setiap proses Linux membuka tiga saluran I/O, input "stdin", output standar "stdout", dan output kesalahan standar "stderr". Mereka dapat digunakan untuk biner, tetapi biasanya berupa teks. Ketika sebagian besar program melihat stdin tutup, mereka keluar (ini dapat diubah oleh programmer).

Ketika shell induk keluar, stdin ditutup pada anak-anak, dan (seringkali, biasanya) anak-anak juga keluar. Selain itu, anak-anak menerima sinyal perangkat lunak, SIGHUP, yang menunjukkan bahwa pengguna telah "menutup telepon" (sebelumnya, modem) dan standarnya di sini adalah untuk keluar juga. (Perhatikan, programmer dapat mengubah semua ini saat menulis program).

Jadi, apa yang nohup lakukan adalah memberi proses anak lingkungan I/O yang terpisah, mengikat seluk beluk ke sesuatu yang tidak terikat ke shell induk, dan melindungi anak dari sinyal SIGHUP. Setelah pengguna terputus, Anda akan melihat proses latar nohup yang dimiliki oleh init (proses 1), bukan shell pengguna.

Namun nohup tidak dapat melakukan pekerjaan sepenuhnya jika proses dijalankan di latar depan, jadi & digunakan untuk menjalankan program di latar belakang, yang dengan senang hati dapat tetap berjalan dengan atau tanpa pengguna masuk.


Selain jawaban Martin, Ash, dan Kevin, terkadang Anda akan melihat ampersand yang digunakan secara matematis untuk bitwise AND:

$ echo $(( 11 & 7 ))
3

Jika Anda tidak terbiasa dengan operator bit:

11: 1011
 7: 0111
-------- AND
 3: 0011

Di setiap posisi ada satu bit di angka pertama DAN angka kedua, setel bit itu ke satu di jawabannya.

Untuk menguraikan jawaban Ash, saat digunakan dalam pengalihan, ampersand dapat memberi tahu Shell untuk menyalin deskriptor file. Dalam perintah ini echo "hello" > outputfile 2>&1 ampersand menyebabkan output apa pun yang mungkin mengalami kesalahan standar (stderr, deskriptor file 2) pergi ke tempat yang sama dengan output standar (stdout, deskriptor file 1, default untuk sisi kiri > ). >& outputfile operator adalah singkatan dari > outputfile 2>&1 .

Juga, baru di Bash 4, ada dua terminator baru untuk klausa di case perintah ;& dan ;;& yang memengaruhi apakah suatu kasus "gagal" dan, jika demikian, apakah pengujian berikutnya dilakukan.


Linux
  1. Mengapa saya tetap menggunakan xterm

  2. Perintah Tee 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. Cara Menjalankan Perintah dengan Batas Waktu (Timeout) Di Linux