Pertimbangkan nohup
eksekusi berikut :
nohup script.sh > script.out &
Apakah ada cara untuk keluar dari terminal, menghubungkan kembali, membawa proses kembali ke latar depan dan berinteraksi dengannya menggunakan keyboard?
command-line
process
background
nohup
Adam Matan
sumber
sumber
nohup tidak memutuskan perintah dari terminal, itu membuat skrip Anda diabaikan
SIGHUP
, dan mengalihkanstdout/stderr
ke filenohup.out
, sehingga perintah dapat terus berjalan di latar belakang setelah Anda logout.nohup
tidak secara otomatis menempatkan perintah yang dijalankan di latar belakang. Seseorang harus melakukan itu secara eksplisit, dengan mengakhiri baris perintah dengan&
.jobs
dapat mencetak pekerjaan yang sedang berjalan dan statusnya. Jika perintahjobs
tidak dapat menemukannya, maka itu bukan lagi proses anak dari shell itu.Seseorang dapat mengembalikan pekerjaan latar ke latar depan di bash menggunakan
fg
bahkan jika dijalankan dengannohup
. Tetapi itu tidak akan mengubah redirection output, yang masih akan pergi ke filenohup.out
.Jika Anda menutup shell / terminal atau keluar, perintah Anda bukan lagi anak dari shell itu. Itu milik
init
proses. Jika Anda mencari di dalam,pstree
Anda akan melihatnya sekarang dimiliki oleh proses 1 (init
). Itu tidak dapat dibawa kembali ke latar depan karena latar depan tidak ada lagi.sumber
If the command jobs cannot find it, then it is no longer a child process of that shell.
Ini salah: mencoba urutan ini untuk melihat bagaimana:sleep 100 & disown ; echo Jobs:; jobs; echo Tree:; pstree -ap $$
. Setelah perintah ini, Anda masih akan melihatsleep
pekerjaan dengan PID yang sama dicetak ketika Anda menelurkannya, sementara tidakjobs
akan mencetak apa pun. Satu-satunya cara proses anak dapat berhenti menjadi anak adalah kehilangan orang tuanya (maka anak yatim menjadi anakinit
) atau forking + keluar (tetapi kemudian PID berubah, jadi itu bukan anak asli).Saya akan menggunakan kedua terminal multiplexer, tetapi tmux , bukan layar. Layar, untuk semua maksud dan tujuan, tidak dipelihara. Konfigurasi ini adalah seni gelap, kemungkinan pertama kali direkam dalam lampiran Necronomicon. Mencoba untuk menulis konfigurasi Anda sendiri adalah sekilas Cthulu. Serius. Lihat-lihat file .screenrc orang . Yang pasti, ada beberapa cara untuk menengahi kekecewaan layar terhadap konfigurasi. Byobu melakukan pekerjaan yang mengagumkan sebagai tabir antara pengguna fana dan kode yang tidak suci. Muncul dengan warna yang masuk akal, antarmuka menu, dan mungkin yang paling penting, status bar.
Tapi seperti yang saya katakan, saya sarankan tmux sebagai gantinya. Ini masih memerlukan beberapa konfigurasi kecil, tetapi sudah didokumentasikan dengan baik , dan file konfigurasi Anda tidak akan terlihat seperti omong kosong. Anda juga mulai dengan warna dan bilah status. Bandingkan file screenrc dan tmux.conf saya:
sumber
Jika Anda hanya tertarik untuk mencari topi langsung, hasilnya mungkin cocok untuk Anda:
sumber
Perintah Linux apa pun dapat dikirim ke latar belakang dengan '
&
' ditambahkan pada akhirnya.Untuk melihat semua pekerjaan latar belakang, Anda dapat menerbitkan
jobs
Di sini saya menjalankan 3 pekerjaan di latar: zookeeper, kafka, dan mongo daemon. [1], [2] dan [3] adalah nomor pekerjaan masing-masing untuk tugas ini.
Anda dapat membawa tugas-tugas tersebut ke latar depan menggunakan
fg %$taskNumber.
sumber