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

100

Saya ingin mengarahkan output yang dihasilkan dari aplikasi latar belakang di Linux ke / dev / null.

Saya menggunakan editor teks kate dan mencetak semua pesan debug di terminal yang ingin saya alihkan ke / dev / null.

Ada ide bagaimana melakukannya?

Terima kasih

Kiran
sumber

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

evildead
sumber
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.

Jim Hunziker
sumber