Saya memiliki program yang berjalan pada shell SSH. Saya ingin menjedanya dan dapat membatalkan jeda eksekusinya saat saya kembali.
Salah satu cara yang saya pikirkan untuk melakukannya adalah dengan mentransfer kepemilikannya ke shell layar, sehingga membuatnya tetap berjalan di sana.
Apakah ada cara lain untuk melanjutkan?
Jawaban yang Diterima:
Anda dapat mencabut “kepemilikan” program dari shell dengan disown
bawaan:
# press Ctrl+Z to suspend the program
bg
disown
Namun ini hanya memberitahu shell untuk tidak mengirim SIGHUP
memberi sinyal ke program saat shell keluar. Program akan mempertahankan koneksi apa pun yang dimilikinya dengan terminal, biasanya sebagai aliran input, output, dan kesalahan standar. Tidak ada cara untuk memasang kembali itu ke terminal lain. (Layar bekerja dengan mengemulasi terminal untuk setiap jendela, sehingga program dilampirkan ke jendela layar.)
Dimungkinkan untuk memasang kembali filedescriptors ke file yang berbeda dengan melampirkan program di debugger (yaitu menggunakan ptrace
) dan membuatnya memanggil open
, dup
dan close
. Ada beberapa alat yang melakukan ini; ini adalah proses yang rumit, dan kadang-kadang mereka malah akan menghentikan prosesnya. Kemungkinannya termasuk (tautan yang dikumpulkan dari jawaban ke Bagaimana saya bisa menyangkal proses yang sedang berjalan dan mengaitkannya ke shell layar baru? dan Bisakah saya nohup/menyaring proses yang sudah dimulai?):
- ambil (dan cryopid yang lebih ambisius)
- neerc
- mengalihkan
- reptir
- retty