Apakah ada cara untuk mengarahkan output nohup ke file log selain nohup.out?

113

Saya sering menggunakan program ini nohupagar proses saya kebal terhadap hangup. Jadi jika saya ingin membuat program programkebal terhadap hangup, saya menggunakan perintah

nohup program &

di mana &menempatkan proses di latar belakang.

Saat memulai, nohupberi saya pesan:

nohup: menambahkan output ke `nohup.out '

Apakah ada cara untuk mengirim output ke file selain nohup.out? Seringkali saya ingin menjalankan banyak proses dalam direktori yang sama menggunakan nohup, tetapi jika saya melakukan ini, semua output akan disatukan dalam satu nohup.outfile.

Halaman manual (misalnya, di sini ) tampaknya tidak memiliki opsi untuk menentukan file log. Bisakah Anda mengkonfirmasi ini? Juga, apakah Anda memiliki pemikiran tentang bagaimana saya bisa mengatasi masalah ini?

Andrew
sumber
3
Setahun terlambat, tetapi jawaban komprehensif yang baik diberikan di sini: stackoverflow.com/questions/4549489/…
Rahul Jha

Jawaban:

133

nohupHalaman manual GNU coreutils menunjukkan bahwa Anda dapat menggunakan pengalihan normal:

Jika input standar adalah terminal, arahkan dari / dev / null. Jika output standar adalah terminal, tambahkan output ke 'nohup.out' jika memungkinkan, '$ HOME / nohup.out' jika tidak. Jika kesalahan standar adalah terminal, arahkan kembali ke output standar. Untuk menyimpan output ke FILE, gunakan 'nohup COMMAND> FILE'.

Sunting: Saya tidak membaca tautan Anda pada awalnya; Anda mungkin memiliki versi yang berbeda nohup, meskipun bagian ini menyarankan Anda masih dapat menggunakan pengalihan biasa:

 nohup.out          The output file of the nohup execution if
                    standard  output is a terminal and if the
                    current directory is writable.

Anda dapat mengarahkan output standar dan kesalahan standar ke file yang berbeda:

nohup myprogram > myprogram.out 2> myprogram.err

atau ke file yang sama:

nohup myprogram > myprogram.out 2>&1
lk-
sumber
54
Untuk menjawab secara spesifik: gunakan nohup program > program.out &untuk menulis output program.outsebagai gantinohup.out
Jim Paris
4
Dan ini tidak spesifik untuk utilitas GNU, perilaku ditentukan oleh POSIX.
Gilles
3
Sepertinya tidak berhasil. Ini mengarahkan output dari perintah nohup bukan output dari myprogram.
Kris
2
@Kris Redirection harus dilakukan sebelum &karakter trailing
yunzen