سؤال نقل عملية قيد التشغيل بالفعل إلى الشاشة


يراني وظيفة مكتبي بشكل روتيني متصلاً بمربع لينوكس عبر VNC.

في بعض الأحيان أقوم بتشغيل مهمة بعيدة على وحدة التحكم ، وأدرك لاحقًا أنها تعمل لفترة أطول من المتوقع. (يجب أن تكون قد بدأت ذلك تحت الشاشة في المقام الأول ...)

لا أريد الاحتفاظ بمحطة العمل الخاصة بي تعمل طوال الليل فقط للحفاظ على جلسة VNC مفتوحة ؛ أرغب في نقل تلك الوظيفة عن بعد التي تعمل بالفعل إلى جلسة شاشة (في المربع البعيد) ، حتى أتمكن من إيقاف تشغيل محطة العمل (وإعادة الاتصال في صباح اليوم التالي).

كيف يمكن القيام بذلك ، على كل حال؟


206
2017-08-18 11:03


الأصل


وانها خدعة serverfault.com/questions/49877/... - يبدو أنه لا يمكن القيام به. - Paul Dixon
superuser.com/questions/28568/screen-a-running-process - warren
انظر أيضا كيف يمكنني التبرء لعملية قيد التشغيل وإقرانها بقذيفة شاشة جديدة؟. - dma_k
ممكن نسخة من هل يمكنني nohup / screen عملية بدأت بالفعل؟ - scai
ابحث عن نص برمجي. - Vashu


الأجوبة:


القي نظرة على reptyrالذي يفعل ذلك بالضبط. صفحة جيثب لديه كل المعلومات.

reptyr - أداة لبرامج "إعادة التعريف".

reptyr هو أداة لأخذ   برنامج التشغيل الحالي وإرفاق   إلى محطة جديدة. بدأت أ   عملية طويلة الأمد على ssh ، ولكن   يجب أن تغادر ولا تريد ذلك   يقاطعها؟ مجرد البدء في الشاشة ، واستخدام   reptyr للاستيلاء عليها ، ثم قتل   جلسة ssh ورئيس على المنزل.

الاستعمال

reptyr PID

"reptyr PID" سوف يمسك العملية   مع معرف PID وإرفاقه الخاص بك   المحطة الحالية.

بعد الإرفاق ، سوف تأخذ العملية   المدخلات من وكتابة الإخراج إلى الجديد   الطرفية ، بما في ذلك ^ C و ^ Z.   (لسوء الحظ ، إذا كنت تخلفه ،   لا يزال عليك تشغيل "bg" أو   "fg" في المحطة القديمة. هذا هو   من المستحيل إصلاحها في   طريقة معقولة دون ترقيع الخاص بك   الصدف.)


194
2018-06-28 09:25



إذا نظرت ، مثلي ، إلى الرابط أعلاه واعتبرت تثبيت البرنامج من مصدر ، فاختار: إنه مجرد apt-get بعيدا عن أنظمة دبيان. - mlissner
هذا رائع ، كيف لم أر هذا من قبل؟ - deed02392
هذا رائع! كنت أحسبها 10 مرات إذا استطعت! أيضا ، reptyr متاح في RedHat repos كذلك. فقط "تثبيت yum" للحصول عليه. - Mark J. Bobak
لا يعمل إلا في الحالات الأكثر تافهة: Unable to attach. (This most commonly means that 11690 has a suprocesses) - Mehrdad
على الأقل كجذر ، يمكنك استخدام reptyr -T PID - ChristophK


لا يمكنك فعل هذا بسهولة. أقترح عليك جعلها عادةً بدء تشغيل الشاشة كأول شيء تفعله بعد فتح وحدة التحكم.

ومع ذلك ، بالنسبة لمشكلتك الفعلية ، هناك شيء آخر يمكنك تجربته: بعد إطلاق وظيفتك من المحطة ، يمكنك وضعها في الخلفية بكتابة ctrl-z ثم bg. بعد ذلك ، فصل المهمة عن shell الأصل ؛ في باش تفعل disown -h %<jobid>. بعد ذلك ، يمكنك إغلاق المحطة بشكل آمن وستستمر المهمة في العمل.


42
2017-08-18 11:11



هذا عمل جيد جدا لحالتي. لم يتمكن كل من التصفية والفشل في الاستيلاء على العملية ، ولكن كل ما احتاجه هو أن أتمكن من إغلاق المحطة وترك العملية قيد التشغيل. - STW
لمعلوماتك: بعد تبرأ من-العملية يمكن أن تكون reptyrداخل الداخل شاشة. - Adam
هذا قتل بلدي تشغيل البرنامج :( - Mehrdad


أثناء استخدامك لـ Linux ، ماذا عن استخدام retty داخل عملية الشاشة التي تم تشغيلها حديثًا؟

$ screen -S my_process
$ retty $(pgrep my_process)
/redraw

HTH

في صحتك،


37
2017-08-18 12:09



لم أكن أعرف من retty ، شكرا. ومع ذلك ، بالنسبة إلى نوع الوظائف الطويلة الأمد التي أضعها في ذهني ، فأنا متردد بعض الشيء في استخدام أداة تشير إلى نفسها على أنها "مختبرة قليلاً". أذهب مع حل إيرل.
انظر لا retty في جنتو - Sergei
لا يمكن إرفاقه بـ 4858 - Arnold Roa