Bagaimana saya bisa mencegah nohup membuat file ~ / nohup.out?

16

Saya menggunakan perintah $ nohup ...untuk memulai aplikasi di latar belakang sehingga saya bisa menutup jendela terminal sesudahnya.

Setelah dieksekusi itu menciptakan file ~/nohup.out.

Contoh:

orschiro@x230:~$ nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py"
nohup: ignoring input and appending output to 'nohup.out'

Bagaimana saya mencegah nohupmembuat nohup.out?

orschiro
sumber
2
Anda mungkin juga mempertimbangkannya byobu. :)
Andrea Lazzarotto
Terima kasih, @AndreaLazzarotto! Bisakah Anda memberi saya contoh cara menggunakannya?
orschiro
2
Nah, saya sarankan Anda melihat videonya di sini: byobu.co Pada dasarnya, untuk apa yang ingin Anda lakukan, Anda jalankan saja byobu, mulailah apa pun yang Anda inginkan, kemudian tekan F6dan Anda selesai. Anda dapat kembali ke sana dengan berlari byobulagi.
Andrea Lazzarotto
Luar biasa! Anda mungkin ingin menambahkan ini sebagai jawaban resmi?
orschiro
Secara teknis, saran saya tidak menjawab pertanyaan Anda sama sekali, itu hanya sebuah alternatif. : D
Andrea Lazzarotto

Jawaban:

20

Anda dapat mengarahkan output di mana saja Anda suka, misalnya:

nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py" >/dev/null 2>&1

redirection mencegah file output default nohup.outdibuat. /dev/nullterlupakan, jadi jika Anda tidak ingin data sama sekali, kirim ke sana.

Di bash Anda dapat menyingkat >/dev/null 2>&1ke&>/dev/null

Untuk program yang saya gunakan sering saya membuat alias (dan menambahkannya ke saya .bashrc) misalnya

alias show_state='nohup /bin/bash -c "sleep 15 && python3 /home/orschiro/bin/show_state.py" >/dev/null 2>&1'

Sekarang yang harus saya ketik adalah show_state

Zanna
sumber
2
@orschiro: Setelah beberapa tahun, itu tidak akan samar dan Anda akan mengingatnya;) Saya sarankan tetap menggunakannya, karena mengenyahkannya berarti Anda tidak akan mendapatkan pengalaman itu, dan mengetahui bagaimana operator pengalihan BASH bekerja dari atas kepala Anda adalah keterampilan penting.
Lightness Races dengan Monica
Bukankah ini lebih baik sebagai fungsi? Sesuatu seperti show_state () { /bin/bash -c "$@" &>/dev/null }? (Peringatan: sintaksis yang buruk dan mungkin tidak akan berfungsi! Ini hanya contoh!). Satu nitpick: mengapa show_stateketika Anda membuang output nohup?
Ismael Miguel
Saya tidak tahu apa yang dilakukan skrip @IsmaelMiguel tapi saya menganggap itu adalah indikator dengan ikon baki, bukan untuk mencetak "status" (apa pun itu) ke stdout. Tentu, fungsi mungkin lebih menyenangkan daripada alias ^. ^
Zanna
Oh saya mengerti! Maaf, tidak melihat nama .pyfile. Dan ya, suatu fungsi lebih menyenangkan. Saya memiliki fungsi ini ditulis buruk pada desktop Debian: shutup() { source "$@" >/dev/null 2>&1 & }. Dan itu berhasil. Mungkin Anda bisa menyarankan sesuatu yang serupa, tetapi jauh lebih baik?
Ismael Miguel
Saya tidak pernah tahu bahwa itu &>berhasil (dan menurut saya itu terlihat seperti latar belakang ditambah pengalihan stdout). Saya selalu mempelajarinya sebagai >&. Apakah ini standar?
Random832