עובדים מול שרת מרוחק? אל תאבדו את החלון שלכם

פתרון קל, פשוט וידוע לשמירת sessions ותהליכים על שרת מרוחק מסוג לינוקס. עובדים עם SSH? זה בשבילכם
כיתוב: WEB

אם אתם עובדים עם SSH על מנת להתחבר לשרת לינוקס מרוחק, אתם בדרך כלל תתחברו עם Putty ממחשב מבוסס חלונות או דרך SSH ממחשב לינוקס/מק – מה הבעיה? הבעיה היא שאם אתם מריצים תהליך ארוך ומאיזושהי סיבה ה-session שלכם מתנתק, אז אתם בבעיה. התהליך יכול להמשיך לרוץ, אבל אתם לא תדעו מה התוצאה שלו. או לחלופין, הרצתם פקודה כלשהי עם תוצאה שמופיע על המסך ואז פתאום המחשב המארח נסגר מסיבה מסוימת – לא תוכלו לראות את מה שהדפסתם והסשן המרוחק הלך לעזאזל.

אפשר לפתור את זה בקלות עם תוכנה קטנה וחמודה שנקראת screen שזמינה ללינוקס (גם פדורה וגם דביאן). קל מאוד להתקין אותה:

sudo apt-get install screen

ובפדורה:

yum install screen

אחרי ההתקנה, אנחנו נקליד scrren -v כדי לראות

$ screen -v
Screen version 4.00.03 (FAU) 23-Oct-06

אחרי שהתוכנה מותקנת, אפשר לעבוד. נכתוב screen ואז נראה שהמסך התחלף והוא נראה כמו חיבור SSH רגיל, אבל זה לא SSH רגיל אלא מסך שרץ על פרוסס עצמאי משל עצמו. אנחנו יכולים לכתוב בו, להריץ בו דברים וכו'. אם אנחנו רוצים לצאת מהפרוסס (אבל לתת לו לרוץ), אנחנו נלחץ על קונטרול A ואז D.
אנחנו נחזור ל-SSH הרגיל. שימו לב, הפרוסס עדיין רץ. בו אפשר לפתוח עוד screen (פשוט לכתוב screen) או דברים אחרים. אני רוצה לחזור ל-screen שפתחתי? אין קל מזה. אכתוב screen -ls ומייד אגלה רשימה של כל ה-screen הפתוחים:

There are screens on:
        2477.pts-0.server1      (Detached)
        2522.pts-0.server1      (Detached)
2 Sockets in /var/run/screen/S-root.

ליד כל screen יש מזהה מספרי. אם אני רוצה לעבור אל ה-screen אני יכול פשוט לכתוב

screen -r 2477

ואני מייד אחזור ל-session שלי, כולל ההיסטוריה, המסך והכל. אם יש פרוסס שרץ, אני אראה אותו. אפשר לעבור אל ה-screen הרלוונטי גם אם הסשן התנתק לחלוטין, אם המחשב שלי התפוצץ או אם התחברתי ממחשב אחר, אין שום בעיה, כל מה שצריך זה להקליד

screen -ls 

כדי לברר את המספר של ה-screen ואז:

screen -r XXXX

זה הכל, להזכירכם ה- screen -ls מראה לנו את הרשימה של ה-screen ו screen -r עם מספר מכניס אותי ל-screen הזה והוא לעולם לא ימות. הוא יישאר בחיים כל עוד המכונה באוויר. ואם אני רוצה להרוג את ה-screen? מאוד פשוט:

exit

יהרוג אותו ויחזיר אותי ל-session הראשי.

אם יש לי כמה screen פתוחים, אני יכול להכנס לאחד מהם ולעבור ביניהם באמצעות קונטרול A ואז P או N.

זהו! לעולם לא עוד נאבד session או שלא נדע מה קרה עם הפרוסס שהרצנו כי הסשן התנתק/ האינטרנט נפל/ המחשב עשה ריסטארט/ נשרף באש האבדון.

אני מודה מאוד ללירן טל ולתמיר מור על פקיחת העיניים בנושא.

פוסטים נוספים שכדאי לקרוא

בינה מלאכותית

Safeguards על מודל שפה גדול (LLM)

פוסט בשילוב עם פודקאסט וסרטון על ההגנות שאפשר להציב על LLM בסביבת פרודקשן

גלילה לראש העמוד