Cara mengarahkan output aplikasi di latar belakang ke / dev / null


Jawaban:


230

Kau gunakan:

yourcommand  > /dev/null 2>&1

Jika itu harus berjalan di Latar Belakang tambahkan &

yourcommand > /dev/null 2>&1 &

>/dev/null 2>&1berarti mengalihkan stdoutke /dev/nullAND stderrke tempat di mana stdoutmenunjuk pada waktu itu

Jika Anda ingin stderrmuncul di konsol dan hanya stdoutpergi ke /dev/nullAnda dapat menggunakan:

yourcommand 2>&1 > /dev/null

Dalam kasus stderrini dialihkan ke stdout(misalnya konsol Anda) dan setelah itu yang asli stdoutdialihkan ke/dev/null

Jika program tidak dihentikan, Anda dapat menggunakan:

nohup yourcommand &

Tanpa parameter apa pun, semua keluaran akan masuk ke nohup.out


keduanya bekerja, tetapi ada sedikit perbedaan, tapi tidak ingat
evildead

ah ok mendapatkannya dan menambahkan versi lainnya
evildead

Jika ini adalah perintah terakhir dalam file bash, satu hal yang saya perhatikan adalah ia meninggalkan konsol perintah yang memanggil file tersebut tanpa prompt.
Dennis

@elig redirecting output dari aplikasi yang sudah berjalan tidak mungkin dilakukan, atau setidaknya tidak semudah itu, karena redirection via dup2()terjadi segera setelah fork()tetapi sebelumnya exec*(). Setelah exec*()program dijalankan, shell tidak memiliki kemampuan untuk mengarahkan output dari proses itu. Koreksi saya jika saya salah, tetapi saya tidak tahu tentang shell yang telah menerapkan fungsi seperti itu.
evildead

3

Ini juga akan mengarahkan keduanya:

yourcommand  &> /dev/null

yourcommand  >& /dev/null

meskipun manual bash mengatakan yang pertama lebih disukai.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.