Misalnya, ketika saya mengetik ping 8.8.8.8 &
, mengapa kita bisa melihat proses ping bekerja? Dan ketika saya mengetik find / -name '*test*' &
, itu juga terlihat di monitor.
Mengapa demikian? Bukankah itu benar-benar di latar belakang?
Jawaban Terbaik
&
mengarahkan shell untuk menjalankan perintah di latar belakang, yaitu, perintah itu bercabang dan dijalankan di sub-kulit terpisah, sebagai pekerjaan, secara asinkron.
Perhatikan bahwa ketika Anda meletakkan &
output – keduanya stdout dan stderr – akan tetap dicetak ke layar . Jika Anda tidak ingin melihat output apa pun di layar, arahkan ulang keduanya stdout
dan stderr
ke file dengan:
myscript > ~/myscript.log 2>&1 &
Biasanya Anda mungkin ingin membuang stderr
dengan mengarahkannya ke /dev/null
jika Anda tidak khawatir tentang menganalisis kesalahan nanti.
Anda bahkan dapat menjalankan perintah/skrip secara bersamaan, di sub-kulit terpisah. Misalnya;
./script1 & ./script2 & ./script3 &
Pekerjaan latar belakang dapat dibawa kembali ke baris perintah sebelum selesai dengan perintah:
fg <job-number>
job-number
dapat diperoleh dengan menjalankan
jobs