שאלה העברת תהליך שכבר פועל למסך


העבודה במשרד שלי רואה אותי מחוברת לקופסת לינוקס דרך 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 / המסך תהליך שכבר התחיל? - scai
חפש script סקריפט. - Vashu


תשובות:


תסתכל על רפטיר, שעושה בדיוק את זה. דף github יש את כל המידע.

Reptyr - כלי "re-ptying" תוכניות.

רפטייר הוא כלי לקחת   תוכנית ריצה קיימת וצרפה   אל הטרמינל החדש. התחיל א   זמן רב פועל על ssh, אבל   צריך לעזוב ולא רוצה   להפריע לה? רק להתחיל מסך, להשתמש   reptyr לתפוס אותו, ולאחר מכן להרוג את   ssh הפגישה ואת הראש על הבית.

שימוש

פפטיר

"PPTID PID" יהיה לתפוס את התהליך   עם מזהה PID וצרף אותו   מסוף הנוכחי.

לאחר צירוף, התהליך ייקח   קלט מ ו לכתוב פלט החדש   מסוף, כולל ^ C ו- ^ Z.   (למרבה הצער, אם אתה רקע זה,   אתה עדיין צריך לרוץ "bg" או   "fg" במסוף הישן. זה   סביר להניח בלתי אפשרי לתקן ב   דרך סבירה ללא תיקון   צדף.)


194
2018-06-28 09:25



אם, כמוני, הסתכלת על הקישור לעיל בקצרה שקול להתקין את התוכנית מהמקור, לקחת לב: זה רק apt-get על מערכות דביאן. - mlissner
זה עובד נהדר, איך אני לא ראיתי את זה לפני? - deed02392
זה מדהים! הייתי להעיר את זה 10 פעמים אם הייתי יכול! כמו כן, reptyr זמין repos repos גם כן. רק 'יאם להתקין' כדי לקבל את זה. - Mark J. Bobak
לא עובד למעט במקרים הקטנים ביותר: Unable to attach. (This most commonly means that 11690 has a suprocesses) - Mehrdad
לפחות כמו שורש, אתה יכול להשתמש reptyr -T PID - ChristophK


אתה לא יכול לעשות את זה בקלות. הייתי מציע לעשות את זה הרגל להתחיל מסך כמו הדבר הראשון שאתה עושה לאחר פתיחת קונסולת.

עם זאת, עבור הבעיה האמיתית שלך, יש עוד דבר שאתה יכול לנסות: לאחר השיקה את העבודה שלך מן הטרמינל, הרקע אותו על ידי הקלדת ctrl-Z ולאחר מכן bg. לאחר מכן, לנתק את העבודה מתוך פגז האב של זה; ב bash היית עושה disown -h %<jobid>. לאחר מכן, אתה יכול לסגור את הטרמינל בבטחה ואת העבודה תמשיך לפעול.


42
2017-08-18 11:11



זה עבד טוב מאוד במקרה שלי. reptyr ו retty שניהם לא הצליחו לתפוס את התהליך, אבל כל מה שאני צריך היה להיות מסוגל לסגור מסוף ולהשאיר את התהליך לרוץ. - STW
לידיעתך: אחרי להתכחש- התהליך שהוא יכול להיות רפטיר- בפנים מסך. - Adam
זה נהרג התוכנית שלי פועל :( - Mehrdad


כפי שאתה משתמש לינוקס, מה לגבי השימוש retty בתוך המסך החדש שהושק תהליך?

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

HTH

לחיים,


37
2017-08-18 12:09



לא ידעתי על תודות, תודה. עם זאת, עבור סוג של עבודות לטווח ארוך יש לי בראש, אני קצת לא רוצה להשתמש בכלי זה מתייחס לעצמו "נבדק קלות מאוד". אני הולך עם הפתרון של ארל.
לא רואים שום תמורה בג'נטו - Sergei
לא יכול לצרף ל 4858 - Arnold Roa