Mirip dengan banyak pertanyaan sebelumnya, saya mendapati diri saya menjalankan pekerjaan yang saya harap telah saya jalankan di layar. Saya terpaksa menolak proses karena saya harus memutuskan sambungan. Sekarang setelah saya terhubung kembali, saya melihat bahwa prosesnya masih berjalan. Bagaimana saya bisa "mendapatkan kembali" prosesnya, sehingga saya bisa melihat hasilnya dan memberikan input?
Pertanyaan ini berbeda dari hanya memindahkan proses yang berjalan ke layar, karena melibatkan pembukaan kembali stdin / out / err yang hilang.
Jawaban:
Ini adalah pertanyaan duplikat - lihat Memindahkan proses yang sudah berjalan ke Screen , yang menunjuk ke retty , yang merupakan peretasan mengerikan yang menggambarkan diri sendiri menerapkan apa yang selalu saya duga mungkin terjadi tetapi tidak pernah benar-benar mencoba: ia menemukan fd 0, 1 , dan 2 (standar masuk, keluar, dan kesalahan, masing-masing) untuk proses dan menempel pada mereka, seperti parasit menyimpang yang mengerikan yang seharusnya tidak.
sumber
Dengan menolak proses, Anda secara efektif mengatakan bahwa Anda ingin mengabaikan SIGHUP yang dikeluarkan oleh terminal. Setelah Anda menutup sesi Anda (katakanlah, bash), proses ini kemudian akan menjadi milik init. Jadi, ketika Anda mengatakan ingin memiliki kembali proses setelah menyerahkan kepemilikan, Anda mengatakan ingin mengambil kepemilikan dari proses lain - yang tidak diterapkan, dan untuk alasan yang baik. Ini tidak mungkin dilakukan dengan anggun di Linux.
sumber
disown
bash-specific, yang, terlepas dari namanya, sebenarnya tidak ada hubungannya dengan perubahan kepemilikan proses.