سؤال هل من الممكن فصل عملية من محطتها؟ (أو ، "يجب أن أستخدم الشاشة!") [نسخة مكررة]


ممكن تكرار:
هل يمكنني nohup / screen عملية بدأت بالفعل؟ 

على Unix (على وجه التحديد ، Linux) ، لقد بدأت العمل في ssh-> bash عادي. أود أن أغادر العمل قريبًا ، لكنني أدرك الآن أن العمل سيستغرق عدة ساعات.

إذا كنت قد بدأت للتو هذه الوظيفة في الشاشة ، يمكنني فصلها والعودة إلى المنزل. لكني لم أفعل

هل هناك أي طريقة لفصل المهمة من جلسة ssh الخاصة بي ، حتى أتمكن من إيقاف تشغيل الكمبيوتر (إسقاط اتصال TCP وقتل جلسة ssh) ، ومع ذلك استمر تشغيل البرنامج؟

لا أهتم بمخرجاته - في الواقع ، قمت بإعادة توجيه المعياري إلى ملف. أنا فقط أريدها أن تعمل حتى النهاية.


116
2017-07-01 22:16


الأصل




الأجوبة:


يمكنك الضغط ctrl-z لمقاطعة العملية ثم قم بتشغيل bg لجعلها تعمل في الخلفية.

يمكنك عرض قائمة مرقمة بكافة العمليات التي تم وضعها في الخلفية بهذه الطريقة باستخدام jobs.

ثم يمكنك تشغيل disown %1 (يحل محل 1 مع إخراج رقم العملية من قبل jobs) لفصل العملية عن المحطة.

على الرغم من الاسم ، ستظل ملكيتك للعملية بعد التشغيل disown، سيتم فصله فقط عن الجهاز الذي بدأته فيه.

هذه الإجابة لديها المزيد من المعلومات


157
2017-07-01 22:26



ما مدى أمان تجربة هذا الإجراء؟ أي مسكينة؟ - ndemou


أعتقد أن الأمر الذي تبحث عنه "يتبرأ"


17
2017-08-19 16:32





من داخل bash shell:

control+z

ثم ، لمتابعة تشغيل المهمة في الخلفية:

bg

في وقت لاحق ، يمكنك الكتابة jobs  لمعرفة ما إذا كانت العملية لا تزال قيد التشغيل.


8
2017-07-01 22:23



ألن يقتل عندما أغلق صدفي؟ - mike
حسنًا ، على الأقل ليس إذا كنت تدير باش. سيتم فصل المهمة عن PPID الخاص بـ ssh الخاص بك ، وستظل تعمل على الخادم كاسم المستخدم الخاص بك. - Joe
سوف تؤدي التعليمات أعلاه إلى إنهاء العملية عند إغلاق الغلاف. تحتاج أيضًا إلى تشغيل الأمر "المهدور" / المضمن (هذا في bash) ، الذي سيؤدي إلى فصل العملية عن shell وعدم إرسال إشارة HUP إلى العملية عند الخروج. - Mark
في نسختي bash [3.2.25 (1) -release (i686-redhat-linux-gnu)] ، اختبرت هذه العملية ، ولم أكن مضطرًا إلى التخلي عن الوظيفة قبل قطع الاتصال. تم فصل PID الخاص بالطفل عن PID الرئيسي ، وظل قيد التشغيل كاسم مستخدم خاصتي بدون مقاطعة. YMMV ، أفترض. - Joe


عند استخدام reptyr داخل الشاشة ، يمكنك نقل العملية (أو الإخراج) إلى الشاشة.


5
2018-05-16 14:07





استعمال
قيادة nohup &

جميل:
فهرس الجذر @: ~ # nohup / usr / بن / حليقة localhost / begemot.php و
[1] 894
فهرس الجذر @: ~ # nohup: تجاهل المدخلات وإلحاق الناتج إلى `nohup.out '

والخروج من هذه المحطة ، تستمر مهمة تستمر ...

5
2018-05-24 09:23





استخدام crtl-Z ثم bg أو باستخدام & عند تشغيل الأمر غير موثوق به بنسبة 100٪. ستعمل في معظم الحالات ولكنها قد لا تعمل كما هو متوقع في بعض الحالات (استخدام I / O ، ...).
الشاشة هي حل موثوق به.


4
2017-07-01 22:34



لاحظ أن retty (pasky.or.cz/~pasky/dev/retty) هي أداة يمكن أن تسمح لك بنقل عملية تعمل خارج الشاشة إلى الشاشة. يمكن أن يكون من المفيد وضعك على الشاشة في حالة نسيانها. ثم يمكنك فصل الشاشة بأمان دون أي خطر من المهمة للتوقف. - radius


لقد اتخذت لإنشاء screen للتشغيل التلقائي عند الاتصال بالمضيفين الذين أستخدمهم بانتظام ، لتجنب هذه المشكلة.

http://tlug.dnho.net/؟q=node/239 هي طريقة واحدة للقيام بذلك ، على الرغم من وجود اختلافات أخرى هناك.

لقد أنقذني مرة أو مرتين عندما كان لدي فصل غير متوقع في منتصف الجلسة وكان من الممكن أن ينسى ذلك screen قبل أن أبدأ بشيء طويل.


4
2017-07-01 22:50





إذا كنت تستخدم "bash" ، فيمكنك أن تشك بـ control-Z والخلفية بـ bg.

السيطرة على الوظيفة (من رجل باش)

 If the operating system on which bash is running supports job 
 control, bash contains facilities to use it.   Typing the  
 suspend  character  (typically ^Z, Control-Z) while a process 
 is running causes that process to be stopped and returns control 
 to bash.  Typing the delayed suspend character (typically ^Y, 
 Control-Y) causes the process  to  be stopped  when  it  
 attempts to read input from the terminal, and control to be 
 returned to bash.

مساعدة بي جي

bg: bg [job_spec ...]
    Place each JOB_SPEC in the background, as if it had been started with
    `&'.  If JOB_SPEC is not present, the shell's notion of the current
    job is used.

مساعدة وظائف

jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
    Lists the active jobs.  The -l option lists process id's in addition
    to the normal information; the -p option lists process id's only.

3
2017-07-01 22:23



ألن يقتل عندما أطفئ جهاز الكمبيوتر الخاص بي ، وبالتالي قطع جلسة SSH وقتل الصدفة؟ - mike
انتظر ، هل تقوم بتشغيل الأمر على حاسبك المحلي واستخدام SSH لبعض المدخلات / المخرجات؟ أم هذا يعمل على الكمبيوتر البعيد؟ إذا كان الأمر قيد التشغيل على الكمبيوتر البعيد ، فيجب أن تتمكن من خلفية ذلك وفصله. - Zoredache


إذا كنت تعرف مسبقاً أنك تريد تشغيله في الخلفية ، الأمر unix في هو خيار جيد. يبدأ تشغيل الأوامر في الخلفية في الوقت المجدول ، تمامًا مثل مهمة cron التي لا تتكرر. اعتمادا على التوزيع الخاص بك ، قد تحتاج إلى تثبيته وبدء تشغيل البرنامج الخفي.


2
2018-04-04 12:58