Bisakah saya mengubah nama `nohup.out`?

254

Ketika saya menjalankan nohup some_command &, output menuju ke nohup.out; man nohupmengatakan untuk melihat info nohupyang pada gilirannya mengatakan:

Jika output standar adalah terminal, output standar perintah ditambahkan ke file 'nohup.out'; jika itu tidak dapat ditulis, ditambahkan ke file '$ HOME / nohup.out'; dan jika itu tidak dapat ditulis, perintah tidak dijalankan.

Tetapi jika saya sudah memiliki satu perintah menggunakan nohupdengan output pergi ke /nohup.outdan saya ingin menjalankan yang lain, nohupperintah, dapatkah saya mengarahkan output ke nohup2.out?

David LeBauer
sumber

Jawaban:

416
nohup some_command &> nohup2.out &

dan voila.


Sintaks yang lebih lama untuk versi Bash <4:

nohup some_command > nohup2.out 2>&1 &
ismail
sumber
4
@ismail, jika saya mengerti, ini mengarahkan output dari stdout dan nohup.out, ke nohup2.out. Lalu apa fungsinya 2>&1&?
David LeBauer
12
2>&1mengalihkan stderrke file output yang sama seperti stdoutdalam kasus ininohup2.out
ismail
17
Dalam Bash 4, kedua pengalihan dapat disingkat menjadi satu &> nohup2.out.
ephemient
1
Saya mencoba &> nohup2.out dan berhasil, tetapi bagaimana Anda bisa tahu versi bash Anda?
monkut
9
@monkut bash --version
ismail
58

Untuk beberapa alasan, jawaban di atas tidak berhasil untuk saya; Saya tidak kembali ke command prompt setelah menjalankannya seperti yang saya harapkan dengan trailing &. Sebaliknya, saya hanya mencoba

nohup some_command > nohup2.out&

dan itu berfungsi seperti yang saya inginkan. Meninggalkan ini di sini kalau-kalau ada orang lain dalam situasi yang sama. Menjalankan Bash 4.3.8 untuk referensi.

Astaga
sumber
12

Ketika penangan file menunjuk ke i-node (yang disimpan secara independen dari nama file) pada sistem Linux / Unix Anda dapat mengganti nama default nohup.outke nama file lain kapan saja setelah memulai nohup something&. Jadi, orang juga dapat melakukan hal berikut:

$ nohup something&
$ mv nohup.out nohup2.out
$ nohup something2&

Sekarang somethingtambahkan baris ke nohup2.outdan something2ke nohup.out.

Benar
sumber
10

Metode di atas akan menghapus data file output Anda setiap kali Anda menjalankan perintah nohup di atas.

Untuk menambahkan output dalam file yang ditentukan pengguna Anda dapat menggunakan >>perintah nohup

nohup your_command >> filename.out &

Perintah ini akan menambahkan semua output dalam file Anda tanpa menghapus data lama.

Irshad Khan
sumber