Mengapa menjalankan perintah shell Linux dengan '&'?
Untuk mendapatkan prompt Anda kembali dengan segera, dan jalankan proses di latar belakang.
Apa fungsi mereka?
nohup memungkinkan proses latar belakang untuk terus berjalan bahkan setelah pengguna logout (atau keluar dari shell yang memulai).
> & mengalihkan baik output standar dan kesalahan standar ke file log.
& menjalankan semuanya di latar belakang, memberi Anda konfirmasi segera.
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 secara tradisional teks. Ketika sebagian besar program melihat stdin dekat, mereka keluar (ini dapat diubah oleh programmer).
Ketika cangkang induk keluar, stdin ditutup pada anak-anak, dan (sering, biasanya) anak-anak juga keluar. Selain itu, anak-anak menerima sinyal perangkat lunak, SIGHUP, yang menunjukkan bahwa pengguna telah "menutup" (sebelumnya, modem) dan defaultnya di sini adalah untuk keluar juga. (Catatan, seorang programmer dapat mengubah semua ini saat menulis program).
Jadi, apa yang dilakukan nohup adalah memberi anak proses lingkungan I / O yang terpisah, mengikat seluk beluk ke sesuatu yang tidak terikat pada kulit induk, dan melindungi anak dari sinyal SIGHUP. Setelah pengguna terputus, Anda akan melihat proses latar belakang nohup yang dimiliki oleh init (proses 1), bukan shell pengguna.
Namun nohuptidak dapat melakukan pekerjaan sepenuhnya jika proses dijalankan di latar depan, sehingga &digunakan untuk menjalankan program di latar belakang, di mana ia dapat dengan senang hati tetap berjalan dengan atau tanpa pengguna masuk.