Yanıtlar:
Linux işlerinin ve süreç sahipliğinin nasıl çalıştığını göz önünde bulundurarak, kabul ediyorum, benimseyen sürecin yardımı olmadan, bir sürece yeniden sahip olmak gerçekten mümkün değil.
Bir ebeveyn bir çocuğu 'reddedebilir', o zaman 'init' olarak adlandırılan süreç tarafından “evlat edinilir”. Sistem güvenliği, birinin başka birinin işlemlerini ele geçirmesini önler. Bunu reddettiğinizde, bir süreç kontrol etmek için başkasının (init) olur. Siz 'kullanıcı' olarak işlemi hala öldürebilirsiniz, ancak geri alamazsınız. Init'i işleminize geri döndürmeye zorlama girişimi, init'in bile posta okumaması gibi işe yaraması mümkün değildir.
Kulağa geldiği gibi, "Yapma!" Cevabını gerçekten kaybediyor.
reptyr
(kullanım örneği için cevabımı inceleyin).
Bunun, talihsiz durumdaki hiç kimsenin yanlış işlemi reddetmiş olmasına yardım etmeyeceğini varsaysam da, eğer iş akışınızdan vazgeçmek ve yerine geçmek için:
https://github.com/nelhage/reptyr
Herhangi bir işlemi geri alabileceksiniz (yani, ekran içinde hareket ettirebilirsiniz).
reptyr
çözümdür, ancak kullanmayı bırakmanıza gerek yoktur disown
. Netlik için yeni bir cevap yazdım.
İhtiyacın olan tek şey reptyr
. GitHub'da yaşıyor ve Wheezy'den beri Debian ve muhtemelen diğer GNU / Linux dağıtımları için paketlendi. İşlem kimliği (PID) ile çağırırsanız, sahipsiz sürecinizi mevcut terminalde ön plana çıkarır. Yani örneğin:
pgrep -f DISOWNED_PROCESS # to find out the PID of the disowned process
reptyr PID # insert this PID here
Üzgünüm hayır. Prensip olarak bu mümkün değildir, çünkü ortadan kaldırmak sadece bazı kabuk içsel durumlarını değiştirir - temel olarak işlem kimliğini bir listeden kaldırır ve çok fazla güçlük çekmeden geri konabilir (bu testlerde biraz dikkatli olmanız gerekir) Yeniden yerleştirilen pid doğru oturumda, ancak bu aşılmaz bir şey değil). Ancak normal mermilerden hiçbirinin (bash, ksh, tcsh, zsh) yeniden eklemenin bir yolu yok gibi görünüyor. (Her ne kadar zsh ile ve ortak dizelere yazabilseniz de jobstates
, bu şekilde ne kadar başarabileceğinizi bilmiyorum.)jobdirs
jobtext
Kabuğun sahipsiz alt işlemlerinde olduğu gibi istenmeyen işlemlere sinyal göndermesini istiyorsanız, bir sinyal alana ve aynı sinyali gönderilmeyen işleme gönderene kadar bekleyen bir saplama işi yazabilirsiniz. + Ve işaretlerini taklit etmek için istenmeyen işlemlere gönderebilir SIGSTOP
ve gönderebilirsiniz . Bunların hiçbiri yeniden sahiplenmek kadar uygun değildir.SIGCONT
CtrlZbg
Koşullar nelerdir Eğer terminalinizi bir süre daha geri almak istiyorsanız, bunun yerine GNU Ekranını kullanabilirsiniz . Süreci bir uçbirimden tamamen ayırmaz - Ekran, işlemin faydası için öykünür - ancak kullandığınız asıl uçbirimden takıp çıkarabilirsiniz. Hatta bir ekranı çıkarabilir, çıkış yapabilir, sonra tekrar giriş yapabilir ve aynı ekrana tekrar ekleyebilirsiniz.