זהו עזר VPN ב-Mac לפני שאתם הורגים את התהליך
התאימו תהליך VPN לקובץ ההרצה שלו, לבקר שלו ולתפקיד הרשת שלו לפני עצירה, ואז השתמשו בנתיב העצירה של הבעלים במקום באות.
התייחסו להודעה על עזר שכבר פועל כרמז למחזור החיים, לא כרשות להתחיל להרוג תהליכים. הצעד המסוכן אינו העצירה עצמה אלא הזיהוי שלפניה, משום שרכיבים אחדים עם שמות דומים יכולים להתקיים ב-Mac אחד ורק אחד מהם מחזיק בחיבור. בנו תחילה את רשומת הזהות. לאחר מכן החליטו אם עצירה היא בכלל הפעולה הנכונה.
בנו רשומת זהות לפני שאתם פועלים
ארבע עובדות הופכות תהליך לזיהוי: ה-PID הנוכחי עם זמן ההתחלה שלו, קובץ ההרצה והמוצר שאליו הוא שייך, הקשר המשתמש או ההרשאות שתחתיו הוא פועל, וכל מה שהפעיל אותו. ps -o pid,ppid,user,etime,command -p 1234 נותן לכם את שלושת הראשונים בשורה אחת, כולל כמה זמן התהליך חי. Activity Monitor מציג את אותו מידע בפנים ידידותיות יותר. הוסיפו את הבקר, כלומר האפליקציה או השירות האחראים להפעלתו ולעצירתו. עם ארבעת אלה, תהליך מפסיק להיות שם והופך לאובייקט שאפשר לנמק לגביו.
אם אחד מהארבעה אינו ידוע, עצרו שם. רכיב לא מוכר הוא שאלה למוציא לאור או למנהל, לא ניסוי.
ה-PID ביומן ישן שייך כעת למישהו אחר
מזהי תהליכים ממוחזרים, ומספר שהועתק מהיומן של אתמול עשוי כעת להצביע על משהו שאינו קשור כלל. השוו את זמן ההתחלה לחותמת הזמן של היומן לפני שאתם מסיקים מסקנה. כך גם לגבי שם קצר: שני בילדים של מוצר אחד יכולים לשלוח עזרים עם שמות זהים ומטרות שונות. הזהות היא הטאפל, ולעולם לא המספר לבדו.
הפרידו בין התפקידים לפני שאתם נוגעים בכל דבר אחר. הלקוח של חיבור בודד, עזר משותף שמשרת כמה אפליקציות, ושרת שמקבל הפעלות של אחרים נראים כולם כמו תהליך רקע ברשימה. רק אחד מהם ניתן לעצור בלי השלכות שלא שקלתם.
עצרו דרך הבעלים, לא דרך האות
התחילו בבקרה שמחזיקה בדבר: כפתור הניתוק של החיבור, פקודת העצירה הנתמכת של השירות, או הפעולה של סוכן הניהול עצמו. נתיבים אלה מריצים את הפירוק שהמוצר מצפה לו, הכולל הסרת נתיבים וסגירת התקן המנהרה. אות מדלג על כל זה ומשאיר מצב מאחור.
שימו לב למה שנשאר אחר כך. תהליך שנשאר בזיכרון עשוי להמתין לחיבור הבא, וזו בחירת תכנון ולא עצירה כושלת.
מדוע משגיח מפעיל מחדש את מה שהרגתם
אם דמון אתחול או מדיניות חיבור אוטומטי מכוונים לכך שהמנהרה תהיה פעילה, הריגת התהליך אינה מבטאת דבר. המשגיח רואה את היציאה ומפעיל אותו שוב, לעתים לפני שסיימתם לקרוא את היומן.
מצאו את המשגיח לפני שתילחמו בו. launchctl list מציג משימות טעונות ואת התוויות שלהן, ומשימה עם הגדרת שמירה על חיים מופעלת מחדש ביציאה לפי התכנון. הפעולה הנכונה שם היא לשנות את הכוונה: פרקו את המשימה, בטלו את מדיניות החיבור האוטומטי, או בקשו מהמנהל לעשות זאת. יציאה כפויה היא כלי אחר עם משמעות אחרת, והיא שייכת להליך התאוששות מתועד לתהליך תקוע ולא לניהול חיבורים שגרתי.
תעדו את אירוע מחזור החיים, לא את ההריגה
רשמו את זהות הרכיב, את גרסת הלקוח, את האירוע הרלוונטי הראשון במחזור החיים, ואת מה שעשיתם. האירוע חשוב יותר מהפעולה, משום ששני מופעים שמופיעים בכניסה הם בעיית סדר אתחול שתחזור. רשומה שמציינת את קובץ ההרצה ואת הבקר שלו מאפשרת לאדם הבא לשחזר אותה.
לאחר מכן אמתו את המצב המיועד: השירות שהמשתמש נזקק לו, והמשאב הפרטי שהוא מגיע אליו. הימנעו מהצינור שמחפש תת-מחרוזת והורג בכוח כל התאמה, משום שהוא זורק את כל האמור לעיל ובדרך כלל הורס את הראיה לכך ששני מופעים התקיימו. אם התהליך ממשיך לחזור, הממצא הוא פגם בתצורה או בסדר, והתיקון שייך למי שמחזיק בהתנהגות האתחול של הלקוח.