קלטת לינוקס היא אחת מהמיומנויות הכי חשובות בתעשיית הטכנולוגיה. היא יכולה לעזור לך לבצע דברים מהר יותר ויעיל יותר. רבים משרתי האינטרנט העוצמתיים והמיחשובים העל בעולם פועלים על לינוקס.
בעוד שלימוד לינוקס מעצים את התפקיד הנוכחי שלך, הוא יכול גם לעזור לך להתמקד בקריירות טכנולוגיות אחרות כמו DevOps, בטחון סייבר ומחשוב ענן.
בספר הזה, תלמד את הבסיסים של שורת הפקודה של לינוקס, ואז תעבור לנושאים מתקדמים כמו סקריפטינג וניהול מערכות. בין אם אתה חדש בלינוקס או שהשתמשת בו במשך שנים, יש לספר זה משהו לך.
הערה חשובה: כל הדוגמאות בספר זה מוצגות באובונטו 22.04.2 LTS (Jammy Jellyfish). רוב כליי השורת הפקודה הם דומים במידה רבה במפלצות אחרות. עם זאת, ייתכן שייש שינויים ביישומים הGUI ובפקודות אם אתה עובד על מפלצת לינוקס אחרת.
תוכן העניינים
חלק 1: הקדם ללינוקס
1.1. התחלה עם לינוקס
מה הוא לינוקס?
לינוקס הוא מערכת ההפעלה הפתוחה שמבוססת על מערכת ההפעלה Unix. היא נוצרה על ידי לינוס טורבלדס ב-1991.
קוד פתוח אומר שקוד המקור של מערכת ההפעלה זמין לציבור. זה מאפשר לכל אחד לשנות את הקוד המקורי, להתאים אותו, ולהפיץ את מערכת ההפעלה החדשה למשתמשים פוטנציאליים.
למה כדאי ללמוד על Linux?
בנוף מרכזי של מרכזי נתונים של היום, Linux ו-Microsoft Windows עומדים בראש המתחרים העיקריים, עם Linux שיש לו חלק גדול.
כאן כמה סיבות משכנעות ללמוד Linux:
-
בהתרפצות של יישומי Linux, יש סיכוי גבוה שהיישום שלך יתווסף על Linux. לכן לימוד Linux כמפתח מתפתח ערך נוסף.
-
עם השימוש בחישוב ענן כשגרה, יש סיכוי גבוה שהמופעים שלך בענן יסמכו על Linux.
-
Linux משמש כיסוד למערכות הפעלה רבות לאינטרנט הדברים (IoT) ויישומים ניידים.
-
בעולם המחשוב, יש הרבה הזדמנויות לאלה שמיומנים ב-Linux.
מה משמעות ש-Linux היא מערכת הפעלה קוד פתוח?
ראשית, מהו קוד פתוח? תוכנה קוד פתוח היא תוכנה ששומה נתונה לציבור ומי שרוצה יכול להשתמש בה, לשנות ולהפיץ אותה.
כאשר נוצר קוד מקור, הוא נחשב אוטומטית כחומר מוגן בזכויות יוצרים, וההפצה שלו מושטת על ידי בעל זכויות היוצרים דרך רישיונות תוכנה.
בניגוד לקוד פתוח, תוכנה פרופריטרית או סגורה מגבילה גישה לקוד המקור שלה. רק היוצרים יכולים לראות, לשנות או להפיץ אותו.
לינוקס הוא בעיקר קוד פתוח, שפירושו שקוד המקור שלו זמין לכולם. כל אחד יכול לראות, לשנות ולהפיץ אותו. מפתחים מכל מקום בעולם יכולים לתרום לשיפורו. זה מטיב ביסוד מהשתתפות שהיא חלק חשוב מתוכנה קוד פתוח.
הגישה המשותפת הזו הובילה לקבלתו הרחבה של לינוקס בשרתים, בשולחנות עבודה, במערכות מוטבעות ובמכשירים ניידים.
הניקוד המעניין ביותר של לינוקס כקוד פתוח הוא שכל אחד יכול להתאים את מערכת ההפעלה לצרכיו המיוחדים בלי להיגבל על ידי הגבלות פרופריטריות.
מערכת ההפעלה Chrome OS המשמשת ב-Chromebooks מבוססת על לינוקס. אנדרואיד, שמפעילה רבים מהסמארטפונים ברחבי העולם, גם היא מבוססת על לינוקס.
מהו ליבת לינוקס?
הליבה היא הרכיב המרכזי של מערכת ההפעלה שמנהלת את המחשב ואת פעולות החומרה שלו. היא טופלת את פעולות הזיכרון ואת הזמן של מעבד המחשב.
הליבה פועלת כגשר בין היישומים ועיבוד הנתונים ברמת החומרה באמצעות תקשורת בין-תהליכית וקריאות מערכת.
הַלָּיבָה נִטעֵנָה לְזִיכּוֹר רִאשוֹנָה כְּשֶׁהַמַעְרֵכָת הַפּוֹעָלֶת מַתְחִילָה וְנוֹשֶׁאת שָׁם עַד שֶׁהַמַעְרֵכָת נִכְבֶּה. הַלָּיבָה אַחֲרֵיוּת אוֹתָה הַמְּשִׁימוֹת כָּמוֹ נְהִירוּת דִּיסְקִים, נְהִירוּת מְשִׁימוֹת, וְנְהִירוּת זִיכּוֹר.
אִם אַתֶּם סְקָרִיִּים לְגַבֵּי מַה שֶּׁהַלָּיבָה שֶׁל לִינוּקס נִרְאֶה כְּמוֹ, הַנִּקּוּדִים שֶׁל גִּיטְהֻב נִמְצָאִים כאן.
מַהוּוּת הַתְּפִיצָה שֶׁל לִינוּקס?
עַל יְדֵי נְקוּדָה זוֹ אַתָּה יוֹדֵעַ שֶׁאַתָּה יָכוֹל לְהַשְתִּימֵשׁ בְּקוֹד שֶׁל הַלָּיבָה שֶׁל לִינוּקס, לְשַׁנוֹת אוֹתוֹ, וְלִיצוֹר לָךְ לָקֶרֶא קוֹד חֲדָשָׁה. אַתָּה יָכוֹל גַּם לְשַׁרֵף יַחְדָּיו מְגִירוֹת שוֹנוֹת וְתוֹכְנוֹת כְּדֵי לִיצוֹר מַעֲרֶכֶת הַפּוֹעָלֶת חֲדָשָׁה לָגַמְרֵי.
תְּפִיצַת לִינוּקס אוֹ תְּפִיצָה הִיא גְּרָסָה שֶׁל מַעֲרֶכֶת הַפּוֹעָלֶת לִינוּקס שֶׁכֵּלֶיָּה אֶת הַלָּיבָה שֶׁל לִינוּקס, כְּלֵי־מוְדוּעִים מְעִרְכֵי נִיהוּל, וְתַכְנוּת אֲחֵרוֹת. בִּהְיוֹתָה קוֹד פָּתוּחַ, תְּפִיצַת לִינוּקס הִיא מִאֵמָץ שֶׁמְשַׁתֵּף עֲם כְּמוּת רַבָּה שֶׁל קְהִלּוֹת פִּתְחוּת קוֹד פָּתוּחַ עִצָּמִיוֹת.
מַהוּוּת הַכְּוָונָה כְּשֶׁאַתָּה אוֹמֵר שֶׁתְּפִיצָה היא מוּפְקָצֶת? כְּשֶׁאַתָּה אוֹמֵר שֶׁתְּפִיצָה היא "מוּפְקָצֶת" מֵתְּפִיצָה אַחֶרֶת, הַתְּפִיצָה הַחֲדָשָׁה נִבְנֵית עַל בַּסִּיס אוֹ הַתְּכַנָּית שֶׁל הַתְּפִיצָה הַמְּקֹדֶמֶת. הַמוּפְקֶצֶת יָכוֹלָה לִכְלוֹל הַשְׁתָּמָה מְעוֹרֶכֶת נִיהוּל חֲבִילוֹת תַּכְנִיוֹת (יוֹתֵר עַל זֶה בַּשְּׁעֵתָּאַרְתָּן), גִּרְסָת הַלָּיבָה, וְלִפְעָמִים גַּם הַכְּלָיָּה שֶׁל אוֹתָם כְּלֵי הַגְּדָרָה.
הַיוֹם, יֵשׁ אַלְפֵּי תְּפִיצוֹת שֶׁל לִינוּקס לִבְחִירָה, שֶׁמַצְיַנוֹת יִעוּדָן שֶׁמִּבְחָרָן וְשֶׁמַכְּרִיזוֹת עַל הַתַּמְיכָה בַּתַּכְנוּת הַיַּזְמָה בִּתְּפִיצָתָן.
הַתְּפִיצוֹת מִשְׁתַּנּוֹת מְאֵחַת לַשְּׁנִיָּה, אֲבָל הֵן בְּכָלֵל יֵשׁ לָהֶן מְאַפְיֵּנִים מְשֻׁגָּרִים מֵהַמִּינְיָּים הַבְּהוּתָם:
-
תְּפִיצָה כוֹלֶתֶת אֶת הַלָּיבָה שֶׁל לִינוּקס.
-
היא תומכת בתוכנות במרחב המשתמש.
-
ההתפלגות יכולה להיות קטנה ומסודרת סיימנטלית או לכלל אלפים של תוכנות פתוחות מקור.
-
צריך לספק דרכים מסוימות להתקין ולעדכן את ההתפלגות ואת הרכיבים שלה.
אם תסתכלו על לינוקס התפלגות זמן, תראו שתי ההתפלגות הגדולות: Slackware ו Debian. המספר הזה מהם נובע. לדוגמה, Ubuntu ו Kali נובעים מ Debian.
מה היתרונות של השחיתות? יש יתרונות מגוונים של השחיתות. ההשחיתות יכולות להשתמש ביציבות, בטיחות ובמאגרי תוכנה גדולים של ההתפלגות הורית.
בעיצוב על יסוד קיים, מפתחים יכולים להתמקד בחלקם ובמאמץ ביחד על התכונות המיוחדות של ההתפלגות החדשה. המשתמשים בהשחיתות יכולים להרוויח מהמדריך, התמיכה הקהילתית והמשאבים הקיימים בשביל ההתפלגות הורית.
חלק מההתפלגות הלינוקס הפופולריות הן:
-
Ubuntu
: אחת מהדיסטרביציות הלינוקס הנעשמות והפופולריות ביותר. היא מאוד מושלמת למשתמשים ומומלצת עבור מתחילים. למידה נוספת על Ubuntu, הלכה לכאן.
-
Linux Mint: מבוססת על Ubuntu, Linux Mint מספקת חוויה מושלמת למשתמשים עם התמקדות בתמיכה במדיה מולטיבית. למידה נוספת על Linux Mint, הלכה לכאן.
-
Arch Linux: פופולרי בין המשתמשים המווצרים, Arch היא דיסטרביציה קלה ומאפשרנית שמיועדת למשתמשים שמעדיפים גישה עצמאית. למידה נוספת על Arch Linux, הלכה לכאן.
-
Manjaro: מבוסס על Arch Linux, Manjaro מעניק חוויה מודע-משתמש עם תוכנה מותקנת קודם וכלים פשוטים לניהול מערכת. למידה נוספת על Manjaro, לכאן.
-
Kali Linux: Kali Linux מעניק ערכת כלים בעלת שלמות לבטחון ומתמקדת בעיקר באבטחת רשת והאקינג. למידה נוספת על Kali Linux, לכאן.
איך להתקין ולגיש לLinux
הדרך הטובה ביותר ללמוד היא ליישם הערכות בזמן התהליך. במסגרת המרכז הזו, אנחנו נלמד איך להתקין Linux על המכשיר שלך כך שתוכל לעקוב אחריו. תגיע גם למידה איך לגיש לLinux על מכשיר Windows.
אני ממליץ לך לעקוב אחר אחד מהשיטות האלה על מנת לקבל גישה לLinux כך שתוכל לעקוב אחריו.
התקין Linux כOS ראשי
הדרך היעילה ביותר להשתמש בLinux היא להתקין אותו כOS ראשי, כך שתוכל להשתמש בכל הכח של המכשיר שלך.
בחלק זה, אתה ילמד איך להתקין Ubuntu, שהוא אחד מהחברות הלינוקס הכי פופולריות. עשיתי סיפור על החברות האחרות עכשיו, בגלל שאני רוצה לשמור על דברים פשוטים. תוכל תמיד לחקור אחר חברות אחרות אחרי שתהיה נוח עם Ubuntu.
-
שלב 1 – הורדת האיזו: לך לאתר הרשמי של Ubuntu והוריד את הקבצים האיזו. ותוודא שאתה בוחר שישון יציב שמתוייג "LTS". LTS מתייחסת לתמיכה מורחבת טווח, שאומר שתוכל לקבל עדכונים אבטחה ושימור בחינם למשך זמן ארוך (בדרך כלל 5 שנים).
-
שלב 2 – יצירת דיסק התחילה: יש מספר תוכנות שיכולות ליצור דיסק התחילה. אני ממליץ להשתמש ב Rufus, כי הוא די קל לשימוש. תוכל להוריד אותו מפה.
-
שלב 3 – הפעל מהפלאש דרייב: לאחר שהפלאש דרייב הניתן להפעלה שלך מוכן, הכניסו אותו והפעילו ממנו. תפריט ההפעלה תלוי במחשב הנייד שלך. ניתן לחפש ב- Google את תפריט ההפעלה עבור דגם המחשב הנייד שלך.
-
שלב 4 – עקוב אחר ההוראות. לאחר שהתהליך הפעלה מתחיל, בחרו
נסו או התקינו את אובונטו
.התהליך ייקח זמן מה. לאחר שממשק המשתמש הגרפי מופיע, ניתן לבחור את השפה ואת תצורת המקלדת ולהמשיך. הזינו את שם המשתמש והסיסמה שלכם. זכרו את פרטי הכניסה כי תצטרכו אותם כדי להתחבר למערכת שלכם ולגשת להרשאות מלאות. המתינו להשלמת ההתקנה.
-
שלב 5 – איתחול מחדש: לחצו על "איתחול כעת" והוציאו את הפלאש דרייב.
-
שלב 6 – התחברות: התחבר עם הפרטים שהזנת לפני כן.
והנה! כעת תוכל להתקין אפליקציות ולהתאים אישית את דסק העבודה שלך.
להתקנה מתקדמת, ניתן לחקור את הנושאים הבאים:
-
מיצוב כונן.
-
הגדרת זיכרון סוואפ כדי לאפשר הפעלה מתהפכת.
גישה לטרמינל
חלק חשוב במדריך זה הוא ללמוד על הטרמינל שבו תפעיל את כל הפקודות ותראה את הקסם מתרחש. תוכל לחפש את הטרמינל על ידי לחיצה על כפתור ה-"windows" והקלדת "terminal". תוכל להצמיד את הטרמינל לסרגל המשימות שבו נמצאות האפליקציות האחרות לגישה קלה.
💡 הקיצורקוד לפתיחת הטרמינל הוא
ctrl+alt+t
תוכל גם לפתוח את הטרמינל מתוך תיקייה. יש ללחוץ ימני במקום בו אתה נמצא וללחוץ על "Open in Terminal". זה יפתח את הטרמינל באותו הנתיב.
איך להשתמש ב-Linux על מחשב עם Windows
לפעמים ייתכן שתצטרך להריץ גם את Linux ו-Windows בצד אחד. למרבה המזל, יש כמה דרכים שבהן תוכל ליהנות מיתרונות שני העולמות ללא צורך במחשבים שונים לכל מערכת ההפעלה.
בחלק זה, תקבל מבט על מספר דרכים להשתמש ב-Linux על מחשב עם Windows. חלק מהם מבוססים על דפדפן או מבוססים על ענן ואינם דורשים התקנת מערכת הפעלה מראש לפני השימוש בהם.
�בחירה 1: "דואל-בוט" לינוקס + ווינדוס עם דואל-בוט, ניתן להתקין לינוקס לצד ווינדוס על המחשב שלך, מאפשר לך לבחור איזה מערכת הפעלה להשתמש בה בעת ההפעלה.
זה דורש חלוקת הכונן הקשיח שלך והתקנת לינוקס על מחיצה נפרדת. עם גישה זו, ניתן להשתמש במערכת הפעלה האחת בכל פעם.
�בחירה 2: השתמש בתת-מערכת הפעלה של ווינדוס עבור לינוקס (WSL) תת-מערכת הפעלה של ווינדוס עבור לינוקס מספקת שכבת יכולת שמאפשרת לך להריץ תכנות מבינריים של לינוקס ישירות על ווינדוס.
השימוש ב-WSL יש לו יתרונות מסוימים. ההתקנה של WSL פשוטה ולא מבלבלת את הזמן. היא קלה במשקל מול מכונות וירטואליות שבהן עליך להקצות משאבים מהמכונה המארחת. אין צורך להתקין כל ISO או תמונת דיסק וירטואלית עבור מכונות לינוקס הנמצאות בדרך כלל בקבצים כבדים. ניתן להשתמש בווינדוס ובלינוקס בצד יחד.
כיצד להתקין את WSL2
ראשית, הפעל את אפשרות תת-מערכת הפעלה של ווינדוס בהגדרות.
-
עבור לתפריט התחלה. חפש "הדלק או כבה תכונות של Windows".
-
סמן את אפשרות "תת-מערכת הפעלה של ווינדוס" אם היא עדיין לא מסומנת.
-
לאחר מכן, פתח את פקודת הפרומפט וספק את הפקודות להתקנה.
-
פתח את פקודת הפרומפט כמנהל:
-
הרץ את הפקודה הבאה:
wsl --install
זהו הפלט:
הערה: כברירת מחדל, Ubuntu יותקן.
- לאחר השלמת ההתקנה, יידרש לאתחל את המכונה של Windows שלך. לכן, הפעל מחדש את מכונת ה-Windows שלך.
לאחר האתחול, עשוי להופיע חלון כזה:
לאחר השלמת ההתקנה של Ubuntu, יתבקש ממך להזין שם משתמש וסיסמה.
והכל! אתה מוכן להשתמש ב-Ubuntu.
הפעל את Ubuntu על ידי חיפוש בתפריט התחלה.
והנה יש לנו את מופע ה-Ubuntu שלך מופעל.
אפשרות 3: השתמש במכונה וירטואלית (VM)
מכונה וירטואלית (VM) היא אםולציה תוכנה של מערכת מחשב פיזית. היא מאפשרת לך להפעיל מספר מערכות הפעלה ויישומים על מחשב פיזי אחד בו זמנית.
באפשרותך להשתמש בתוכנות וירטואליזציה כמו Oracle VirtualBox או VMware כדי ליצור מכונה וירטואלית הרצה של Linux בתוך הסביבה של Windows שלך. זה מאפשר לך להפעיל את Linux כמערכת האורח לצד Windows.
תוכנה ה-VM מעניקה אפשרויות להגדרה וניהול משאבים האקורדים לכל מחשב מקוון, כולל גורמי מחשב, זיכרון, מקום דיסק, ובאורך הרשת. ניתן להגדיר את ההחלטות האלה בהתאם לדרישות המערכת המארחת והיישומים.
הנה חלק מהאפשרויות הנפוצות המוצגות למעשה בווירטואליזציה:
אפשרות 4: השתמש בפתרון מונחת-בראש
פתרונות מונחת-בראש מועילים ביעילות מסויימת לבדיקות מהירות, ללמוד או לגשת לסביבות לינוקס ממכשירים שלא מותקנים לינוקס.
ניתן להשתמש במערכות עריכת קוד מקוונות או תאי קוד מקוונים על ידי לגשת ללינוקס. שימו לב שבדרכים אלה לעיתים לרוב אתה לא מקבל שירותים ניהוליים מושלמים.
עורכי קוד מקוונים
עורכי קוד מקוונים מציעים עורכים עם תוכנת Linux מובנית. למרות שמטרתם העיקרית היא קידוד, ניתן גם להשתמש בטרמינל של Linux לביצוע פקודות וביצוע משימות.
Replit הוא דוגמה לעורך קוד מקוון, שבו ניתן לכתוב את הקוד שלך ולגשת אל תוך הקוד בשורת הפקודה של Linux באותו הזמן.
טרמינלי Linux בממשק האינטרנט:
טרמינלי Linux מקוונים מאפשרים לך לגשת לממשק שורת הפקודה של Linux ישירות מהדפדפן שלך. טרמינלים אלו מספקים ממשק מבוסס-רשת לשורת הפקודה של Linux, מאפשרים לך לבצע פקודות ולעבוד עם יישומים של Linux.
דוגמה אחת היא JSLinux. בתמונה מתחת מוצגת סביבת Linux מוכנה לשימוש:
אפשרות 5: השתמש בפתרון מבוסס-ענן
במקום להריץ Linux ישירות על מחשב ה-Windows שלך, ניתן לשקול להשתמש בסביבות Linux מבוססות-ענן או שרתים וירטואליים פרטיים (VPS) לגישה ועבודה עם Linux מרחוק.
שירותים כמו Amazon EC2, Microsoft Azure או DigitalOcean מספקים מופעים של Linux שניתן להתחבר אליהם ממחשב ה-Windows שלך. שים לב שעל חלק מהשירותים אלו יש תכונת הפעלה חינמית, אך לרוב הם אינם חינמיים לטווח הארוך.
חלק 2: מבוא לשורת הפקודה Bash ולפקודות מערכת
2.1. התחלה עם שורת הפקודה Bash
מבוא לשורת הפקודה Bash
השורת פקודה של לינוקס מסופקת על ידי תוכנה הנקראת השל. במהלך השנים, תוכנת השל התפתחה כדי להתאים לאפשרויות שונות.
ניתן להגדיר משתמשים שונים להשתמש בשלים שונים. אבל, רוב המשתמשים מעדיפים להישאר עם השל המוגדר כברירת מחדל הנוכחי. השל המוגדר כברירת מחדל עבור רבות מהפצות הלינוקס הוא השל "באש" של GNU (bash
). באש מחליף את השל "בורן" (sh
).
כדי לגלות איזה של אתה משתמש כרגע, פתח את הטרמינל והכנס את הפקודה הבאה:
echo $SHELL
פירוט הפקודה:
-
הפקודה
echo
משמשת להדפיס על הטרמינל. -
המשתנה המיוחד
$SHELL
מחזיק את שם השל הנוכחי.
בהגדרתי, הפלט הוא /bin/bash
. זה אומר שאני משתמש בשל באש.
# פלט
echo $SHELL
/bin/bash
באש הוא חזק מאוד בגלל שהוא יכול לפשט פעולות מסוימות שקשה לבצע ביעילות עם ממשק משתמש גרפי (GUI). זכור שרוב השרתים אין להם ממשק משתמש גרפי, ומומלץ ללמוד להשתמש ביכולות של ממשק שורת הפקודה (CLI).
טרמינל נגד של
המונחים "טרמינל" ו"של" משמשים לעיתים תחתון, אך הם מתייחסים לחלקים שונים של ממשק שורת הפקודה.
הטרמינל הוא הממשק שאתה משתמש בו כדי להתקשר עם השל. השל הוא מפענח הפקודות שמבצע ומריץ את הפקודות שלך. תלמד עוד על שלים בחלק 6 של המדריך.
מהו המופע?
כאשר של משמש באופן אינטראקטיבי, הוא מציג את $
כאשר הוא ממתין לפקודה מהמשתמש. זה נקרא המופע של השל.
[username@host ~]$
אם השל פועל כמשתמש root
(תלמד עוד על המשתמש root מאוחר יותר), המופע משתנה ל־#
.
[root@host ~]#
2.2. מבנה הפקודה
פקודה היא תוכנית שמבצעת פעולה ספציפית. לאחר שיש לך גישה לשל, תוכל להזין כל פקודה לאחר הסימן $
ולראות את הפלט בטרמינל.
בדרך כלל, פקודות Linux עוקבות אחר התחביר הבא:
command [options] [arguments]
כאן פירוט של התחביר שנתון למעלה:
-
פקודה
: זהו שם הפקודה שברצונך לבצע.ls
(רשימה),cp
(העתקה) ו־rm
(מחיקה) הן פקודות Linux נפוצות. -
[אפשרויות]
: אפשרויות, או דגלים, לרוב מקדמים סימן חיצון (-) או סימן חיצון כפול (–), שמשנים את התנהגות הפקידה. הם יכולים לשנות איך הפקידה פועלת. לדוגמה,
ls -a
משתמש באפשרות-a
כדי להציג קבצים חבויים בתוך התיקייה הנוכחית. -
[אג'נדומים]
: אג'נדומים הם הקלטים לפקידות הדורשות אחד. אלה יכולים להיות שמות קבצים, שמות משתמשים או מידע אחר, שהפקידה תפעל עליו. לדוגמה, בפקידה
cat access.log
,cat
היא הפקידה וaccess.log
הוא הקלט. כתוצאה, הפקידהcat
מציגה את התוכן של הקבץaccess.log
.
אג'נדומים ואפשרויות אינם נדרשים עבור כל פקידה. חלק מהפקידות יכולות להיות מופעלות ללא אף אג'נדום או אפשרויות, בעוד אחרות עלולות לדרוש אחד או שניהם על מנת לפעול נכונה. תוכל תמיד להתייחס למדיקת הפקידה כדי לבדוק את האפשרויות והאג'נדומים שהיא תומכת.
טיפ: אתם יכולים להסתכל על ספר ההוראות של פקודה באמצעות הפקודה man
.
אתם יכולים לגשת לעמוד ההוראות עבור ls
באמצעות man ls
, וזה ייראה כך:
עמודי ההוראות הם דרך נהדרת ומהירה לגשת לתיעוד. אני ממליצה בחום לעבור על עמודי ההוראות של הפקודות שאתם משתמשים בהן הרבה.
2.3. פקודות Bash וצירופי מקשים
כשאתם במסוף, אתם יכולים להאיץ את המשימות שלכם על ידי שימוש בצירופים.
הנה כמה מהצירופים הנפוצים ביותר במסוף:
פעולה | צירוף |
חיפוש הפקודה הקודמת | חץ למעלה |
קפיץ לתחילת המילה הקודמת | Ctrl+חץ שמאלה |
מחיקת תווים מהסמן לסוף השורת הפקודה | Ctrl+K |
השלמת פקודות, שמות קבצים ואפשרויות | לחיצה על Tab |
קפיץ לתחילת שורת הפקודה | Ctrl+A |
הצגת רשימה של הפקודות הקודמות | history |
2.4. הזדהות: הפקודה whoami
אתם יכולים לקבל את שם המשתמש שאתם כניסים עם הפקודה whoami
. הפקודה הזו שימושית כשאתם מחליפים בין משתמשים שונים ורוצים לוודא את המשתמש הנוכחי.
רק אחרי הסימן $
, הקלידו whoami
ולחצו Enter.
whoami
ז
zaira@zaira-ThinkPad:~$ whoami
zaira
חלק 3: הבנת מערכת הלינוקס שלך
3.1. גילו את מערכת ההפעלה והפרמטרים שלך
הדפסת מידע מערכת באמצעות הפקודה uname
ניתן לקבל מידע מערכת מפורט באמצעות הפקודה uname
.
כשמספקים את האפשרות -a
, היא מדפיסה את כל מידע המערכת.
uname -a
# הפלט
Linux zaira 6.5.0-21-generic #21~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Feb 9 13:32:52 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
בהפלט שלמעלה,
-
Linux
: מציין את מערכת ההפעלה. -
zaira
: מייצג את שם המחשב. -
6.5.0-21-generic #21~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Feb 9 13:32:52 UTC 2
: מספק מידע על גרסת הקרן, תאריך בנייתה ופרטים נוספים. -
x86_64 x86_64 x86_64
: מציין את הארכיטקטורה של המערכת. -
GNU/Linux
: מייצג סוג מערכת ההפעלה.
מצא פרטים על הארכיטקטורה של הCPU בעזרת הפקודה lscpu
הפקודה lscpu
בLinux משמשת כדי להציג מידע על הארכיטקטורה של הCPU. כשאתה מבצע lscpu
בתורמין, היא מספקת פרטים כמו:
-
הארכיטקטורה של הCPU (לדוגמה, x86_64)
-
מצבים הפעולה של הCPU (לדוגמה, 32-bit, 64-bit)
-
סדר הביטים (לדוגמה, Little Endian)
-
CPU(s) (מספר הCPU), וכך הלאה
בואו ננסה את זה:
lscpu
# יציאה
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 48 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 12
On-line CPU(s) list: 0-11
Vendor ID: AuthenticAMD
Model name: AMD Ryzen 5 5500U with Radeon Graphics
Thread(s) per core: 2
Core(s) per socket: 6
Socket(s): 1
Stepping: 1
CPU max MHz: 4056.0000
CPU min MHz: 400.0000
זה היה הרבה מידע, אבל גם שימושי! זיכרו שאתם תמיד יכולים לסקום את המידע הרלוונטי בעזרת דגלים ספציפיים. ראו את המדריך הפקודה בעזרת man lscpu
.
חלק 4: ניהול קבצים מהמשטח
4.1. היררכיית הפילסמטים במערכת הלינUX
כל הקבצים בלינUX מאחסנים במערכת פילסמטית. היא עוקבת אחר מבנה עץ שלם-פילסמטי מפני שהשורש הוא בראש המערכת.
התוויות /
הם התיקייה השורשית ונקודת ההתחלה של המערכת הפי
דימוי המתחת מראה את ההיררכיה המלאה של מערכת הקבצים. כל ספרייה משרתת מטרה ספציפית.
שים לב שזו לא רשימה מלאה וההתפרצויות השונות עשויות להיות בעלות הגדרות שונות.
הנה טבלה שמראה את המטרה של כל ספרייה:
מיקום | מטרה |
/bin | בינאריות פקודות מהותיות |
/boot | קבצים סטטיים של מנהל האתחול, נחוץ להתחיל את תהליך האתחול. |
/etc | הגדרות מערכת ספציפיות למארח |
/home | ספריות בית של המשתמשים |
/root | ספריית בית למשתמש המנהלים root |
/lib | ספריות משותפות מהותיות ומודולי הליבה |
/mnt | נקודת העגינה לעיגון מערכת קבצים באופן זמני |
/opt | חבילות תוכנה מוספנית ליישומים |
/usr | תוכנה מותקנת וספריות משותפות |
/var | מידע משתנה שגם מתמשך בין ההפעלות |
/tmp | קבצים זמניים שנגישים לכל המשתמשים |
💡 טיפ: אתה יכול ללמוד עוד על מערכת הקבצים באמצעות הפקודה man hier
.
אתה יכול לבדוק את מערכת הקבצים שלך באמצעות הפקודה tree -d -L 1
. אתה יכול לשנות את הסימן -L
כדי לשנות את עומק העץ.
tree -d -L 1
# פלט
.
├── bin -> usr/bin
├── boot
├── cdrom
├── data
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib32 -> usr/lib32
├── lib64 -> usr/lib64
├── libx32 -> usr/libx32
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── snap
├── srv
├── sys
├── tmp
├── usr
└── var
25 directories
שינוי היכן שהמידע אינו מקיף ומערכות והתפלגויות שונות עשויות להיות מתורגמות אחרת.
4.2. מעבר במערכת הקבצים של לינוקס
נתיב מלא נגד נתיב יחסי
נתיב מלא הוא הנתיב המלא מהספרייה השורש לקובץ או ספרייה. הוא תמיד מתחיל ב- /
. לדוגמה, /home/john/documents
.
נתיב יחסי, לעומת זה, הוא הנתיב מהספרייה הנוכחית לקובץ או ספרייה היעד. הוא לא מתחיל ב- /
. לדוגמה, documents/work/project
.
מיציאת הספרייה הנוכחית שלך באמצעות הפקודה pwd
קל להתאבד במערכת הקבצים של לינוקס, במיוחד אם אתה חדש בשורה הפקודה. אתה יכול למצוא את הספרייה הנוכחית שלך באמצעות הפקודה pwd
.
הנה דוגמה:
pwd
# פלט
/home/zaira/scripts/python/free-mem.py
שינוי ספריות באמצעות הפקודה cd
הפקודה לשינוי ספריות היא cd
והיא מייצגת "change directory" (שינוי ספרייה). אתה יכול להשתמש בפקודה cd
כדי לנווט לספרייה שונה.
אתה יכול להשתמש בנתיב יחסי או בנתיב מלא.
לדוגמה, אם אתה רוצה לנווט במבנה הקבצים הבא (לפי הקווים האדומים):
ואתה עומד ב "home", הפקודה תהיה כך:
cd home/bob/documents/work/project
כמה קיצורי דרך שונים ושימושיים ל־cd
הם:
פקודה | תיאור |
cd .. |
חזרה לתוך התיקייה הקודמת |
cd ../.. |
חזרה לתוך שתי תיקיות |
cd או cd ~ |
בא לתוך התיקייה הראשונית |
cd - |
בא לתוך המסלול הקודם |
4.3. ניהול קבצים ותיקיות
בעבודה עם קבצים ותיקיות, אולי תרצו להעתיק, להזיז, להסיר וליצור קבצים ותיקים חדשים. הנה כמה הגיונים שיכולים לעזור לך בעבודה עם אותם.
💡עידן: תוכל להבחין בין קובץ לתיק על פי התווית הראשונה בתוצאת ls -l
. תווית '-'
מייצגת קובץ, בעוד תווית 'd'
מייצגת תיק.
יצירת תיקים חדשים באמצעות הצו ה mkdir
ניתן ליצור תיק ריק בעזרת הצו mkdir
.
# יוצר תיק ריק בשם "foo" בתוך התיקייה הנוכחית
mkdir foo
ניתן גם ליצור תיקים באופן רצף בעזרת האפשרות -p
.
mkdir -p tools/index/helper-scripts
# תוצאה של tree
.
└── tools
└── index
└── helper-scripts
3 directories, 0 files
יצירת קבצים חדשים באמצעות הצו touch
הצו touch
יוצר קובץ ריק. תוכל להשתמש בו כך:
# יוצר קובץ ריק בשם "file.txt" בתוך התיקייה הנוכחית
touch file.txt
השמות של הקבצים יכולים להיות מוצבים בשירות אם תרצו ליצור קבצים רבים בפקודה אחת.
# יוצר קבצים ריקים "file1.txt", "file2.txt" ו "file3.txt" בתוך התיקייה הנוכחית
touch file1.txt file2.txt file3.txt
הסרת קבצים ותיקיות באמצעות הפקטים rm
ו rmdir
אתה יכול להשתמש בפקט rm
כדי להסיר קבצים ותיקים לא ריקים.
פקט | תיאור |
rm file.txt |
הסרת הקבץ file.txt |
rm -r directory |
הסרת התיקייה directory והתוכן שלה |
rm -f file.txt |
הסרת הקבץ file.txt בלי בקשה לאשר |
rmdir directory |
הסרת תיקייה ריקה |
🛑 שימו לב שצריך להשתמש בדגל -f
בזהירות מפני שלא ישאר סיפור להסיר קבץ. גם, היו זהירים במילת הפקט rm
בתוך תיקיית root
מפני שזה עשוי להיות קשור בהסרת קבצים חשובים למערכת.
עיצוב קבצים בעזרת הפקט cp
כדי לעתיף קבצים בלינוקס, משתמשים בפקט cp
.
- תבנית עיצוב לעתיף קבצים:
cp source_file destination_of_file
הפקט זה מעתיף קבץ בשם file1.txt
למיקום חדש /home/adam/logs
.
cp file1.txt /home/adam/logs
הפקט cp
גם יוצר שיקופים של קבץ אחד עם שמות נתנות.
שוכפל קובץ בשם file1.txt
לקובץ אחר בשם file2.txt
באותה תיקייה.
cp file1.txt file2.txt
העברה ושינוי שם של קבצים ותיקיות באמצעות הפקודה mv
הפקודה mv
משמשת להעברת קבצים ותיקיות מכיוון אחד לאחר.
תחביר להעברת קבצים:mv קובץ_מקור תיקייה_יעד
דוגמה: העברת קובץ בשם file1.txt
לתיקייה בשם backup
:
mv file1.txt backup/
להעברת תיקייה ותוכנותה:
mv dir1/ backup/
שינוי שם של קבצים ותיקיות בלינוקס נעשה גם עם הפקודה mv
.
תחביר לשינוי שם של קבצים:mv שם_ישן שם_חדש
דוגמה: שינוי שם של קובץ מfile1.txt
לfile2.txt
:
mv file1.txt file2.txt
שינוי שם של תיקייה מdir1
לdir2
:
mv dir1 dir2
4.4. מציאת קבצים ותיקיות באמצעות הפקודה find
הפקודה find
מאפשרת לחפש ביעילות קבצים, תיקיות, ומכשירי תווים ובלוקים.
הנה התחביר הבסיסי של הפקודה find
:
find /path/ -type f -name file-to-search
איפה,
-
/נתיב
הוא הנתיב בו צריך להימצא הקובץ. זהו נקודת ההתחלה לחיפוש קבצים. הנתיב יכול גם להיות/
או.
שמייצגים את השורש והתיקייה הנוכחית, בהזדמנות. -
-type
מייצג את הסוף המפתח של הקובץ. הם יכולים להיות כל אחד מהאפשרויות הבאות:
f
– קובץ רגיל כמו קבצי טקסט, תמונות וקבצים נסתרים.
d
– תיקייה. התיקייות האלה הן התיקיות בתוך המחשבה.
l
– קישור סימולים. קישורים סימולים מצביעים על קבצים ודומים לקישורים קצרים.
c
– מכשירים מוליכים. קבצים שמשמשים עבור מכשירים מוליכים נקראים קבצי מכשירים מוליכים. דריכים מתקשרים עם מכשירים מוליכים על ידי שליחת וקבלת אותם בתוך בלוקים של מידע. דוגמאות כוללות מקלדות, כרטיסי צליל והעכבר.
b
– מכשירים בלוקים. קבצים שמשמשים עבור מכשירים בלוקים נקראים קבצי מכשירים בלוקים. דריכים מתקשרים עם מכשירים בלוקים על ידי שליחת וקבלת כל הבלוקים של המידע. דוגמאות כוללות USB וCD-ROM -
-שם
הוא שם סוג הקובץ שאתה רוצה לחפש.
כיצד לחפש קבצים לפי שם או סיומת
נניח שאנחנו רוצים למצוא קבצים שמכילים "סגנון" בשמם. נשתמש בפקודה הבאה:
find . -type f -name "style*"
#פלט
./style.css
./styles.css
עכשיו נניח שאנחנו רוצים למצוא קבצים עם סיומת מסוימת כמו .html
. נשנה את הפקודה כך:
find . -type f -name "*.html"
# פלט
./services.html
./blob.html
./index.html
כיצד לחפש קבצים מוסתרים
נקודה בתחילת שמות הקבצים מייצגת קבצים מוסתרים. הם כללית מוסתרים אך ניתן לראות אותם באמצעות ls -a
בתיקייה הנוכחית.
ניתן לשנות את הפקודה find
כפי שמוצג לחיפוש קבצים מוסתרים:
find . -type f -name ".*"
רשימה וחיפוש קבצים מוסתרים
ls -la
# תוכן תיקייה
total 5
drwxrwxr-x 2 zaira zaira 4096 Mar 26 14:17 .
drwxr-x--- 61 zaira zaira 4096 Mar 26 14:12 ..
-rw-rw-r-- 1 zaira zaira 0 Mar 26 14:17 .bash_history
-rw-rw-r-- 1 zaira zaira 0 Mar 26 14:17 .bash_logout
-rw-rw-r-- 1 zaira zaira 0 Mar 26 14:17 .bashrc
find . -type f -name ".*"
# פלט חיפוש
./.bash_logout
./.bashrc
./.bash_history
למעלה תראו רשימה של קבצים מוסתרים בתיקיית הבית שלי.
איך לחפש קבצי לוג וקבצי הגדרה
קבצי לוג כללית סיומת .log
, ונוכל למצוא אותם בצורה הבאה:
find . -type f -name "*.log"
באופן דומה, נוכל לחפש קבצי הגדרה בצורה הבאה:
find . -type f -name "*.conf"
איך לחפש קבצים אחרים לפי סוג
נוכל לחפש קבצי בלוק תווים על ידי מתן c
ל--type
:
find / -type c
באופן דומה, נוכל למצוא קבצי בלוק מכשירים על ידי שימוש ב-b
:
find / -type b
איך לחפש תיקיות
בדוגמה למטה, אנו מוצאים את התיקיות באמצעות הדגל -type d
.
ls -l
# רשימת תוכן תיקייה
drwxrwxr-x 2 zaira zaira 4096 Mar 26 14:22 hosts
-rw-rw-r-- 1 zaira zaira 0 Mar 26 14:23 hosts.txt
drwxrwxr-x 2 zaira zaira 4096 Mar 26 14:22 images
drwxrwxr-x 2 zaira zaira 4096 Mar 26 14:23 style
drwxrwxr-x 2 zaira zaira 4096 Mar 26 14:22 webp
find . -type d
# פלט חיפוש תיקיות
.
./webp
./images
./style
./hosts
איך לחפש קבצים לפי גודל
שימוש מועיל ביותר של הפקודה find
הוא לרשום קבצים לפי גודל מסוים.
find / -size +250M
כאן, אנו מפרטים קבצים שגודלם עולה על 250MB
.
יחידות אחרות כוללות:
-
G
: גיגה-בתים. -
מ׳: מגה בייטס.
-
ק׳: קילו בייטס
-
c : בייטס.
רק החליפו עם היחידה התאימה.
find <directory> -type f -size +N<Unit Type>
איך לחפש קבצים לפי זמן שינוי
על-ידי שימוש בפלאג -mtime
, תוכלו לסנן קבצים ותיקיות לפי זמן השינוי.
find /path -name "*.txt" -mtime -10
לדוגמה,
-
-mtime +10 משמעותו שאתם מחפשים קובץ ששונה לפני 10 ימים.
-
-mtime -10 משמעותו פחות מ-10 ימים.
-
-mtime 10 אם מתעלמים מהסימנים + או – זה אומר בדיוק 10 ימים.
4.5. פקודות בסיסיות להצגת קבצים
שילוב והצגת קבצים באמצעות הפקודה cat
הפקודה cat
בלינוקס משמשת להצגת תוכן הקובץ. היא גם יכולה לשמש לשילוב קבצים ויצירת קבצים חדשים.
הנה סימניטיקה בסיסית של הפקודה cat
:
cat [options] [file]
הדרך הכי פשוטה להשתמש ב-cat
היא ללא אפשרויות או ארגומנטים. זה יציג את
למשל, אם רוצים להציג תוכן של קובץ שנקרא file.txt
, ניתן להשתמש בפקודה הבאה:
cat file.txt
זה יציג את כל התוכן של הקובץ בטרמינל בו-זמנית.
צפייה דיאלוגית בקבצים טקסט בעזרת less
ו more
בעוד cat
מציג את כל הקובץ בו-זמנית, less
ו more
מאפשרים לך לצפות בתוכן של קובץ בדיאלוגיה. זה שימושי כשרוצים לגלגל דרך קובץ גדול או לחפש תוכן ספציפי.
השיבוץ של הפקודה less
הוא:
less [options] [file]
הפקודה more
דומה לless
אך קיימת פחות תכונות. היא משמשת לצפייה בתוכן של קובץ על ידי מסגרת מסך אחת בפעם.
השיבוץ של הפקודה more
הוא:
more [options] [file]
לשני הפקודות האלה, אתה יכול להשתמש במקש החרך
כדי לגלגל דרך עמוד אחד, במקש Enter
כדי לגלגל דרך שורה אחת, ובמקש q
כדי לצאת מהמציג.
כדי להגיע לאחור אתה יכול להשתמש במקש b
, וכדי להגיע קדימה אתה יכול להשתמש במקש f
.
ציגת החלק האחרון של קבצים בעזרת tail
לפעמים אתה אולי תצטרך להציג רק את השורות האחרונים של קובץ במקום כל אותו הקובץ. הפקודה tail
בלינוX משמשת לציג את החלק האחרון של קובץ.
לדוגמה, tail file.txt
יציג את 10 השורות
אם תרצו להציג מספר שונה של שורות, תוכלו להשתמש באפשרות -n
בקבילה עם מספר השורות שתרצו להציג.
# הצג את ה-50 שורות האחרונות בקובץ file.txt
tail -n 50 file.txt
💡טיפ: שימוש נוסף ב tail
הוא דרך העדכון המועדך (-f
). האפשרות הזו מאפשרת לך להציג את התוכן של קובץ בזמן הכתיבה. זוהי שימוש שימושי להצגה ומעקבים בקובצי לוג בזמן אמת.
הצגה בתחילת קבצים בעזרת head
בדומה ל tail
, אתם יכולים להשתמש בפקודה head
בלינוקס כדי להציג את החלק הקדם של קובץ.
לדוגמה, head file.txt
יהציג את ה-10 שורות הראשונות של הקובץ file.txt
באופן בר-קבע.
כדי לשנות את מספר השורות המוצגות, תוכלו להשתמש באפשרות -n
בקבילה עם מספר השורות שתרצו להציג.
ספירת מילים, שורות ותווים בעזרת wc
אתם יכולים לספור מילים, שורות ותווים בקובץ בעזרת הפקודה wc
.
לדוגמה, בהרצה wc syslog.log
קיבלתי את היוצאה הבאה:
1669 9623 64367 syslog.log
ביוצאה העליונה,
-
1669
מייצג את מספר השורות בקובץsyslog.log
. 9623</
-
זה מייצג את מספר התווים בקובץ
syslog.log
.
לכן, הפקודה wc syslog.log
ספרה 1669
שורות, 9623
מילים, ו-64367
תווים בקובץ syslog.log
.
השוואת קבצים על פי שורה בשימוש ב-diff
השוואה ומציאת הבדלים בין שני קבצים היא מטלה נפוצה בלינוקס. ניתן להשוות שני קבצים ישירות בשורת הפקודה בשימוש בפקודה diff
.
בסיס הפירוש של פקודת ה-diff
הוא:
diff [options] file1 file2
ישנם שני קבצים, hello.py
ו-also-hello.py
, שנשווה בשימוש בפקודת diff
:
# תוכן של hello.py
def greet(name):
return f"Hello, {name}!"
user = input("Enter your name: ")
print(greet(user))
# תוכן של also-hello.py
more also-hello.py
def greet(name):
return fHello, {name}!
user = input(Enter your name: )
print(greet(user))
print("Nice to meet you")
- בדיקה האם הקבצים זהים או לא
diff -q hello.py also-hello.py
# פלט
Files hello.py and also-hello.py differ
- ראו כיצד הקבצים משתנים. כדי לראות את ההבדלים, ניתן להשתמש בסמן
-u
כדי לראות פלט מאוחד:
diff -u hello.py also-hello.py
--- hello.py 2024-05-24 18:31:29.891690478 +0500
+++ also-hello.py 2024-05-24 18:32:17.207921795 +0500
@@ -3,4 +3,5 @@
user = input(Enter your name: )
print(greet(user))
+print("Nice to meet you")
— hello.py 2024-05-24 18:31:29.891690478 +0500
- בפלט העליון:
--- hello.py 2024-05-24 18:31:29.891690478 +0500
מציין את הקובץ שנבדק ואת חותמת הזמן שלו.+++ also-hello.py 2024-05-24 18:32:17.207921795 +0500
מציין את הקובץ השני שנבדק ואת חותמת הזמן שלו.@@ -3,4 +3,5 @@
מציג את מספרי השורות בהן השינויים מתרחשים. במקרה זה, זה מציין ששורות 3 עד 4 בקובץ המקור השתנו לשורות 3 עד 5 בקובץ המודרף.user = input(Enter your name: )
היא שורה מהקובץ המקור.print(greet(user))
היא עוד שורה מהקובץ המקור.
+print("Nice to meet you")
היא השורה הנוספת בקובץ המודרף.
diff -y hello.py also-hello.py
כדי לראות את ההבדל בפורמט צד לצד, ניתן להשתמש בדגל -y
:
def greet(name): def greet(name):
return fHello, {name}! return fHello, {name}!
user = input(Enter your name: ) user = input(Enter your name: )
print(greet(user)) print(greet(user))
> print("Nice to meet you")
# פלט
- בפלט:
- השורות האותות בשני הקובצים מוצגות צד אחד לצד השני.
שורות שהם שונות מוצגות עם סימן >
שמרמז שהשורה נמצאת רק באחד מהקובצים.
חלק 5: העיקרון של עיצוב טקסט בלינUX
מיומנויות עיצוב טקסט באמצעות הקומאנד הן אחת מהכישורים הכי חשובים בלינUX. בחלק זה, תלמדו איך להשתמש בשני מחתרים הטקסט הפופולריים בלינUX הם Vim ו Nano.
אני מציע לכם להתמחות במחתר טקסט אחד מהאפשרויות שלכם ולהחזיק את זה. זה יחסוך לכם זמן ויגביר את היעילות שלכם. Vim ו nano הם בחירות בטוחות בגלל שהם נמצאים ברוב ההפצה הלינUX.
5.1. הדרך המלאה למומצא Vim
הקדם לVim
- Vim הוא מחתר טקסט פופולרי עבור הקומאנד השורה. Vim מגיע עם היתרונות שלו: הוא חזק, מותאם ומהיר. הנה כמה סיבות לכך שצריך לחשוב על ללמוד Vim:
- רוב השרתים נגי
- Vim משתמשת בגישה מתמקדת במקלדת, מאחר והיא מיועדת לשימוש ללא עכבר, דבר שיכול להאיץ משמעותית משימות עריכה לאחר שמבינים את קיצורי המקלדת. זה גם הופך אותה למהירה יותר מכלי ה-GUI.
- כמה יישומי Linux, לדוגמה עריכת עבודות cron, עובדים באותה פורמט עריכה כמו Vim.
Vim מתאימה לכולם – מתחילים ומשתמשים מתקדמים. Vim תומך בחיפושי מחרוזות מורכבות, הדגשת חיפושים, ועוד הרבה יותר. באמצעות תוספים, Vim מספקת יכולות מורחבות למפתחים ולמנהלי מערכות שכוללות השלמת קוד, הדגשת תחביר, ניהול קבצים, שליטת גרסאות, ועוד.
Vim יש לו שני גרסאות: Vim (vim) ו-Vim tiny (vi). Vim tiny היא גרסה קטנה יותר של Vim שחסרה בה חלק מהתכונות של Vim.
איך להתחיל להשתמש ב-vim
vim your-file.txt
התחילו להשתמש ב-Vim עם הפקודה הבאה:
your-file.txt יכול להיות קובץ חדש או קובץ קיים שברצונכם לערוך.
ניווט בווים: שליטה בתנועה ובמצבי פקודה
בימי קדם של ה-CLI, מקלדות לא היו מכילות מקשי חץ. לכן, ניווט נעשה באמצעות קבוצת המקשים הזמינים, כש-hjkl
היה אחד מתוכם.
כשמדובר בשליטה ממוקדת במקלדת, שימוש במקשי hjkl
יכול להאיץ מאוד על משימות עריכת הטקסט.
שים לב: למרות שמקשי החץ יעבדו היטב, תמיד ניתן לנסות לעבוד עם מקשי hjkl
לניווט. ישנם אנשים שמוצאים את השיטה הזו יעילה.
💡לטיפ: כדי לזכור את רצף המקשים hjkl
, ניתן להשתמש במשפט הבא: hang back (חזור אחורה), jump down (קפוץ למטה), kick up (התארך למעלה), leap forward (קפוץ קדימה).
שלושת מצבי ה-וים
- עליך לדעת את שלושת מצבי ההפעלה של וים ואיך להחליף ביניהם. קלידות התנהגות שונה בכל מצב פקודה. המצבים השלושה הם:
- מצב פקודה.
- מצב עריכה.
מצב חזותי.
מצב פקודה. כשאתה מתחיל את וים, אתה נמצא במצב פקודה כברירת מחדל. מצב זה מאפשר לך לגשת למצבים אחרים.
⚠ כדי לעבור למצבים אחרים, עליך להיות במצב פקודה תחילה
מצב עריכה
מצב זה מאפשר לך לבצע שינויים בקובץ. כדי להיכנס למצב עריכה, יש ללחוץ על I
במצב פקודה. שים לב למערך ה-'-- INSERT'
בסוף המסך.
מצב ויזואלי
- מצב זה מאפשר לך לעבוד על תו יחיד, בלוק טקסט או שורות טקסט. נשבור את זה לשלבים פשוטים. זכור, השתמש בשילובים הבאים כאשר במצב פקודה.
Shift + V
→ בחר מספר שורות.Ctrl + V
→ מצב בלוק
V
→ מצב תווים
מצב הוויזואלי מועיל כאשר יש צורך להעתיק ולהדביק או לערוך שורות במספר.
מצב פקודה מורחב.
מצב הפקודה המורחבת מאפשר לך לבצע פעולות מתקדמות כמו חיפוש, הגדרת מספרי שורות והדגשת טקסט. נכסים את המצב המורחב בסעיף הבא.
איך להישאר במסילה? אם שכחת את המצב הנוכחי שלך, פשוט לחץ ESC
פעמיים ותחזור למצב פקודה.
עריכה יעילה ב-Vim: העתקה/הדבקה וחיפוש
1. איך להעתיק ולהדביק ב-Vim
- העתקת-הדבקה מוכרת כ-"yank" ו-"put" במונחים של Linux. כדי להעתיק ולהדביק, עקוב אחר השלבים הבאים:
- בחר טקסט במצב ויזואלי.
- לחץ על
'y'
כדי להעתיק/להדביק.
הזז את הסמן שלך למיקום הנדרש ולחץ על 'p'.
2. איך לחפש טקסט בווים
ניתן לחפש סדרות של מחרוזות בעזרת וים באמצעות פקודה מצב. כדי לחפש, יש להשתמש ב/מחרוזת-לחיפוש
.
במצב הפקודה, יש להקליד :set hls
וללחוץ enter
. חיפוש באמצעות /מחרוזת-לחיפוש
. זה ידגיש את החיפושים.
נחפש כמה מחרוזות:
3. איך לצאת מווים
- למעבר למצב פקודה (על ידי לחיצה פעמיים על escape) ואז להשתמש בדגלים הללו:
- יציאה ללא שמירה →
:q!
יציאה ושמירה → :wq!
קיצורי דרך בווים: עושים עריכה מהירה
- הערה: כל הקיצורים הללו עובדים רק במצב הפקודה.
Ctrl+u
: התרחק חצי דף למעלהP
: הדבק למעלה מהסמן:%s/old/new/g
: מחליף את כל ההופעות שלold
ב־new
בקובץ:q!
: יציאה בלתי מתועניינת
Ctrl+w עקוב בהקשר h/j/k/l
: ניווט בין חלונות הפיצול
5.2. שליטה בנאנו
התחלה עם נאנו: עורך הטקסט ידידותי למשתמש
נאנו הוא עורך טקסט ידידותי למשתמש שקל לשימוש ומושלם למתחילים. הוא מותקן מראש ברוב הפצות Linux.
nano
ליצירת קובץ חדש באמצעות נאנו, השתמש בפקודה הבאה:
nano filename
להתחיל לערוך קובץ קיים בעזרת נאנו, השתמש בפקודה הבאה:
רשימת מקשי הקישור בנאנו
בואו נלמד את מקשי הקישור החשובים ביותר בנאנו. תשתמשו במקשי הקישור כדי לבצע פעולות שונות כמו שמירה, יציאה, העתקה, הדבקה ועוד.
כתוב לקובץ ושמור
בעיקרון, אחרי שתפתחו את Nano בשימוש בפקודה nano
, תוכלו להתחיל בכתיבת טקסט. כדי לשמור על הקובץ, תלחצו Ctrl+O
. יהיה לכם בקשה להזין את שמו הקובץ. תלחצו Enter
כדי לשמור על הקובץ.
יציאה מ Nano
ניתן לצאת מ Nano על ידי לחיצה Ctrl+X
. אם יש שינויים לא נשמרים, Nano יבקש מכם לשמור על השינויים לפני שיצאתכם.
עיצוב והדבקה
כדי לבחור אזור, תשתמשו ב ALT+A
. תקופה תווה תוצאה. תשתמשו בסמלים האורך כדי לבחור את הטקסט. ברגע שתבחרו, תסירו את התקופה עם ALT+^
.
כדי להעתיק את הטקסט הבחור, תלחצו Ctrl+K
. כדי להדביק את הטקסט הנהגע, תלחצו Ctrl+U
.
היתוך והדבקה
בחרו את האזור בעזרת ALT+A
. ברגע שתבחרו, היתוך את הטקסט עם Ctrl+K
. כדי להדביק את הטקסט הנהגע, תלחצו Ctrl+U
.
ניווט
השתמשו ב Alt \
כדי לעבור להתחלת הקובץ.
השתמשו ב Alt /
כדי לעבור לסוף הקובץ.
צייתת מספרי שורות
כשתפתחו קובץ בעזרת nano -l filename
, תוכלו לראות מספרי שורות בצד שמאל של הקובץ.
חיפוש
נ
ניתן גם להתחיל חיפוש למחרוזת עם CTRL + W
וללחוץ על Enter. אם ברצונך לחפש לאחור, תוכל ללחוץ על Alt+W
לאחר שתתחיל את החיפוש עם Ctrl+W
.
- סיכום של פעולות המקלדת המרכזיות בננו
Ctrl+G
: הצגת הטקסט עזרCtrl+J
: היישור פסקה נוכחיתCtrl+V
: גלול למטה בדף אחדCtrl+\
: חיפוש והחלפה
Alt+E
: משחזר את הפעולה שהובטלה לאחרונה
חלק 6: סקריפטינג באש
6.1. הגדרת סקריפטינג באש
סקריפט באש הוא קובץ המכיל רצף של פקודות שמופעלות על-ידי תוכנת הבאש בשורה אחר שורה. הוא מאפשר לבצע סדרה של פעולות כמו
על ידי שימור הוראות בסקripט, ניתן לשחזר את אותה רצף של שלבים רבפעמית ולבצע אותם על ידי הרצת הסקripט.
6.2 היתרונות של השליטה Bash
שיתוף השליטה Bash הוא כלי חזק ומושלם לאוטומציית משימות ניהול מערכת, ניהול משאבי מערכת, וביצוע שאר משימות מסורתיות במערכות Unix/Linux.
- חלק מהיתרונות של העלילה הם:
- אוטומצייה: עלילות מאפשרות לך לאוטומט תפקידים מחזרים ותהליכים, שחוזרים על זמן ומפחיתים את הסיכון לטעויות שיכולות להתרחש באותם ביצוע ידני.
- ניידות: עלילות יכולות להיות נעדרות בשונות הפלטפורמות והמערכות ההפעלה, כולל אוניקס, לינוקס, מקסיOS, ואפילו בעזרת הדמיונים או מכונות מדמיות ב-Windows.
- גמישות: קבצי תסריט (Shell scripts) הם בעלי אפשרויות התאמה גבוהות וניתן לשנותם בקלות כדי להתאים לדרישות ספציפיות. ניתן גם לשלב אותם עם שפות תכנות אחרות או כלי עזר כדי ליצור תסריטים עוצמתיים יותר.
- נגישות: קבצי תסריט (Shell scripts) קלים לכתיבה ואינם דורשים כלים או תוכנה מיוחדת. ניתן לערוך אותם באמצעות כל עורך טקסט, ורוב מערכות ההפעלה מגיעות עם מפרש Shell מובנה.
- אינטגרציה: קבצי תסריט (Shell scripts) יכולים להיכלל עם כלים ויישומים אחרים, כגון מסדי נתונים, שרתי אינטרנט ושירותי ענן, מאפשרים עבודה מערכתית וניהול מערכתי מורכב יותר.
איתור באגים: קבצי תסריט (Shell scripts) קלים לאיתור באגים, ורוב המפרשים מגיעים עם כלים מובנים לאיתור ולדיווח על שגיאות שיכולים לעזור לזהות ולתקן בעיות במהירות.
6.3. סקירה של מפרש ה-Bash וממשק מבנה הפקודות
כלים כמו "של" ו"באש" משמשים באופן קרוב לשתותר. אך יש הבדל עדין בין שניהם.
המושג "של" מתייחס לתוכנה שמספקת ממשק שורת-פקודה לתקשורת עם מערכת ההפעלה. באש (Bourne-Again SHell) הוא אחד מהשלים האוניקסיים/לינוקסיים הנפוצים ביותר והוא השל ברירת המחדל בהרבה גרסאות לינוקס.
עד עכשיו, הפקודות שהכנסת למעשה היו מופקעות ב-"של".
למרות שבאש היא סוג של של, ישנם שלים אחרים זמינים גם כן, כמו Korn shell (ksh), C shell (csh), ו Z shell (zsh). לכל של יש את הסינטקס השלו ואת סט הפיצ'רים, אבל כולם חולקים את המטרה המשותפת של ספקת ממשק שורת-פקודה לתקשורת עם מערכת ההפעלה.
ps
# output:
PID TTY TIME CMD
20506 pts/0 00:00:00 bash <--- the shell type
20931 pts/0 00:00:00 ps
ניתן לקבוע את סוג השל שלך באמצעות הפקודה ps
:
בסכמה, בעוד "של" הוא מושג רחב שמתייחס לכל תוכנה שמספקת ממשק שורת-פקודה, "באש" הוא סוג מסוים של של שנפוץ במערכות אוניקס/לינוקס.
הערה: בחלק זה, נשתמש בשל "באש".
6.4. איך ליצור ולהריץ תסריטים של באש
כללי הסיווג השם של תסריטים
לפי הסיווג השם, תסריטי באש מסתיימים ב- .sh
. אך תסריטי באש יכולים להרוץ בהצלחה ללא ההרחבה sh
.
הוספת השבאנג
סקריפטים של Bash מתחילים עם shebang
. Shebang הוא שילוב של bash #
ו- bang !
לאחריו נתיב באש של bash. זהו השורה הראשונה של הסקריפט. Shebang אומר לשל כי יש להפעיל את זה דרך bash shell. Shebang היא פשוט נתיב מוחלט למפרש bash.
#!/bin/bash
מטה דוגמה להצהרת ה-shebang.
which bash
ניתן למצוא את נתיב ה-shell שלך באש (שעשוי להשתנות מהמופיע לעיל) באמצעות הפקודה:
יצירת סקריפט bash הראשון שלך
הסקריפט הראשון שלנו מעודד את המשתמש להזין נתיב. בתמורה, התוכן שלו יופיע.
vim run_all.sh
צור קובץ בשם run_all.sh
באמצעות כל עורך שבחרת.
#!/bin/bash
echo "Today is " `date`
echo -e "\nenter the path to directory"
read the_path
echo -e "\n you path has the following files and folders: "
ls $the_path
הוסף את הפקודות הבאות בקובץ שלך ושמור אותו:
1 בואו נביט עמוק יותר בסקריפט שורה אחר שורה. אני מציג שוב את אותו סקריפט, אך הפעם עם מספור שורות.
2 echo "Today is " `date`
3
4 echo -e "\nenter the path to directory"
5 read the_path
6
7 echo -e "\n you path has the following files and folders: "
8 ls $the_path
- #!/bin/bash
- שורה מס׳ 1: ה-shebang (
#!/bin/bash
) מצביע על נתיב ה-shell של bash. - שורה מס׳ 2: הפקודה
echo
מציגה את התאריך והשעה הנוכחיים בטרמינל. שימו לב שה-date
נמצא בסוגריים חזרה. - שורה מס׳ 4: אנו רוצים שהמשתמש יזין נתיב תקני.
- שורה מספר 5: פקודת
read
קוראת את הקלט ושומרת אותו במשתנהthe_path
.
שורה מספר 8: פקודת ls
לוקחת את המשתנה עם הנתיב המאוחסן ומציגה את הקבצים והתיקיות הנוכחיים.
הפעלת סקריפט הבש
chmod u+x run_all.sh
כדי להפוך את הסקריפט לניתן להרצה, תקן למשתמש שלך הרשאות הרצתיות באמצעות הפקודה הבאה:
- כאן,
chmod
משנה את הבעלות של קובץ עבור המשתמש הנוכחי :u
.+x
מוסיף את ההרשאות הרצתיות למשתמש הנוכחי. זה אומר שהמשתמש הבעלים יכול כעת להריץ את הסקריפט.
run_all.sh
הוא הקובץ שברצוננו להריץ.
- אפשר להריץ את הסקריפט באמצעות אחת מהשיטות המוזכרות:
sh run_all.sh
bash run_all.sh
סקריפט של ריצת הכל.sh
בואו נראה את זה רץ בפעולה 🚀
6.5. בסיסי סקריפטינג באש
הערות בסקריפטינג באש
הערות מתחילות עם #
בסקריפטינג באש. זה אומר שכל שורה שמתחילה עם #
היא הערה ותושמטה על ידי המתונגר.
הערות מאוד מועילות בתיעוד הקוד, וזו דרך טובה להוסיף אותן כדי לעזור לאחרים להבין את הקוד.
הנה דוגמאות של הערות:
# זוהי דוגמא להערה
# שתי השורות האלה יישמעו על ידי המתונגר
משתנים וסוגי נתונים ב-Bash
משתנים מאפשרים לך לאחסן נתונים. אתה יכול להשתמש במשתנים כדי לקרוא, לגשת ולשנות נתונים ברוב הסקריפט שלך.
אין סוגי נתונים ב-Bash. ב-Bash, משתנה מסוגל לאחסן ערכים נוספים, תווים יחידים או רצפי תווים.
- ב-Bash, אתה יכול להשתמש ולהגדיר את ערכי המשתנה בדרכים הבאות:
country=Netherlands
להקצות את הערך ישירות:
same_country=$country
2. להקצות את הערך על פי הפלט שנקבע מתוך תוכנה או פקודה, בשימוש בחלקת פקודה. תשימו לב שנדרשת $
כדי לגשת לערך של משתנה קיים.
זה מקצה את הערך של country
למשתנה החדש same_country
.
country=Netherlands
echo $country
כדי לגשת לערך של המשתנ
Netherlands
new_country=$country
echo $new_country
פלט
Netherlands
פלט
למעלה, אתה יכול לראות דוגמה של הקצאה והדפסה של ערכי משתנה.
הנורמות למתן שמות למשתנים
- בתסריטים Bash, הדברים הבאים הם הנורמות למתן שמות למשתנים:
- שמות המשתנים צריכים להתחיל עם אות או תוויד (
_
). - שמות המשתנים יכולים להכיל אותיות, ספרות ותווידים (
_
). - שמות המשתנים חשובים לגדר האותיות.
- שמות המשתנים לא צריכים להכיל חלוקי שם או תווים מיוחדים.
- השתמש בשמות מתאריים שמשקפים את תכליתו של המשתנה.
הימנע משימוש במילות מקובעות, כמו if
, then
, else
, fi
, וכן הלאה כשמות משתנים.
name
count
_var
myVar
MY_VAR
הנה כמה דוגמאות של שמות משתנים חוקיים ב-Bash:
והנה כמה
2ndvar (variable name starts with a number)
my var (variable name contains a space)
my-var (variable name contains a hyphen)
# שמות משתנים לא תקינים
עקרונות אלו לשימוש בשמות עוזרים להפוך סקריפטים ב-Bash לנגישים יותר לקריאה ולתחזוקה.
קלט ופלט בסקריפטים ב-Bash
איסוף קלט
- בסעיף זה, נדון בכמה שיטות לספק קלט לסקריפטים שלנו.
קריאת הקלט מהמשתמש ואחסונו במשתנה
#!/bin/bash
echo "What's your name?"
read entered_name
echo -e "\nWelcome to bash tutorial" $entered_name
אנו יכולים לקרוא את הקלט מהמשתמש באמצעות הפקודה read
.
2. קריאה מקובץ
while read line
do
echo $line
done < input.txt
קטע קוד זה קורא כל שורה מקובץ בשם input.txt
ומדפיס אותה לטרמינל. נלמד פקודות לולאה מאוחר יותר בסעיף זה.
3. ארגומנטים משורת הפקודה
בסקריפט או פונקציה של Bash, $1
מציין את הארגומנט הראשון שהועבר, $2
מציין את הארגומנט השני שהועבר, וכן הלאה.
#!/bin/bash
echo "Hello, $1!"
סקריפט זה מקבל שם כארגומנט משורת הפקודה ומדפיס ברכה אישית.
סיפקנו את Zaira
כארגומנט לסקריפט.
פלט:
הצגת תוצאות
- בסעיף זה נדון בכמה שיטות לקבל פלט מהסקריפטים.
echo "Hello, World!"
הדפסה לטרמינל:
פקודה זו מדפיסה את הטקסט "שלום, עולם!" לטרמינל.
echo "This is some text." > output.txt
2. כתיבה לקובץ:
פקודה זו כותבת את הטקסט "זהו טקסט כלשהו." לקובץ בשם output.txt
. שימו לב כי האופרטור >
מחליף קובץ אם כבר קיימת בו תוכן.
echo "More text." >> output.txt
3. הוספה לקובץ:
זה מוסף את הטקסט "עוד טקסט." לקצה הקבצים output.txt
.
ls > files.txt
4. העתקת התוצאות:
זה מציג את הקבצים בתוך התיקייה הנוכחית ומקליד את התוצאות לקובץ בשם files.txt
. ניתן להעתיק את התוצאות של כל פקינס לקובץ בדרך זו.
תלמידים על העתקת התוצאות בפירוט בפרק 8.5.
הצעות מובניות (if/else)
מבנים שמייצרים תוצאות בוליאניות, שהם או אמת או שקר, נקראים תנאים. קיימות דרכים מספרות להערכת תנאים, כולל if
, if-else
, if-elif-else
, והצעות מובניות מונחות.
if [[ condition ]];
then
statement
elif [[ condition ]]; then
statement
else
do this by default
fi
שיווקסיפס:
שיווקסיפס של הצעות מובניות בבאש
if [ $a -gt 60 -a $b -lt 100 ]
אנחנו יכולים להשתמש במנגנונים הגיוניים כמו והחדש אחד -a
ואחד מוליך -o
כדי לבצע השוואות שיש להם חשיבות רבה יותר.
ההצעה הזו בודקת אם שני התנאים הם true
: a
גדול מ 60
וb
קטן מ 100
.
#!/bin/bash
בואו נראה דוגמה אחת של תוכנית באש השולים if
, if-else
, וif-elif-else
הצעות כדי לקבע האם מספר שנקרא על ידי המשתמש הוא חיובי, שלילי, או אפס:
echo "Please enter a number: "
read num
if [ $num -gt 0 ]; then
echo "$num is positive"
elif [ $num -lt 0 ]; then
echo "$num is negative"
else
echo "$num is zero"
fi
# תוכנית לקבע אם מספר הוא חיובי, שלילי, או אפס
הסקript ראשית מבקש מהמשתמש להזין מספר. אחר כך, הוא משתמש בהצעה if
כדי לבדוק אם המספר הוא גדול מ 0
. אם כן, הסקript מוציא את המספר הזה כחיובי. אם המספר אינו גדול מ 0
, הסקript מתקדם להצעה הבאה, שהיא של if-elif
.
פה, הסקript בדוק אם המספר הוא פחות מ 0
. אם כן, הסקript מוציא שהמספר הוא שלילי.
לבסוף, אם המספר לא גדול מ 0
ולא פחות מ 0
, הסקript משתמש בהצעה else
כדי להציע שהמספר הוא אפס.
ראו אותו בפעולה 🚀
הילוך והפילוט בבאש
לולאה חייבת
לולאות חייבות בדיקות תנאים וממשיכות עד שהתנאים נשארים true
. עלינו לספק משפט מנצח שמעלה את המנוצח כדי לשלוט ביציאה הלולאה.
#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
echo "$i"
(( i += 1 ))
done
במקרה הבא, (( i += 1 ))
הוא המשפט המנצח שמעלה את ערכו של i
. הלולאה תרצה בדיוק 10 פעמים.
לולאה על-פי
הלולאה for
, בדיוק כמו הלולאה החייבת, מאפשרת לך לבצע הגדרות מספר מספר פעמים. כל לולאה שונה בשינוי השפת והשימוש.
#!/bin/bash
for i in {1..5}
do
echo $i
done
במקרה הבא, הלולאה תהיה מסובבת 5 פעמים.
הצעות מקטע
case expression in
pattern1)
סיטואציית באש משמשת להשוואה של ערך מסוים ביחס לרשימה של תבניות ולהרצת חלק של קוד בהתבסס על התבנית הראשונה שהתאימה. הסינטקס של סיטואציה בבאש הוא כפי שלאחר מכן:
;;
pattern2)
# קוד לביצוע אם הביטוי מתאים לתבנית1
;;
pattern3)
# קוד לביצוע אם הביטוי מתאים לתבנית2
;;
*)
# קוד לביצוע אם הביטוי מתאים לתבנית3
;;
esac
# קוד לביצוע אם אף אחת מהתבניות למעלה לא מתאימה לביטוי
כאן, "ביטוי" הוא הערך שרוצים להשוות, ו"תבנית1", "תבנית2", "תבנית3" וכן הלאה הן התבניות שרוצים להשוות אותו בניהן.
הסמייליים הכפולים ";;" מפרידים בין כל בלוק קוד לביצוע עבור כל תבנית. הכוכבית "*" מייצגת את המקרה הרגיל, שמופעלת אם אף אחת מהתבניות המסוימות לא מתאימה לביטוי.
fruit="apple"
case $fruit in
"apple")
echo "This is a red fruit."
;;
"banana")
echo "This is a yellow fruit."
;;
"orange")
echo "This is an orange fruit."
;;
*)
echo "Unknown fruit."
;;
esac
בואו נראה דוגמה:
בדוגמה זו, מכיוון שהערך של fruit
הוא apple
, התבנית הראשונה מתאימה, והבלוק של הקוד שמדגיש This is a red fruit.
מופעל. אם הערך של fruit
היה banana
, התבנית השנייה היתה מתאימה והבלוק של הקוד שמדגיש This is a yellow fruit.
היה מופעל, וכך הלאה.
אם הערך של fruit
לא מתאים לאף אחת מהתבניות המסוימות, המקרה הרגיל מופעל, שמדגיש Unknown fruit.
חלק 7: ניהול חבילות תוכנה בלינוקס
לינוקס מגיע עם מספר תוכניות מובנות. אך ייתכן שתצטרך להתקין תוכנות חדשות בהתאם לצרכיך. ייתכן גם שתצטרך לשדרג את היישומים הקיימים.
7.1. חבילות וניהול חבילות
מהו חבילה?
חבילה היא אוסף של קבצים שמאוגדים יחד. קבצים אלו הם חיוניים להפעלת תוכנה מסוימת. קבצים אלו כוללים את קבצי הביצוע של התוכנה, הספריות ומשאבים נוספים.
בנוסף לקבצים הנדרשים להפעלת התוכנה, חבילות מכילות גם תסריטי התקנה, המעתיקים את הקבצים למקום שבו הם נדרשים. ייתכן שתוכנה תכיל מספר קבצים ותלות. עם חבילות, נהוג יותר לנהל את כל הקבצים והתלות במקביל.
מה ההבדל בין מקור ובינארי?
מתכנתים כותבים קוד מקור בשפת תכנות. קוד המקור נמצא בהמשך נהג בקידוד לתוך קוד מכונה שהמחשב יכול להבין. הקוד שנקודד נקרא קוד בינארי.
כאשר אתה מוריד חבילה, אתה יכול לקבל את קוד המקור או את הקוד הבינארי. קוד המקור הוא הקוד הנקרא הנוכחי שניתן לקידוד לקוד בינארי. קוד הבינארי הוא הקוד הנקרא הנקרא המקודד שהמחשב יכול להבין.
חבילות המקור ניתן להשתמש עם כל סוג של מכונה אם קוד המקור נקודד באופן תקין. הבינארי, מצד שני, הוא קוד מקודד שמותאם לסוג מסוים של מכונה או ארכיטקטורה.
uname -m
ניתן למצוא את ארכיטקטורת המכונה שלך באמצעות הפקודה uname -m
.
x86_64
# פלט
תלות חבילות
תוכניות רבות חולקות קבצים. במקום לכלול קבצים אלו בכל חבילה, חבילה נפרדת יכולה לספק אותם לכל התוכניות.
כדי להתקין תוכנה שזקוקה לקבצים אלו, עליך להתקין גם את החבילה המכילה אותם. זה נקרא תלות חבילה. ציון תלות מקטין את גודל החבילות ומפשט אותן על ידי הפחתת כפילויות.
כאשר אתה מתקין תוכנה, גם התלויות שלה חייבות להיות מותקנות. רוב התלויות הנדרשות בדרך כלל כבר מותקנות, אך ייתכן שיידרשו כמה נוספות. לכן, אל תתפלא אם מספר חבילות אחרות מותקנות יחד עם החבילה שבחרת. אלו הן התלויות הנדרשות.
מנהלי חבילות
לינוקס מציעה מערכת ניהול חבילות מקיפה להתקנה, שדרוג, קונפיגורציה והסרה של תוכנה.
עם ניהול חבילות, ניתן לגשת לבסיס מאורגן של אלפי חבילות תוכנה יחד עם היכולת לפתור תלות ולבדוק עדכוני תוכנה.
ניתן לנהל חבילות באמצעות כלי שורת פקודה שניתן לאוטומט בקלות על ידי מנהלי מערכת, או דרך ממשק גרפי.
ערוצי תוכנה/מאגרי תוכנה
⚠️ ניהול חבילות שונה בין הפצות שונות. כאן, אנו משתמשים באובונטו.
התקנת תוכנה בלינוקס שונה מעט בהשוואה לווינדוס ולמק.
לינוקס משתמשת במאגרים לאחסון חבילות תוכנה. מאגר הוא אוסף של חבילות תוכנה הזמינות להתקנה דרך מנהל חבילות.
סוכן מנהל חבילות גם שומר מדדון של כל החבילות הזמינות מתוך מאגר. לפעמים המדדון מתבנה מחדש כדי לוודא שהוא מעודכן ולדעת אילו חבילות עודכנו או הוספו לערוץ מאז הבדיקה האחרונה.
התהליך הכללי להורדת תוכנה מתוך מאגר נראה כך:
- אם נדבר באופן ספציפי על אובונטו,
- המדדון נלך באמצעות
apt update.
(apt
מוסבר בחלק הבא). - קובצים/תלות נדרשים על פי המדדון באמצעות
apt install
- חבילות ותלות מתוקנים מקומית.
תלות וחבילות מעודכנות כאשר נדרש באמצעות apt update
ו-apt upgrade
בדיסטרובים מבוססי דביאן, ניתן למצוא את רשימת המאגרים (repositories) ב- /etc/apt/sources.list
.
7.2. התקנת חבילה באמצעות שורת פקודה
פקודת apt
היא כלי חזק לשורת הפקודה, העובד עם "Advanced Packaging Tool (APT)" של אובונטו.
apt
, יחד עם הפקודות שמגיעות עמו, מספק את האמצעים להתקין חבילות תוכנה חדשות, לשדרג חבילות תוכנה קיימות, לעדכן את אינדקס רשימת החבילות, ואף לשדרג את כל מערכת האובונטו.
כדי לצפות בלוגים של ההתקנה באמצעות apt
, ניתן לצפות בקובץ /var/log/dpkg.log
.
הנה כמה משתמשי הפקודה apt
:
התקנת חבילות
sudo apt install htop
לדוגמה, כדי להתקין את חבילת htop
, ניתן להשתמש בפקודה הבאה:
עדכון אינדקס רשימת החבילות
sudo apt update
אינדקס רשימת החבילות הוא רשימה של כל החבילות הזמינות במאגרים. כדי לעדכן את אינדקס רשימת החבילות המקומי, ניתן להשתמש בפקודה הבאה:
שדרוג החבילות
חבילות שמותקנות במערכת שלך יכולות לקבל עדכונים הכוללים תיקוני באגים, תיקוני אבטחה ותכונות חדשות.
sudo apt upgrade
כדי לשדרג את החבילות, ניתן להשתמש בפקודה הבאה:
הסרת חבילות
sudo apt remove htop
כדי להסיר חבילה, דוגמת htop
, ניתן להשתמש בפקודה הבאה:
7.3. התקנת חבילה באמצעות שיטה גרפית מתקדמת – Synaptic
אם אינך נוח עם שורת הפקודה, ניתן להשתמש ביישום GUI להתקנת חבילות. ניתן להשיג את אותם תוצאות כמו בשורת הפקודה, אך עם ממשק גרפי.
Synaptic הוא יישום לניהול חבילות גרפי שעוזר ברישום החבילות המותקנות, מעמדן, עדכונים ממתינים, וכן הלאה. הוא מציע מסננים מותאמים אישית כדי לעזור לך להצמיד את תוצאות החיפוש.
שום דבר לא יוריד את התשואות שלך מאשר יכולות לעשות השירותים שלך בצורה מקצועית ובערך.
7.4. התקנת חבילות שהורדו מאתר באינטרנט
אולי תרצה להתקין חבילה שהורדת מאתר באינטרנט, במקום ממאגר תוכנה. חבילות אלו נקראות קבצי .deb
.
cd directory
sudo dpkg -i package_name.deb
שימוש בdpkg
להתקנת חבילות:dpkg
הוא כלי שורת פקודה המשמש להתקנת חבילות. כדי להתקין חבילה עם dpkg, פתחו את המסוף והקלידו את הבא:
שים לב: החליפו "directory" בתיקייה בה נמצאת החבילה ו"package_name" בשם הקובץ של החבילה.
לחלופין, ניתן ללחוץ עם היד הימנית, לבחור "לפתוח עם יישום אחר" ולבחור יישום עם ממשק גרפי.
💡 טיפ: באובונטו, ניתן לראות רשימה של החבילות המותקנות עם dpkg --list
.
חלק 8: נושאים לינוקס מתקדמים
8.1. ניהול משתמשים
יכולים להיות משתמשים מרובים עם רמות גישה שונות במערכת. בלינוקס, המשתמש root יש את הרמת הגישה הגבוהה ביותר ויכול לבצע כל פעולה על המערכת. משתמשים רגילים ישנם גישה מוגבלת ויכולים רק לבצע פעולות שניתנה להם הרשות לבצע.
מהי משתמש?
חשבון משתמש מספק הפרדה בין אנשים ותוכנות שונות שיכולות להריץ פקודות.
אנשים מזהים מ
כאשר משתמשים אנושיים מתחברים באמצעות שם המשתמש המסופק, הם חייבים להשתמש בסיסמה כדי לאמת את זהותם.
חשבונות המשתמשים מהווים את היסודות של אבטחת המערכת. בעלות על קבצים משוייכת גם לחשבונות המשתמשים ומיישמת שליטה על גישה לקבצים. לכל תהליך יש חשבון משתמש משוייך שמספק שכבת שליטה למנהלי המערכת.
- קיימות שלושה סוגים עיקריים של חשבונות משתמשים:
- משתמש ראשי: משתמש הראשי מסוגל לגשת למערכת ללא הגבלות. שם המשתמש הראשי הוא
root
. יש לו מזהה משתמש (UID) של 0. - משתמש מערכת: משתמש המערכת כולל חשבונות משתמש שמשמשים להפעלת שירותים מערכתיים. חשבונות אלו משמשים להפעלת שירותים מערכתיים ואין להם מטרה לשיתוף פעולה אנושית.
משתמש רגיל: משתמשים רגילים הם משתמשים אנושיים המשכילים לגשת למערכת.
id
uid=1000(john) gid=1000(john) groups=1000(john),4(adm),24(cdrom),27(sudo),30(dip)... output truncated
פקודת id
מציגה את מזהה המשתמש ומזהה הקבוצה של המשתמש הנוכחי.
id username
כדי להציג את המידע הבסיסי של משתמש אחר, עבירת שם המשתמש כארגומנט לפקודת id
.
ps -u
לצפייה במידע קשרת משתמשים עבור תהליכים, השתמשו בפקודת ps
עם הסימן -u
.
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 16968 3920 ? Ss 18:45 0:00 /sbin/init splash
root 2 0.0 0.0 0 0 ? S 18:45 0:00 [kthreadd]
# הפלט
לשמורת מחדל, מערכות משתמשות בקובץ /etc/passwd
כדי לאחסן מידע על משתמשים.
root:x:0:0:root:/root:/bin/bash
הנה שורה מהקובץ /etc/passwd
:
- הקובץ
/etc/passwd
מכיל את המידע הבא על כל משתמש: - שם משתמש:
root
– שם המשתמש של חשבון המשתמש. - סיסמה:
x
– הסיסמה בצורה מוצפנת עבור חשבון המשתמש שנמצאת בקובץ/etc/shadow
בגלל הגנת המידע. - ID משתמש (UID):
0
– המזהה המספרי היחיד לחשבון המשתמש. - ID קבוצה (GID):
0
– המזהה העיקרי של קבוצת המשתמש. - מידע משתמש:
root
– השם האמיתי של חשבון המשתמש. - ספריית הבית:
/root
– ספריית הבית עבור חשבון המשתמש.
Shell: /bin/bash
– הקושחה המוגדרת כברירת מחדל עבור חשבון המשתמש. משתמש מערכת עשוי להשתמש ב-/sbin/nologin
אם אין ניתובים אינטראקטיביים שמורים עבור משתמש זה.
מהו קבוצה?
קבוצה היא אוסף של חשבונות משתמש שמשתפים גישה ומשאבים. לקבוצות יש שמות קבוצה לזיהוי שלהן. המערכת מזהה קבוצות לפי מספר ייחודי הנקרא מזהה הקבוצה (GID).
ברירת המחדל, מידע על הקבוצות מאוחסן בקובץ /etc/group
.
adm:x:4:syslog,john
הנה ערך מתוך קובץ /etc/group
:
- הנה הפירוט של השדות בערך הנתון:
- שם הקבוצה:
adm
– שם הקבוצה. - סיסמה:
x
– הסיסמה של הקבוצה מאוחסנת בקובץ/etc/gshadow
מטעמי אבטחה. הסיסמה אופציונלית ומופיעה ריקה אם אינה מוגדרת. - זיהוי קבוצה (GID):
4
– המזהה המספרי היחודי של הקבוצה.
חברי הקבוצה: syslog, john
– רשימת שמות המשתמשים המהווים חברי הקבוצה. במקרה זה, לקבוצה adm
יש שני חברים: syslog
ו־john
.
ברשומה ספציפית זו, שם הקבוצה הוא adm
, מזהה הקבוצה הוא 4
, ולקבוצה יש שני חברים: syslog
ו־john
. שדה הסיסמה נקבע בדרך כלל ל־x
כדי לציין שהסיסמה של הקבוצה מאוחסנת בקובץ /etc/gshadow
.
- הקבוצות מחולקות גם לקבוצות 'ראשיות' ו'תומכות'.
- קבוצת הראשית: לכל משתמש מוקצתת קבוצת ראשית אחת כברירת מחדל. קבוצה זו כללית משם כמו המשתמש ונוצרת כאשר חשבון המשתמש נוצר. קבצים ותיקיות שנוצרים על ידי המשתמש בדרך כלל שייכים לקבוצה ראשית זו.
קבוצות נלוות: אלו הן קבוצות נוספות שבהן יכול להיות המשתמש בנוסף לקבוצת הראשית שלו. המשתמשים יכולים להיות חברים במספר קבוצות נלוות. קבוצות אלו מאפשרות למשתמש לקבל הרשאות למשאבים שמשותפים בין הקבוצות הללו. הן עוזרות לספק גישה למשאבים משותפים מבלי להשפיע על הרשאות הקובץ של המערכת ולשמור על האבטחה במצב שלמות. בעוד שהמשתמש חייב להיות חלק מקבוצה ראשית אחת, הצטרפות לקבוצות נלוות היא אופציונלית.
שליטה בגישה: מציאת והבנת הרשאות קובץ
בעלות קובץ ניתן לראות באמצעות הפקודה ls -l
. העמודה הראשונה בפלט של הפקודה ls -l
מציגה את ההרשאות של הקובץ. עמודות אחרות מציגות את בעל הקובץ ואת הקבוצה שבה הקובץ שייך.
נבחן בקרוב את העמודה מצב
:
- מצב מגדיר שתי דברים:
- סוג קובץ: סוג הקובץ מגדיר את סוג הקובץ. עבור קבצים רגילים שכוללים מידע פשוט זה ריק
-
. עבור סוגי קובץ מיוחדים אחרים הסימן שונה. עבור תיקייה שהיא קובץ מיוחד, זהd
. קבצים מיוחדים מתייחסים אליהם בצורה שונה על-ידי המערכת ההפעלה.
קסטות הרשאות: המערך הבא של תווים מגדיר את הרשאות למשתמש, לקבוצה, ולאחרים בהדדיה.
– משתמש: זהו בעל הקובץ ובעל הקובץ שייך לקסטה זו.
– קבוצה: חברי קבוצת הקובץ שייכים לקסטה זו
– אחרים: כל משתמשים שאינם חלק מהמשתמשים או הקבוצה שייכים לקסטה זו.
💡טיפ: ביטול תיקייה ניתן לראות בעזרת הפקודה ls -ld
.
איך לקרוא הרשאות סימוניות או הרשאות rwx
- הייצוג
rwx
ידוע כייצוג סימוני של הרשאות. במערך הרשאות, - קרא. זה מודגש בתוות הראשונה של המשוואה.
כתב
מייצג כתיבה. זה מודגש בתוות השניה של המשוואה.
מיקום
מייצג הרצאה. זה מודגש בתוות השלישית של המשוואה.
קרא:
לקבצים רגילים, הרשאות לקריאה מאפשרות לקבץ להיות פתוח ולהיקרא, אך לא מאפשרות למשתמשים לשנות אותו.
בדיוק כך גם עבור תיבות, הרשאות לקריאה מאפשרות לרשימת תוכן התיבה בלי שינויים בתיבה.
כתב:
כשלקבצים יש הרשאות לכתיבה, המשתמש יכול לשנות (לערוך, למחוק) את הקבץ ולשמור עליו.
עבור תיבות, הרשאות לכתיבה מאפשרות למשתמש לשנות את התוכן (ליצור, למחוק, לשנות את שמות הקבצים בתוכם), ולשנות את התוכן של הקבצים שלמשתמשים יש הרשאות לכתיבה אליהם.
דוגמאות של הרשאות בלינUX
- עכשיו שאנחנו יודעים איך לקרוא להרשאות, בואו נראה כמה דוגמאות.
- קוד: -rw-rw-r–: קובץ שנפתח לשינוי על ידי בעליו והקבוצה אבל לא על ידי אחרים.
קוד: drwxrwx—: תיקייה שניתן לשנותה על ידי בעליה והקבוצה.
הרצה:
עבור קבצים, הרשאות הרצה מאפשרות למשתמש להריץ תסריט מופעל. עבור תיקיות, המשתמש יכול לגשת אליהן ולקבל פרטים על קבצים בתיקייה.
איך לשנות בעלות והרשאות קבצים בלינוקס באמצעות chmod
ו-chown
עכשיו שאנחנו יודעים את הבסיס של בעלות והרשאות, בואו נראה איך ניתן לשנות הרשאות באמצעות הפקודה chmod
.
chmod permissions filename
תחביר שלchmod
:
- שם,
ההרשאות
יכולות להיות קריאה, כתיבה, הרצה או שילוב שלהן.
שם_הקובץ
הוא שם הקובץ שלו צריך לשנות את ההרשאות. זה גם יכול להיות רשימה של קבצים כדי לשנות הרשאות בקנה מידה.
- נ
- מצב סמלי: שיטה זו משתמשת בסמלים כמו
u
,g
,o
כדי לייצג משתמשים, קבוצות ואחרים. הרשאות מיוצגות כ-r, w, x
לקריאה, כתיבה וביצוע, בהתאמה. ניתן לשנות הרשאות באמצעות +, – ו=.
מצב אבסולוטי: שיטה זו מייצגת הרשאות כמספרים אוקטליים בעלי 3 ספרות בטווח 0-7.
עכשיו, נראה אותן בפרט.
כיצד לשנות הרשאות באמצעות מצב סמלי
הטבלה למטה מסכמת את ייצוג המשתמשים: | ייצוג משתמש |
u | תיאור |
g | משתמש/בעלים |
o | קבוצה |
אחרים
אנו יכולים להשתמש במפענחים מתמטיים כדי להוסיף, להסיר ולהקצות הרשאות. הטבלה למטה מציגה את הסיכום: | מפעיל |
תיאור | + |
מוסיף הרשאה לקובץ או לתיקייה | – |
מסיר את ההרשאה | = |
מוגדרת הרשאה אם לא נמצאה קודם. גם משתלטת על הרשאות אם נתגברו קודם.
דוגמה:
נניח שיש לי סקripט ואני רוצה להפוך אותו לנייד עבור בעלי הקובץ zaira
.
הרשאות הנוכחיות של הקובץ הן בדרך הבאה:
בואו נפרד את הרשאות בדרך הבאה:
chmod u+x mymotd.sh
כדי להוסיף את האפשרויות לביצוע (x
) לבעל (u
) באופן סימבולי ניתן להשתמש בפקודה הבאה:
היצאה:
עכשיו, אנחנו יכולים לראות שנוסדו את האפשרויות לביצוע עבור בעל zaira
.
- דוגמאות נוספות לשינוי רשאות באופן סימבולי:
- הסרת
קריאה
וכתיבה
לצוות
ולאחרים
:chmod go-rw
. - הסרת
קריאה
לאחרים
:chmod o-r
.
העלת כתיבה
לצוות
וחיסול הרשאות הקיימות: chmod g=w
.
איך לשנות הרשאות באופן מושלם
מצב הגישה המוחלט משתמש במספרים כדי לייצג הרשאות ובמתמטיקאים כדי לשנות אותם.
הטבלה הבאה מראה איך אנחנו יכולים להעניק הרשאות רלוונטיות: | הרשאה |
לספק הרשאה | קריאה |
הוסף 4 | כתיבה |
הוסף 2 | ביצוע |
הוסף 1
הרשאות יכולות להוצע באמצעות הסרה. הטבלה הבאה מראה איך נוכל להסיר הרשאות רלוונטיות: | הרשאה |
לספק הרשאה | קריאה |
הסר 4 | כתיבה |
הסר 2 | ביצוע |
הסר 1
- דוגמה:
הגישה read
(הוסף 4) לuser
, read
(הוסף 4) וexecute
(הוסף 1) לקבוצה, ורק execute
(הוסף 1) לאחרים.
chmod 451 file-name
זו הדרך בה ביצענו את החישוב:
- שימו לב שזה אותו דבר כמו
r--r-x--x
.
הסר את הזכויות לביצוע מאחרים וקבוצה.
- כדי להסיר את הזכויות לביצוע מאחרים וקבוצה, הסר 1 מחלק הביצוע של השתיים האחרונות.
נקבע עבור user
יכולת קריאה (read
), כתיבה (write
) וביצוע (execute
), עבור group
יכולת קריאה (read
) וביצוע (execute
), ורק קריאה (read
) עבור האחרים.
זה יהיה אותו הדבר כמו rwxr-xr--
.
איך לשנות בעלות באמצעות הפקודה chown
בשלב הבא, נלמד כיצד לשנות את בעלות הקובץ. ניתן לשנות את בעלות הקובץ או התיקייה באמצעות הפקודה chown
. במקרים מסוימים, שינוי בעלות דורש יעוד הרשאות sudo
.
chown user filename
תחביר של chown
:
איך לשנות את בעלות המשתמש באמצעות chown
בואו נעביר את בעלות הקובץ ממשתמש zaira
למשתמש news
.
chown news mymotd.sh
פקודה לשנות בעלות: sudo chown news mymotd.sh
.
פלט:
איך לשנות בעלות המשתמש והקבוצה בו זמנית
chown user:group filename
ניתן גם להשתמש ב-chown
כדי לשנות בעלות המשתמש והקבוצה בו זמנית.
איך לשנות בעלות ספריית התיקיות
chown -R admin /opt/script
ניתן לשנות בעלות באופן התפשט עבור תוכן בתיקייה. הדוגמה הבאה משנה את בעלות התיקייה /opt/script
כדי לאפשר למשתמש admin
.
איך לשנות בעלות הקבוצה
chown :admins /opt/script
במקרה שרק צריך לשנות את בעלות הקבוצה, ניתן להשתמש ב-chown
על ידי הצבת הקוד התחתון :
לפני שם הקבוצה
איך להחליף בין משת
[user01@host ~]$ su user02
Password:
[user02@host ~]$
ניתן להחליף בין משתמשים באמצעות פקודת su
.
כיצד לקבל גישה כמשתמש ראשי
המשתמש הראשי או משתמש השורש יש לו את הרמה הגבוהה ביותר של גישה במערכת Linux. משתמש השורש יכול לבצע כל פעולה במערכת. משתמש השורש יכול לגשת לכל הקבצים והתיקיות, להתקין ולהסיר תוכנה, ולשנות או לדרוס תצורות מערכת.
עם כוח גדול מגיעה אחריות גדולה. אם משתמש השורש נפגע, מישהו יכול לקבל שליטה מלאה על המערכת. מומלץ להשתמש בחשבון משתמש שורש רק כאשר נדרש.
[user01@host ~]$ su
Password:
[root@host ~]אם אתה משאיר את שם המשתמש בריק, פקודת su
מחליפה לחשבון משתמש שורש כברירת מחדל.
#
גרסה נוספת של פקודת su
היא su -
. פקודת su
מחליפה לחשבון משתמש שורש אך לא משנה את משתני הסביבה. פקודת su -
מחליפה לחשבון משתמש שורש ומשנה את משתני הסביבה לאלה של המשתמש המטרה.
הרצת פקודות עם sudo
כדי להריץ פקודות כמשתמש root
מבלי להחליף לחשבון משתמש root
, ניתן להשתמש בפקודת sudo
. פקודת sudo
מאפשרת לך להריץ פקודות עם הרשאות מוגברות.
הרצת פקודות עם sudo
היא אפשרות מוגן יותר מאשר להריץ את הפקודות כמשתמש root
. זה כי רק סט ספציפי של משתמשים יכולים לקבל הרשאה להריץ פקודות עם sudo
. זה מוגדר בקובץ /etc/sudoers
.
גם, sudo
מתעד את כל הפעלות המבצעות בעזרתו, מספק שרשרת בדיקה של מי שהבצע את הפעלות האלה ומתי.
cat /var/log/auth.log | grep sudo
ב Ubuntu, ניתן למצוא את המסמכים הבדיקה כאן:
user01 is not in the sudoers file. This incident will be reported.
עבור משתמש שאין לו גישה ל sudo
, זה מתויג במסמכים וגורם להציע מסר כמו זה:
ניהול חשבונות משתמשים מקומיים
יצירת משתמשים מן השורץ הצעדי
sudo useradd username
הפקת הפעלה הבאה עבור יצירת משתמש חדש היא:
הפקת הפעלה הזו מעצבת תיעוד אחד למשתמש ויוצרת קבוצה פרטית שמזוהה על פי שם המשתמש. כרגע, החשבון חסר סיסמא חוקית, שמונע את המשתמש מהתחברות עד שיוצר סיסמא.
שינוי משתמשים קיימים
הפקת usermod
משמשת לשינוי משתמשים קיימים. הנה כמה מהאפשרויות המקובלות שמשמשות בין הפקת usermod
:
- הנה כמה דוגמאות לפקת
usermod
בLinux: - שינוי שם הכניסה של משתמש:
- שינוי היוזר הבית של משתמש:
- הוספת משתמש לקבוצה מוסף:
- שינוי השל של משתמש:
- נעצרת חשבון משתמש:
- פתירת חשבון משתמש:
- הגדרת תאריך קיימות לחשבון משתמש:
- שינוי תעודת הזהות המרכזית של משתמש (UID):
- שינוי קבוצת המשתמש העיקרית:
הסרת משתמש מקבוצת מועדפת:
מחיקת משתמשים
- הפקט
userdel
משמש למחיקת חשבון משתמש וקבצים הקשורים לו מהמערכת. sudo userdel שם_משתמש
: מסיר את הפרטים של המשתמש מ/etc/passwd
אך שומר על המחשבה האישית שלו.
הפקט sudo userdel -r שם_משתמש
מסיר את הפרטים של המשתמש מ /etc/passwd
וגם מוצא את המחשבה האישית שלו.
שינוי סיסמאות משתמשים
- הפקט
passwd
משמש כדי לשנות סיסמאות משתמש.
sudo passwd שם_משתמש
: מעדיף את הסיסמא המקורית או משנה את הסיסמא הקיימת של שם_משתמש. הוא גם משמש כדי לשנות את הסיסמא של המשתמש שמחובר עכשיו.
8.2 התחברות לשרתים רחוקים דרך SSH
תקשורת עם שרתים מרוחקים היא אחד המשימות הבסיסיות עבור מנהלי מערכות. ניתן להתחבר לשרתים שונים או לגשת לבסיסי מידע דרך המכשיר המקומי שלך ולהריץ פקודות, כולם באמצעות SSH.
מהי פרוטוקול SSH?
SSH ניתן להפרש כ Secure Shell. זהו פרוטוקול רשת קריפטוגרפי שמאפשר תקשורת בטוחה בין שני מערכות.
הפורט ברירת המחדל ל-SH הוא 22
.
- שני המשתתפים בתקשורת דרך SSH הם:
- השרת: המכשיר שאליו אתה רוצה לגשת.
הלקוח: המערכת שאתה משתמש בה כדי לגשת לשרת.
- התחברות לשרת עוקבת אחרי השלבים הבאים:
- התחלת החיבור: הלקוח שולח בקשת חיבור לשרת.
- חלוקת מפתחות: השרת שולח את המפתח הציבורי שלו ללקוח. שניהם מסכימים על שיטות ההצפנה שימושיות.
- יצירת מפתח ישיבה: הלקוח
- אמת המשתמש: המשתמש מתחבר לשרת באמצעות סיסמה, מפתח פרטי, או שיטה אחרת.
תקשורת בטוחה: אחרי ההתחברות, המשתמש והשרת מתקשרים באמצעות הצפנה.
איך להתחבר לשרת רחוק בעזרת SSH?
הפקת הssh
היא כלי מובנה בלינוקס והמובנה הברירי בנוסף. הוא מאפשר לנו לגיש לשרתים בקלות ובבטיחות.
פה, אנחנו מדברים על איך המשתמש ייצר קישור אל השרת.
- לפני שיחבור לשרת, צריך לקבל את המידע הבא:
- הכתובת IP או שמו השרת.
- שם המשתמש וסיסמתו על השרת.
מספר הפורט שיש לך גישה אליו בשרת.
ssh username@server_ip
הסינTAX הבסיסי של הפקת הssh
הוא:
ssh [email protected]
לדוגמה, אם שם המשתמש שלך הוא john
וכתובת השרת היא 192.168.1.10
, הפקת המספר תהיה:
[email protected]'s password:
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-70-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Fri Jun 5 10:17:32 UTC 2024
System load: 0.08 Processes: 122
Usage of /: 12.3% of 19.56GB Users logged in: 1
Memory usage: 53% IP address for eth0: 192.168.1.10
Swap usage: 0%
Last login: Fri Jun 5 09:34:56 2024 from 192.168.1.2
john@hostname:~$ אחר כך, תיעד להזין את הסיסמה
# התחיל להזין פקודות
עכשיו אתה יכול להריץ את הפקודות הרלוונטיות על השרת 192.168.1.10
.
ssh -p port_number username@server_ip
⚠️ הפורט ברירת המחדל ל-ssh הוא 22
אבל הוא גם פגיע, כיוון שההאקרים ינסו כנראה קודם כאן. השרת שלך יכול לחשוף פורט אחר ולשתף את הגישה עםך. כדי להתחבר לפורט שונה, השתמש בסימן -p
.
8.3. ניתוח מתקדם של רישומים וניתוחם
קבצי רישום, כאשר הם מוגדרים, נוצרים על-ידי המערכת שלך למגוון סיבות שימושיות. הם יכולים לשמש לעקיבת אירועי מערכת, מעקב אחר ביצועי המערכת, ולפתרון בעיות. הם מועילים במיוחד למנהלי מערכות בהם הם יכולים לעקוב אחר שגיאות של אפליקציות, אירועי רשת, ופעילות משתמשים.
הנה דוגמה של קובץ רישום:
2024-04-25 09:00:00 INFO Startup: Application starting
2024-04-25 09:01:00 INFO Config: Configuration loaded successfully
2024-04-25 09:02:00 DEBUG Database: Database connection established
2024-04-25 09:03:00 INFO User: New user registered (UserID: 1001)
2024-04-25 09:04:00 WARN Security: Attempted login with incorrect credentials (UserID: 1001)
2024-04-25 09:05:00 ERROR Network: Network timeout on request (ReqID: 456)
2024-04-25 09:06:00 INFO Email: Notification email sent (UserID: 1001)
2024-04-25 09:07:00 DEBUG API: API call with response time over threshold (Duration: 350ms)
2024-04-25 09:08:00 INFO Session: User session ended (UserID: 1001)
2024-04-25 09:09:00 INFO Shutdown: Application shutdown initiated
# קובץ רישום מדוגמה
- קובץ רישום בדרך כלל מכיל את העמודות הבאים:
- תאריך ושעה: התאריך והשעה בה קרה האירוע.
- רמת הרישום: החומרה של האירוע (INFO, DEBUG, WARN, ERROR).
- מרכיב: המרכיב של המערכת שיצר את האירוע (Startup, Config, Database, User,
- מסר: תיאור של האירוע שהתרחש
מידע נוסף: מידע נוסף שקשור לאירוע.
במערכות הזמן-אמת, מאגרי הלוג נהיים בדרך כלל באלפי שורות ומועדים כל שנייה. הם יכולים להיות מאד מלאים תוך התאמה להגדרות. כל עמוד במאגר הלוג הוא חלק ממידע שיכול להיות מועיל לעיקבות אחר בעיות. זה גורם למאגרי הלוג להיות קשורים במאמץ רב במילים מאד.
זה המקום בו מגיע עיבוד הלוג. עיבוד הלוג הוא תהליך של הוצאת מידע שימושי ממאגרי הלוג. הוא מעצב את המאגרים לחלקים קטנים יותר וקלים לניהול, ומוציא את המידע הרלוונטי.
המידע המסווה יכול גם להיות שימושי ליצירת התרעות, דוחות ולוגים במדף.
בחלק זה, תחקור טכניקות ספציפיות לפרשת מאגרי הלוג בלינUX.
פרשת טקסט באמצעות grep
גrep הוא יישום באשר של באש. הוא אומר "גלובלי תווית רגולרית לחדש". גrep משמש למציאת משתנים בקבצים.
- פה כמה שימושים רגילים של
grep
: - פקודה זו מחפשת את "search_string" בקובץ המקורי
שם_הקובץ
. - פקודה זו מחפשת את "
search_string"
בכל הקבצים בתיקייה המצויה ובתתי התיקיות שלה. - פקודה זו מבצעת חיפוש לא רגיש לאותיות גדולות/קטנות למחרוזת "search_string" בקובץ המקורי
שם_הקובץ
. - הפקטיבי הזה מראה את מספרי השורות בצעד עם השורות המתאמים בקובץ הנקרא
filename
. - הפקטיבי הזה מספר את מספר השורות שיש בהם "search_string" בקובץ הנקרא
filename
. - הפקודה הזו מציגה את כל השורות שאינן מכילות "search_string" בקובץ בשם
filename
. - הפקודה הזו מחפשת את המילה השלמה "word" בקובץ בשם
filename
.
הפקודה הזו מאפשרת שימוש בביטויים רגולריים מורחבים עבור התאמה מפורטת יותר של דפוסים בקובץ בשם filename
.
💡 טיפ: אם ישנם מספר קבצים בתיקייה, תוכל להשתמש בפקודה הבאה כדי למצוא את רשימת הקבצים המכילים את המחרוזות המבוקשות.
grep -l "String to Match" /path/to/directory
# מצא את רשימת הקבצים המכילים את המחרוזות המבוקשות
טקסט המיצוא בשימוש sed
sed
מסמל "עורך זרם". הוא מעבד נתונים באופן זרימי, כלומר הוא קורא נתונים שורה אחר שורה. sed
מאפשר לחפש תבניות ולבצע פעולות על שורות המתאימות לתבניות הללו.
סימנטיקה בסיסית שלsed
:
sed [options] 'command' file_name
הסימנטיקה הבסיסית של sed
היא כך:
כאן, command
משמש לביצוע פעולות כמו החלפה, מחיקה, הכנסה ועוד על טקסט נתונים. השם-קובץ הוא שם הקובץ שברצונך לעבד.
sed
שימוש:
1. החלפה:
sed 's/old-text/new-text/' filename
הסימן s
משמש להחלפת טקסט. הטקסט הישן old-text
מוחלף ב- new-text
:
sed 's/error/warning/' system.log
לדוגמה, כדי לשנות את כל המופעים של "error" ל- "warning" בקובץ היומן system.log
:
2. הדפסת שורות המכילות תבנית ספציפית:
sed -n '/pattern/p' filename
שימוש ב- sed
כדי לסנן ולהציג שורות שמתאימות לתבנית ספציפית:
sed -n '/ERROR/p' system.log
לדוגמה, כדי למצוא כל השורות המכילות "ERROR":
3. מחיקת שורות המכילות תבנית ספציפית:
sed '/pattern/d' filename
ניתן למחוק שורות מהפלט שמתאימות לתבנית ספציפית:
sed '/DEBUG/d' system.log
לדוגמה, כדי להסיר את כל השורות המכילות "DEBUG":
4. היציאת שדות ספציפיים משורת היומן:
sed -n 's/^\([0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}\).*/\1/p' system.log
ניתן להשתמש בבירורי רגולריים כדי לחלץ חלקים משורות. נניח שכל שורת היומן מתחילה עם תאריך בפורמט "שנה-חודש-יום". ניתן לחלץ רק את התאריך מכל שורה:
עיבוד טקסט עם awk
awk
יש לו את היכולת לחלק בקלות כל שורה לשדות. הוא מתאים במיוחד לעיבוד טקסט מסודר כמו קובצי לוגים.
תחביר בסיסי שלawk
awk 'pattern { action }' file_name
התחביר הבסיסי של awk
הוא:
כאן, תבנית
היא תנאי שצריך להימצא כדי שתבוצע פעולה
. אם התבנית נמצאת בחוסר, הפעולה תבוצע על כל שורה.
2024-04-25 09:00:00 INFO Startup: Application starting
2024-04-25 09:01:00 INFO Config: Configuration loaded successfully
2024-04-25 09:02:00 INFO Database: Database connection established
2024-04-25 09:03:00 INFO User: New user registered (UserID: 1001)
2024-04-25 09:04:00 INFO Security: Attempted login with incorrect credentials (UserID: 1001)
2024-04-25 09:05:00 INFO Network: Network timeout on request (ReqID: 456)
2024-04-25 09:06:00 INFO Email: Notification email sent (UserID: 1001)
2024-04-25 09:07:00 INFO API: API call with response time over threshold (Duration: 350ms)
2024-04-25 09:08:00 INFO Session: User session ended (UserID: 1001)
2024-04-25 09:09:00 INFO Shutdown: Application shutdown initiated
INFO
- בדוגמאות הקרובות, תשתמש בקובץ הלוג הזה כדוגמה:
גישה לעמודות באמצעותawk
zaira@zaira-ThinkPad:~$ awk '{ print $1 }' sample.log
השדות ב- awk
(מופרדים ברווחים באופן משתנה) ניתן לגשת אליהם באמצעות $1
, $2
, $3
, וכן הלאה.
2024-04-25
2024-04-25
2024-04-25
2024-04-25
2024-04-25
2024-04-25
2024-04-25
2024-04-25
2024-04-25
2024-04-25
zaira@zaira-ThinkPad:~$ awk '{ print $2 }' sample.log
# פלט
09:00:00
09:01:00
09:02:00
09:03:00
09:04:00
09:05:00
09:06:00
09:07:00
09:08:00
09:09:00
- # פלט
awk '/ERROR/ { print $0 }' logfile.log
הדפסת שורות הכוללות תבנית ספציפית (לדוגמה, ERROR)
2024-04-25 09:05:00 ERROR Network: Network timeout on request (ReqID: 456)
# פלט
- זה מדפיס את כל השורות שכוללות "ERROR".
awk '{ print $1, $2 }' logfile.log
חלץ את השדה הראשון (תאריך ושעה)
2024-04-25 09:00:00
2024-04-25 09:01:00
2024-04-25 09:02:00
2024-04-25 09:03:00
2024-04-25 09:04:00
2024-04-25 09:05:00
2024-04-25 09:06:00
2024-04-25 09:07:00
2024-04-25 09:08:007
2024-04-25 09:09:00
# פלט
- זה יחליץ את שתי השדות הראשונות מכל שורה, שבמקרה הזה יהיו התאריך והשעה.
awk '{ count[$3]++ } END { for (level in count) print level, count[level] }' logfile.log
סיכום הופעות של כל רמת הלוג
1
WARN 1
ERROR 1
DEBUG 2
INFO 6
# פלט
- הפלט יהיה סיכום של מספר הופעות של כל רמת יומן.
awk '{ $3="INFO"; print }' sample.log
סינון שדות מסוימים (לדוגמה, שבהם השדה השלישי הוא INFO)
2024-04-25 09:00:00 INFO Startup: Application starting
2024-04-25 09:01:00 INFO Config: Configuration loaded successfully
2024-04-25 09:02:00 INFO Database: Database connection established
2024-04-25 09:03:00 INFO User: New user registered (UserID: 1001)
2024-04-25 09:04:00 INFO Security: Attempted login with incorrect credentials (UserID: 1001)
2024-04-25 09:05:00 INFO Network: Network timeout on request (ReqID: 456)
2024-04-25 09:06:00 INFO Email: Notification email sent (UserID: 1001)
2024-04-25 09:07:00 INFO API: API call with response time over threshold (Duration: 350ms)
2024-04-25 09:08:00 INFO Session: User session ended (UserID: 1001)
2024-04-25 09:09:00 INFO Shutdown: Application shutdown initiated
INFO
# פלט
פקודה זו תחליף את כל השורות בהן השדה השלישי הוא "INFO".
💡 עצה: המפריד המוגדר כברירת מחדל ב־awk
הוא רווח. אם קובץ היומן שלך משתמש במפריד אחר, אתה יכול לציין אותו באמצעות האפשרות -F
. לדוגמה, אם קובץ היומן שלך משתמש בנקודתיים כמפריד, תוכל להשתמש ב־awk -F: '{ print $1 }' logfile.log
כדי לחלץ את השדה הראשון.
פירוש קבצי יומן עם cut
פקודת cut
היא פקודה פשוטה וכוחות מאוד המשמשת לחילוץ סעיפים של טקסט מכל שורת קלט. מכיוון שקבצי היומן מבניים וכל שדה מופרד בתו מסוים, כמו רווח, טאב או מפריד מותאם אישית, cut
מבצעת עבודה טובה בחילוץ של השדות המסוימים האלה.
cut [options] [file]
התחביר הבסיסי של פקודת cut הוא:
- כמה אפשרויות נפוצות לפקודת cut:
-d
: מציין מפריד שימש כמפריד שדות.-f
: בוחר את השדות שיצוגם נבחר.
זהו התרגום העברי:
-c
: מציין עמדות תווים.
cut -d ' ' -f 1 logfile.log
למשל, הפקודה שלהלן תחלק את השדה הראשון (מופרד ברווח) מכל שורה בקובץ היומן:
דוגמאות שימוש בcut
לניתוח יומנים
2024-04-25 08:23:01 INFO 192.168.1.10 User logged in successfully.
2024-04-25 08:24:15 WARNING 192.168.1.10 Disk usage exceeds 90%.
2024-04-25 08:25:02 ERROR 10.0.0.5 Connection timed out.
...
נניח שיש לך קובץ יומן שנבנה כך, שהשדות מופרדים ברווח:
cut
יכול להשתמש בדרך הבאה:
cut -d ' ' -f 2 system.log
לחלץ את הזמן מכל רשומת היומן:
08:23:01
08:24:15
08:25:02
...
# פלט
- פקודה זו משתמשת ברווח כמחרוזת ובוחרת בשדה השני, שהוא הרכיב הזמן של כל רשומת היומן.
cut -d ' ' -f 4 system.log
לחלץ את כתובות ה-IP מהיומנים:
192.168.1.10
192.168.1.10
10.0.0.5
# פלט
- פקודה זו מחלקת את השדה הרביעי, שהוא כתובת ה-IP מכל רשומת היומן.
cut -d ' ' -f 3 system.log
לחלץ רמות יומן (INFO, WARNING, ERROR):
INFO
WARNING
ERROR
# פלט
- זה מחלק את השדה השלישי שכולל את רמת היומן.
שילובcut
עם פקודות אחרות:
grep "ERROR" system.log | cut -d ' ' -f 1,2
הפלט של פקודות אחרות יכול להשתמש בפייפליין לפקודת cut
. נניח שאתה רוצה לסנן יומנים לפני חיתוך. ניתן להשתמש ב-grep
כדי לחלץ שורות המכילות "ERROR" ולאחר מכן להשתמש ב-cut
כדי לקבל מידע ספציפי מאותן שורות:
2024-04-25 08:25:02
# פלט
- הפקודה הזו תסנן תוכן שמכיל "ERROR", ואז תחלץ את התאריך והשעה מהשורות הללו.
חילוץ שדות מרובים:
cut -d ' ' -f 1,2,3 system.log`
אפשר לחלץ שדות מרובים כאשר מציין טווח או רשימה מופרדת בפסיקים של שדות:
2024-04-25 08:23:01 INFO
2024-04-25 08:24:15 WARNING
2024-04-25 08:25:02 ERROR
...
# פלט
הפקודה לעיל תחלץ את שלושת השדות הראשונים מכל רשומת יומן שהם תאריך, שעה ורמת יומן.
פענוח קבצי לוג עם sort
ו־uniq
מיון והסרת רשומות כפולות הן פעולות נפוצות כאשר עובדים עם קבצי לוג. הפקודות sort
ו־uniq
הן פקודות עזר חזקות המשמשות למיון והסרת רשומות כפולות מהקלט, בהתאמה.
התחביר הבסיסי של sort
sort [options] [file]
הפקודה sort
מארגנת שורות של טקסט לפי סדר אלפביתי או מספרי.
- כמה אפשרויות מרכזיות לפקודת sort:
-n
: ממיין את הקובץ בהנחה שהתוכן הוא מספרי.-r
: מהפוך את סדר המיון.-k
: מציין מפתח או מספר עמודה למיון על פיו.
-u
: ממיין ומסיר שורות כפולות.
הפקט uniq
משמש לסנן או לספור ולדווח על שורות מוחזרות בקבצים.
uniq [options] [input_file] [output_file]
הסינTAX של uniq
הוא:
- כמה אפשרויות מפתח עבור הפקט
uniq
הן: -c
: מקדם כל שורה במספר ההופעות שלה.-d
: מפרסם רק שורות הגיוניות.
-u
: מפרסם רק שורות ייחודיות.
דוגמאות לשימוש ב sort
ו uniq
ביחד עבור פירוש דיוקים
2024-04-25 INFO User logged in successfully.
2024-04-25 WARNING Disk usage exceeds 90%.
2024-04-26 ERROR Connection timed out.
2024-04-25 INFO User logged in successfully.
2024-04-26 INFO Scheduled maintenance.
2024-04-26 ERROR Connection timed out.
- נניח שאלה הבאה בדיוקים לדוגמאות האלה:
sort system.log
סידור של דיוקים על פי תאריך:
2024-04-25 INFO User logged in successfully.
2024-04-25 INFO User logged in successfully.
2024-04-25 WARNING Disk usage exceeds 90%.
2024-04-26 ERROR Connection timed out.
2024-04-26 ERROR Connection timed out.
2024-04-26 INFO Scheduled maintenance.
# יוצא
- זה מסorts את הדיוקים אלפביתית, שבעיקרון מסorts אותם על פי תאריך אם התאריך הוא השדה הראשון.
sort system.log | uniq
סידור והסרה של השורות המוחזרות:
2024-04-25 INFO User logged in successfully.
2024-04-25 WARNING Disk usage exceeds 90%.
2024-04-26 ERROR Connection timed out.
2024-04-26 INFO Scheduled maintenance.
# יוצא
- הפקט זה מסorts את הקבצים הדיוקים ושולח אותם ל
uniq
, מסרב להציג שורות מוחזרות.
sort system.log | uniq -c
ספירת ההופעות של כל שורה:
2 2024-04-25 INFO User logged in successfully.
1 2024-04-25 WARNING Disk usage exceeds 90%.
2 2024-04-26 ERROR Connection timed out.
1 2024-04-26 INFO Scheduled maintenance.
# יוצא
- סורס את הדיוקים הדיוקים ואחראי אליו הופך או
sort system.log | uniq -u
זיהוי רשומות לוג ייחודיות:
2024-04-25 WARNING Disk usage exceeds 90%.
2024-04-26 INFO Scheduled maintenance.
# פלט
- פקודה זו מציגה שורות שהן ייחודיות.
sort -k2 system.log
מיון לפי רמת הלוג:
2024-04-26 ERROR Connection timed out.
2024-04-26 ERROR Connection timed out.
2024-04-25 INFO User logged in successfully.
2024-04-25 INFO User logged in successfully.
2024-04-26 INFO Scheduled maintenance.
2024-04-25 WARNING Disk usage exceeds 90%.
# פלט
ממיין את הרשומות בהתבסס על השדה השני, שהוא רמת הלוג.
8.4. ניהול תהליכים בלינוקס באמצעות שורת פקודה
- תהליך הוא מופע רץ של תוכנית. תהליך מורכב מ:
- מרחב כתובת של הזיכרון שהוקצה.
- מצבי התהליך.
תכונות כגון בעלות, מאפייני אבטחה ושימוש במשאבים.
- לתהליך יש גם סביבה שמורכבת מ:
- משתנים מקומיים וגלובליים
- ההקשר לתזמון הנוכחי
משאבי מערכת שהוקצו, כמו יציאות רשת או מזהי קבצים.
כשאתה מפעיל את הפקודה ls -l
, המערכת הפעלה יוצרת תהליך חדש כדי לבצע את הפקודה. התהליך כולל מזהה, מצב ורץ עד שהפקודה מושלמת.
הבנת יצירת תהליכים ומחזור חי שלהם
באובונטו, כל התהליכים מקורם מתהליך המערכת ההתחלתי הנקרא systemd
, שהוא התהליך הראשון שהתחיל היבולדר במהלך ההפעלה.
לתהליך systemd
יש מספר תהליך (PID) של 1
והוא אחראי להתחלת המערכת, התחלת וניהול של תהליכים אחרים וניהול שרותי המערכת. כל התהליכים האחרים במערכת הם צאצאים של systemd
.
תהליך הורה משכפל את מרחב הכתובת שלו (fork) כדי ליצור מבנה תהליך חדש (ילד). לכל תהליך חדש מוקצה מספר תהליך ייחודי (PID) למטרות עיקבה ובטיחות. ה-PID ומספר התהליך של הורה (PPID) הם חלק מהסביבה של התהליך החדש. כל תהליך יכול ליצור תהליך ילד.
דרך רוטינה הפורק, תהליך ילד מרשים אבני זהות בטיחות, תפיסות קודמות ונוכחיות, הרשאות פורטים ומשאבים, משתני סביבה וקוד תוכנה. תהליך ילד יכול אז להריץ את קוד התוכנה שלו.
בדרך כלל, תהליך הורה ישן בעוד תהליך הילד פועל, ומכין בקשה (wait) להיות מודע כאשר הילד מסיים.
לאחר סיומו, תהליך הילד כבר סגר או זרק את משאביו וסביבתו. המשאב היחיד שנשאר, הנקרא זומבי, הוא רשומה בטבלת התהליכים. הורה, שהתעורר כאשר הילד סיים, מנקה את רשומת הילד בטבלת התהליכים, כך שמשחרר את המשאב האחרון של תהליך הילד. תהליך הורה חוזר אז לביצוע קוד התוכנה שלו.
הבנת מצב
plaintext
תהליכים בלינוקס נעותים בין מצבים שונים במהלך חייהם. המצב של תהליך מראה מה התהליך עושה כרגע וכיצד הוא מתקשר עם המערכת. התהליכים מעברים בין המצבים בהתבסס על מצב הביצוע שלהם ועל אלגוריתם התזמון של המערכת.
התהליכים במערכת לינוקס יכולים להיות באחד מהמצבים הבאים: | מצב |
תיאור | (חדש) |
מצב ההתחלה כאשר תהליך נוצר באמצעות שיגור קריאה מערכתי של fork. | (מוכן לריצה) (R) |
התהליך מוכן לריצה ומחכה לתזמון על מעבדת CPU. | (בריצה) (משתמש) (R) |
התהליך מבצע במצב משתמש, רצה יישומי משתמשים. | (בריצה) (ליבה) (R) |
התהליך מבצע במצב ליבה, מתמודד עם שיגורי מערכת והפרעות חומרה. | (ישן) (S) |
התהליך מחכה לאירוע (לדוגמה, פעולת I/O) להשלים וניתן להעירו בקלות. | (ישן) (לא ניתן להפריע) (D) |
התהליך במצב ישון לא ניתן להפריע, מחכה לתנאי מסויים (בדרך כלל I/O) להשלים ולא ניתן להפריע על ידי אותות. | (ישן) (ישן דיסק) (K) |
התהליך מחכה לפעולות I/O של דיסק להשלים. | (ישן) (לא עוסק) (I) |
התהליך לא עוסק, לא | עצר (T) |
ההרצה של התהליך הופסקה, בדרך כלל באמצעות אות, וניתן להמשיך אותה מאוחר יותר. | זומבי (Z) |
התהליך הסתיים את ההרצה אך עדיין יש לו רשומה בטבלת התהליכים, מחכה להורה שלו לקרוא את מצב הסיום שלו.
התהליכים מעברים בין המצבים הללו בדרכים הבאות: | מעבר |
תיאור | Fork |
יוצר תהליך חדש מתהליך הורה, עובר מהמצב (חדש) למצב פועל (מוכן) (R). | תזמון |
מתזמן מבחר תהליך פועל, מעביר אותו למצב פועל (משתמש) או פועל (מערכת). | הרצה |
התהליך עובר ממצב פועל (מוכן) (R) למצב פועל (מערכת) (R) כאשר מתוזמן להרצה. | ניכוס או תזמון מחדש |
ניתן לנכוס או לתזמן מחדש את התהליך, מחזיר אותו למצב פועל (מוכן) (R). | קריאת מערכת |
התהליך עושה קריאת מערכת, עובר ממצב פועל (משתמש) (R) למצב פועל (מערכת) (R). | חזרה |
התהליך משלים קריאת מערכת וחוזר למצב פועל (משתמש) (R). | חיכה |
התהליך מחכה לאירוע, עובר ממצב פועל (מערכת) (R) לאחד ממצבי השינה (S, D, K או I). | אירוע או אות |
התהליך מתעורר על ידי אירוע או אות, מעביר אותו ממצב ״שינה״ חזרה למצב Runnable (מוכן) (R). | השהייה |
התהליך מושהה, במעבר ממצב Running (kernel) או Runnable (מוכן) למצב Stopped (T). | המשך |
התהליך מומשך, במעבר ממצב Stopped (T) חזרה למצב Runnable (מוכן) (R). | יציאה |
התהליך מסיים, במעבר ממצב Running (user) או Running (kernel) למצב Zombie (Z). | לקצוץ |
התהליך הורץ קורא את מצב היציאה של התהליך הזומבי, מסיר אותו מטבלת התהליכים.
כיצד להציג תהליכים
zaira@zaira:~$ ps aux
ניתן להשתמש בפקודת ps
יחד עם שילוב של אפשרויות כדי להציג תהליכים במערכת Linux. הפקודה ps
משמשת להצגת מידע על מבחר של תהליכים פעילים. לדוגמה, ps aux
מציג את כל התהליכים שרצים במערכת.
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 168140 11352 ? Ss May21 0:18 /sbin/init splash
root 2 0.0 0.0 0 0 ? S May21 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< May21 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< May21 0:00 [rcu_par_gp]
root 5 0.0 0.0 0 0 ? I< May21 0:00 [slub_flushwq]
root 6 0.0 0.0 0 0 ? I< May21 0:00 [netns]
root 11 0.0 0.0 0 0 ? I< May21 0:00 [mm_percpu_wq]
root 12 0.0 0.0 0 0 ? I May21 0:00 [rcu_tasks_kthread]
root 13 0.0 0.0 0 0 ? I May21 0:00 [rcu_tasks_rude_kthread]
*... output truncated ....*
# פלט
- הפלט לעיל מציג תמונת שלב של התהליכים שרצים כעת במערכת. כל שורה מייצגת תהליך עם העמודות הבאות:
משתמש
: המשתמש שבבעלות התהליך.PID
: מזהה התהליך.%CPU
: שימוש במעבד של התהליך.%MEM
: שימוש הזיכרון של התהליך.VSZ
: גודל הזיכרון הווירטואלי של התהליך.RSS
: גודל המערכת המקובעת, כלומר הזיכרון הפיזי שלא נמרץ שימוש ממשיך על ידי המשימה.TTY
: מסוף השליטה של התהליך. סימן?
מציין שאין מסוף שליטה.Ss
: מוביל סשן. זוהי תהליך שהתחיל סשן, והוא מוביל של קבוצת תהליכים ויכול לשלוט בסיגנלים טרמינל. הS
הראשון מציין את מצב השינה והs
השני מציין שהוא מוביל סשן.START
: הזמן או התאריך של התהליך.TIME
: זמן המעבד הכולל.
COMMAND
: הפקודה שהתחילה את התהליך.
תהליכים חזיתיים וברקע
בחלק זה, תלמדו איך תוכלו לשלוט בעבודות על ידי הרצתן ברקע או בחזית.
עבודה היא תהליך שמתחיל על ידי מעטפת. כשאתם מריצים פקודה במסוף, היא נחשבת כעבודה. עבודה יכולה לרוץ בחזית או ברקע.
- כדי להדגים שליטה, תיצורו קודם תהליכים שלושה ותריצו אותם ברקע. לאחר מכן, תרשים את התהליכים ותחליפו בינם החזיתיים והרקעיים. תראו איך לשכן אותם או לסיים אתם לחלוטין.
יצירת שלושה תהליכים
פתחו מסוף והתחילו שלושה תהליכים רצופים. השתמשו בפקודה sleep
, שמשאירה את התהליך רצה למשך מספר שניות מסויים.
sleep 300 &
sleep 400 &
sleep 500 &
# ריצה של פקודת sleep ל 300, 400, ו 500 שניות
- ה
&
בסוף כל פקודה מעביר את התהליך לרקע.
תצוגת עבודות ברקע
jobs
השתמשו בפקודה jobs
כדי להציג את רשימת העבודות ברקע.
jobs
[1] Running sleep 300 &
[2]- Running sleep 400 &
[3]+ Running sleep 500 &
- פלט הוא אמור להיראות כמו זה:
הבאת עבודה ברקע לחזית
fg %1
כדי להביא עבודה ברקע לחזית, השתמשו בפקודה fg
בעקבות מספר העבודה. לדוגמה, כדי להביא את העבודה הראשונה (sleep 300
) לחזית:
- זה יביא את העבודה
1
לחזית.
החזרת עבודה בחזית לרקע
בזמן שהמשימה רצה ברקע, ניתן להשעות אותה ולהעבירה חזרה לרקע על ידי לחיצה על Ctrl+Z
כדי להשעות את המשימה.
zaira@zaira:~$ fg %1
sleep 300
^Z
[1]+ Stopped sleep 300
zaira@zaira:~$ jobs
משימה שהושעתה תראה כך:
[1]+ Stopped sleep 300
[2] Running sleep 400 &
[3]- Running sleep 500 &
# משימה שהושעתה
כעת השתמש בפקודה bg
כדי להמשיך בביצוע המשימה עם מספר הזיהוי 1 ברקע.
# ללחוץ על Ctrl+Z כדי להשעות את המשימה ברקע
bg %1
- # לאחר מכן, להמשיך בביצועה ברקע
jobs
[1] Running sleep 300 &
[2]- Running sleep 400 &
[3]+ Running sleep 500 &
הצג שוב את המשימות
- בתרגול זה, אתה:
- התחלת שלושה תהליכים ברקע באמצעות פקודות sleep.
- השתמשת בפקודה jobs כדי להציג את רשימת התהליכים ברקע.
- הבאת משימה לרקע עם
fg %מספר_משימה
. - השעית את המשימה עם
Ctrl+Z
והעברתה חזרה לרקע עםbg %מספר_משימה
.
השתמשת שוב בפקודה jobs כדי לוודא את מצב המשימות ברקע.
עכשיו אתה יודע כיצד לשלוט במשימות.
הוצאת תהליכים להורג
ניתן להפסיק תהליך שאינו מגיב או שאינו רצוי באמצעות הפקט הkill
. הפקט הkill
שולח הודעה למזהה התהליך, בתור בקשה להפסיק.
יש מספר אפשרויות נוספות בין לשימוש בפקט הkill
.
kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24)
...terminated
# אפשרויות נוספות בשימוש בkill
- הנה כמה דוגמאות של הפקט ה
kill
בלינוקס: - הפקט הזה שולח את ההודעה הברירית
SIGTERM
אל תהליך עם מזהה 1234, בבקשה להפסיק. - הפקט הזה שולח את ההודעה הברירית
SIGTERM
לכל התהליכים עם שם מסויים. - הפקט הזה שולח את האותות
SIGKILL
אל תהליך עם PID 1234, ומסיר אותו באופן הכרחי. - הפקט הזה שולח את האותות
SIGSTOP
אל תהליך עם PID 1234, ועוצר אותו.
הפקט הזה שולח את האותות הברירי SIGTERM
אל כל התהליכים שמשלימים משתמש ספציפי.
אלה דוגמאות שמראות דרכים שונות לשימוש בפקודה kill
במסגרת סביבת לינוקס.
הנה המידע על האפשרויות והאותות של הפקודה kill בצורה טבלאית: הטבלה הזו סיכמה את האפשרויות הכי נפוצות של הפקודה kill והאותות שבהם הם משמשים בלינוקס לניהול תהליכים. |
פקודה / אפשרות | אותות |
תיאור | kill |
SIGTERM |
בקשה לתהליך להסתיים בעדינות (האותות הברת הסטנדרט). | kill -9 |
SIGKILL |
מכריע לתהליך להסתיים מיד בלי ניקוי. | kill -SIGKILL |
SIGKILL |
מכריע לתהליך להסתיים מיד בלי ניקוי. | kill -15 |
SIGTERM |
שולח באופן ברור את אותות SIGTERM כדי לבקש הסתיים בעדינות. |
kill -SIGTERM |
SIGTERM |
שולח באופן ברור את אותות SIGTERM כדי לבקש הסתיים בעדינות. |
kill -1 |
SIGHUP |
בעיקרון אומר "התנתקות"; יכול להיות משמש כדי לרענן קבצי ההגדרות. | kill -SIGHUP |
SIGHUP |
מסורתית משמע "הירחף"; ניתן להשתמש בו כדי לרענן קבצי ההגדרות. | kill -2 <pid> |
SIGINT |
מבקש מהתהליך להפסיק (אותה פעולה כמו ללחוץ Ctrl+C בטרמינל). |
kill -SIGINT <pid> |
SIGINT |
מבקש מהתהליך להפסיק (אותה פעולה כמו ללחוץ Ctrl+C בטרמינל). |
kill -3 <pid> |
SIGQUIT |
גורם לתהליך להפסיק ולייצר הפלט של הלבן עבור בדיקה. | kill -SIGQUIT <pid> |
SIGQUIT |
גורם לתהליך להפסיק ולייצר הפלט של הלבן עבור בדיקה. | kill -19 <pid> |
SIGSTOP |
עוצר את התהליך. | kill -SIGSTOP <pid> |
SIGSTOP |
עוצר את התהליך. | kill -18 <pid> |
SIGCONT |
ממשיך את התהליך הפסק. | kill -SIGCONT <pid> |
SIGCONT |
ממשיך את התהליך הפסק. | killall <name> |
שונה |
שולח אותו ההתעקשות לכל התהליכים הקיימים עם שם נתנה. | killall -9 <name> |
SIGKILL |
מעברת התמונה לתוך התוכן המקורי של הערימה. | pkill <תבנית> |
שונה |
שולחת סיגנל לתהליכים בהתאמה לתבנית. | pkill -9 <תבנית> |
SIGKILL |
הכרזת התמונה לתוך התוכן המקורי של הערימה. | xkill |
SIGKILL |
שירות גרפי שמאפשר לחתוך על חלון ולהרוג את התהליך הנדרש.
8.5. הזרמים הסטנדרטיים לקלט ויוצאה בלינUX
- קריאה בקלט וכתיבה ביוצאה היא חלק עיקרי בהבנה של השולחן הציוני וסיסמה. בלינUX, לכל תהליך יש שלושה זרמים רגילים:
- המתקן הק
- פלט סטנדרטי (
stdout
): זהו הזרם המוצאי המוגדר כברירת מחדל שבו תהליך כתב את הפלט שלו. לפי ברירת מחדל, הפלט הסטנדרטי הוא הטרמינל. הפלט יכול גם להיות מופנה לקובץ או לתוכנית אחרת. מזהה הקובץ שלstdout
הוא1
.
שגיאת סטנדרט (stderr
): זהו הזרם השגיאות המוגדר כברירת מחדל שבו תהליך כותב את הודעות השגיאה שלו. לפי ברירת מחדל, השגיאה הסטנדרטית היא הטרמינל, מאפשרת לראות את הודעות השגיאה גם אם stdout
מופנה. מזהה הקובץ של stderr
הוא 2
.
הפנייה וצינורות
פנייה: ניתן להפנות את זרמי השגיאה והפלט אל קבצים או לפקודות אחרות. לדוגמה:
ls > output.txt
# מפנה את stdout לקובץ
ls non_existent_directory 2> error.txt
# מפנה את stderr לקובץ
ls non_existent_directory > all_output.txt 2>&1
# מפנה את stdout ואת stderr לקובץ
- בפקודה האחרונה,
ls non_existent_directory
: מרשם את התוכן של הארכיון non_existent_directory. מפני שאין ארכיון זה, הפעם של ls ייצר מסר שגיאה.> all_output.txt
: האקסקל הזה מעביר את היוצא הרגיל (stdout) של הפקודה ls אל הקובץ all_output.txt. אם הקובץ לא קיים, ייצר אותו. אם קיים, תוכניות יישמרו על הקובץ הקיים.
2>&1:
: כאן, המספר 2 מייצג את הנתיב הקוד לשגיאה (stderr). המספר 1 מייצג את הנתיב הקוד ליוצא רגיל (stdout). האות המספר והאות ה& משמשים כדי לסמן שהמספר 1 אינו השם של הקובץ אלא נתיב הקוד.
כך, 2>&1
משמע "הפניית stderr (2) למקום בו stdout (1) נועד להגיע," שבמקרה זה הוא הקובץ all_output.txt
. לכן, גם הפלט (אם היה כן) וההודעה של השגיאה מ-ls
יתפרסמו ב-all_output.txt
.
צינורות:
ls | grep image
ניתן להשתמש בצינורות (|
) כדי להעביר את הפלט של פקודה אחת כקלט לאחרת:
image-10.png
image-11.png
image-12.png
image-13.png
... Output truncated ...
# פלט
8.6 אוטומציה בלינוקס – תזמונת משימות בעזרת עבודות Cron
Cron הינה תכנית עוצמתית לתזמון משימות שנמצאת במערכות הפעלה דמויות אוניקס. על ידי הגדרת cron, ניתן לקבוע משימות אוטומטיות לרצות יומית, שבועית, חודשית, או לפי זמן כלשהו ספציפי. היכולות לאוטומציה שנותנות על ידי cron משמשות תפקיד מרכזי בניהול מערכות לינוקס.
דמון ה- crond
(סוג של תוכנה שרצה ברקע) מאפשר את תכונות cron. ה-cron קורא את crontab (טבלאות cron) על מנת לרצות סקריפטים מוגדרים מראש.
על ידי שימוש בתחביר ספציפי, ניתן להגדיר עבודת cron כדי לתזמן סקריפטים או פקודות אחרות לרצות אוטומטית.
<diy13מהן עבודות cron בלינוקס?
כל משימה שתוכננת דרך crons נקראת עבודת cron.
עכשיו, בואו נראה איך עבודות cron עובדות.
איך לשלוט בגישה לcrons
כדי להשתמש בעבודות cron, דמין צריך לא
אם תקבל הודעה כזו, זה אומר שאין לך הרשאה להשתמש ב-cron.
כדי לאפשר ל-John להשתמש ב-crons, כלול את שמו בקובץ /etc/cron.allow
. צור את הקובץ אם הוא אינו קיים. זה יאפשר ל-John ליצור ולערוך משרות של cron.
משתמשים יכולים גם להימנע מגישה למשרות של cron על ידי הזנת שמות משתמשיהם בקובץ /etc/cron.d/cron.deny
.
איך להוסיף משרות cron ב-Linux
לפני הכל, כדי להשתמש במשרות cron, עליך לבדוק את מצב שירות ה-cron. אם ה-cron אינו מותקן, תוכל להוריד אותו בקלות דרך מנהל החבילות. פשוט השתמש בזה כדי לבדוק:
sudo systemctl status cron.service
# בדוק שירות cron במערכת Linux
תחביר משרות cron
- קרונטאבים משתמשים בדגלים הבאים להוספת ורישום משרות cron:
crontab -e
: עורך רשומות crontab להוספה, מחיקה או עריכת משרות cron.crontab -l
: מפרט את כל משרות ה-cron של המשתמש הנוכחי.crontab -u שם_משתמש -l
: מפרט את משרותי ה-cron של משתמש אחר.
crontab -u שם_משתמש -e
: עורך את משרותי ה-cron של משתמש אחר.
כאשר אתה מפרט משרות cron והן קיימות, תראה משהו דומה לזה:
* * * * * sh /path/to/script.sh
# דוגמה לקרון ג'וב
- בדוגמה לעיל,
* מייצג דקה(ות) שעה(ות) יום(ים) חודש(ים) ימי שבוע(ות), בהתאמה. ראה פרטים על הערכים הללו למטה: |
ערך | |
תיאור | דקות | 0-59 |
הפקות פקודה בדקה הספציפית. | שעות | 0-23 |
הפקות פקודה בשעה הספציפית. | ימים | 1-31 |
פקודות תופסות בימים אלו של החודשים. | חודשים | 1-12 |
החודש בו יש להפעיל משימות. | ימי שבוע | 0-6 |
- ימי השבוע שבהם תרוץ פקודות. כאן, 0 היא יום ראשון.
sh
מייצג שהסקריפט הוא סקריפט bash וצריך להיות מופעל מתוך/bin/bash
.
/path/to/script.sh
מציין את הנתיב לסקריפט.
* * * * * sh /path/to/script/script.sh
| | | | | |
| | | | | Command or Script to Execute
| | | | |
| | | | |
| | | | |
| | | | Day of the Week(0-6)
| | | |
| | | Month of the Year(1-12)
| | |
| | Day of the Month(1-31)
| |
| Hour(0-23)
|
Min(0-59)
להלן תקציר של תחביר ה-cron job:
דוגמאות לקרון ג'וב
להלן כמה דוגמאות לקביעת זמני ריצה של קרון ג'ובים. | לוח זמנים |
ערך מתוזמן | 5 0 * 8 * |
ב-00:05 באוגוסט. | 5 4 * * 6 |
ב-04:05 ביום שישי. | 0 22 * * 1-5 |
ב-22:00 בכל יום שבוע מבשר יום דרך שישי.
זה בסדר אם לא תוכלו להיכנס לזה באותו הזמן. תוכלו למתן וליצור לוחות קרון עם האתר crontab guru.
איך להגדיר משימה קרונית
- בחלק זה, נסתכל על דוגמה לאיך לתת לסcriipt פשוט למשימה קרונית.
#!/bin/bash
echo `date` >> date-out.txt
יצירו סcriipt בשם date-script.sh
שידפיס את תאריך וזמן המערכת וישלב אותו לקובץ. הסcriipt מוצג למטה:
chmod 775 date-script.sh
2. תעניקו לסcriipt הזכויות יצירה בעזרת פקינסים.
3. תוסיף את הסcriipt ללוח הקרון בעזרת crontab -e
.
*/1 * * * * /bin/sh /root/date-script.sh
פה, אנחנו ארגנו אותו להריץ לדקה.
cat date-out.txt
4. תבחנו את היוצא של הקובץ date-out.txt
. לפי הסcriipt, תאריך המערכת צריך להיות דפיס בקובץ זה בכל דקה.
Wed 26 Jun 16:59:33 PKT 2024
Wed 26 Jun 17:00:01 PKT 2024
Wed 26 Jun 17:01:01 PKT 2024
Wed 26 Jun 17:02:01 PKT 2024
Wed 26 Jun 17:03:01 PKT 2024
Wed 26 Jun 17:04:01 PKT 2024
Wed 26 Jun 17:05:01 PKT 2024
Wed 26 Jun 17:06:01 PKT 2024
Wed 26 Jun 17:07:01 PKT 2024
# יוצא
איך לתיקון בעיות קרוניות
קרונים מאוד מועילים, אך הם אולי לא יעבדו כפי שאמור. למרבה המזל, יש דרכים יעילות מסויימות שתוכלו להשתמש בהן כדי לתיקון אותם.
1. בדוקות את התוודעה.
ראשית, תוכלו לנסות לאשר את התוודעה שנתנו לקרון. אתם יכולים לעשות את זה עם הס
. בדוק יומני קרון.
ראשית, צריך לבדוק האם הקרון רץ בזמן המתוכנן או לא. באובונטו, ניתן לוודא זאת מתוך יומני הקרון הממוקמים ב/var/log/syslog
.
אם יש רשומה ביומנים הללו בזמן הנכון, זה אומר שהקרון רץ לפי הלוח הזמנים שהגדרת.
1 Jun 26 17:02:01 zaira-ThinkPad CRON[27834]: (zaira) CMD (/bin/sh /home/zaira/date-script.sh)
2 Jun 26 17:02:02 zaira-ThinkPad systemd[2094]: Started Tracker metadata extractor.
3 Jun 26 17:03:01 zaira-ThinkPad CRON[28255]: (zaira) CMD (/bin/sh /home/zaira/date-script.sh)
4 Jun 26 17:03:02 zaira-ThinkPad systemd[2094]: Started Tracker metadata extractor.
5 Jun 26 17:04:01 zaira-ThinkPad CRON[28538]: (zaira) CMD (/bin/sh /home/zaira/date-script.sh)
להלן היומנים של משימת הקרון הדוגמה שלנו. שים לב לעמודה הראשונה שמראה את הזמן. הנתיב לסקריפט גם מופיע בסוף השורה. השורות מספרים 1, 3 ו-5 מראות שהסקריפט רץ ככל שתיארת.
3. הפנה את פלט הקרון לקובץ.
ניתן להפנות את פלט הקרון לקובץ ולבדוק בו אם קיימים שגיאות.
* * * * * sh /path/to/script.sh &> log_file.log
# הפנה פלט קרון לקובץ
8.7. בסיסי רשתות לינוקס
לינוקס מציע מספר פקודות להצגת מידע רשתתי. בחלק זה נדון בקצרה על כמה מהפקודות.
הצגת מנשקי רשת עם ifconfig
ifconfig
הפקודה ifconfig
מספקת מידע על מנשקי רשת. הנה דוגמה לפלט:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::a00:27ff:fe4e:66a1 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:4e:66:a1 txqueuelen 1000 (Ethernet)
RX packets 1024 bytes 654321 (654.3 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 512 bytes 123456 (123.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 256 bytes 20480 (20.4 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 256 bytes 20480 (20.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# פלט
הפלט של הפקודה ifconfig
מראה את מנשקי הרשת המוגדרים על המערכת, יחד עם פרטים כמו כתובות IP, כתובות MAC, סטטיסטיקות פקטורים ועוד.
המנשקים הללו יכולים להיות מכשירים פיזיים או וירטואליים.
כדי להפיק כתובות IPv4 ו-IPv
צפייה בפעילות רשת בעזרתnetstat
הפקט הnetstat
מראה את הפעילות והנתונים הבאים על הרשת:
- הנה כמה דוגמאות לשימוש בפקט
netstat
בשורת פקודות: - הצג את כל הסיכות המקשיבות והלא מקשיבות:
- הצג רק את הפורטים המקשיבים:
- הצג את הנתונים הסטטיסטיים לרשת:
- הצג את טבלת הניווט:
- הצגת קישורי TCP:
- הצגת קישורי UDP:
- הצגת התקנים הרשתיים:
- הצגת PID ושמות התוכניות עבור הקישורים:
- הצגת סטטיסטיקות עבור הפרוטוקול (לדוגמה, TCP):
הצגת מידע מורחב:
בדיקת קישוריות רשת בין שני מכשירים בשימוש ב ping
ping google.com
ping
משמש לבדיקת קישוריות רשת בין שני מכשירים. הוא שולח הערבות ICMP אל המכשיר המטרתי וממתין לתשובה.
ping google.com
PING google.com (142.250.181.46) 56(84) bytes of data.
64 bytes from fjr04s06-in-f14.1e100.net (142.250.181.46): icmp_seq=1 ttl=60 time=78.3 ms
64 bytes from fjr04s06-in-f14.1e100.net (142.250.181.46): icmp_seq=2 ttl=60 time=141 ms
64 bytes from fjr04s06-in-f14.1e100.net (142.250.181.46): icmp_seq=3 ttl=60 time=205 ms
64 bytes from fjr04s06-in-f14.1e100.net (142.250.181.46): icmp_seq=4 ttl=60 time=100 ms
^C
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 78.308/131.053/204.783/48.152 ms
ping
בדוגמה בודק אם מקבל תשובה ללא התמהמה.
— google.com ping סטטיסטיקות —
ניתן לעצור את התגובות עם Ctrl + C
.
בדיקת קישורים בעזרת הפקטיבית curl
curl
מייצג "שם מקור ללקוח". הוא משמש לעבירת מידע אל שרת או מקבלת מידע משרת. הוא גם יכול לשתמש במסגרת בדיקות API שעוזרות בתיקון שגיאות במערכת וביישומים.
curl http://www.official-joke-api.appspot.com/random_joke
{"type":"general",
"setup":"What did the fish say when it hit the wall?","punchline":"Dam.","id":1}
- כמובן, ניתן להשתמש ב
http://www.official-joke-api.appspot.com/
כדי לנסות את הפקטיביתcurl
.
curl -o random_joke.json http://www.official-joke-api.appspot.com/random_joke
הפקטיבית curl
ללא אפשרויות משתמשת בשיטה GET באופן בר-מחשבה.
curl -o
שומר את התוצאות בשם הקובץ המצוין.
curl -I http://www.official-joke-api.appspot.com/random_joke
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Vary: Accept-Encoding
X-Powered-By: Express
Access-Control-Allow-Origin: *
ETag: W/"71-NaOSpKuq8ChoxdHD24M0lrA+JXA"
X-Cloud-Trace-Context: 2653a86b36b8b131df37716f8b2dd44f
Content-Length: 113
Date: Thu, 06 Jun 2024 10:11:50 GMT
Server: Google Frontend
# שומר את התוצאות בשם random_joke.json
curl -I
משך רק הראשים.
8.8. טיפול בבעיות בלינוקס: כלים וטכניקות
דוח פעילות מערכת עם sar
הפקודה sar
בלינוקס היא כלי עוצמתי לאספת, לדווח ולשמור על מידע על פעילות המערכת. זהו חלק מהחבילה sysstat
ונמצא בשימוש נרחב למעקב אחר ביצועי המערכת במשך זמן.
כדי להשתמש ב-sar
צריך קודם להתקין את syssstat
באמצעות sudo apt install sysstat
.
לאחר ההתקנה, התחל את השירות עם sudo systemctl start sysstat
.
וודא שהמצב פעיל עם sudo systemctl status sysstat
.
sar [options] [interval] [count]
לאחר שהמצב יהיה פעיל, המערכת תתחיל לאסוף מידע שונה שניתן להשתמש בו כדי לגשת ולנתח מידע היסטורי. נפגש איתו בפרטים בקרוב.
sar -u 1 3
פירוט הפקודה sar
הוא כך:
Linux 6.5.0-28-generic (zaira-ThinkPad) 04/06/24 _x86_64_ (12 CPU)
19:09:26 CPU %user %nice %system %iowait %steal %idle
19:09:27 all 3.78 0.00 2.18 0.08 0.00 93.96
19:09:28 all 4.02 0.00 2.01 0.08 0.00 93.89
19:09:29 all 6.89 0.00 2.10 0.00 0.00 91.01
Average: all 4.89 0.00 2.10 0.06 0.00 92.95
לדוגמה, sar -u 1 3
יציג סטטיסטיקות שימוש במעבדה כל שניה לפי שלוש פעמים.
# פלט
הנה כמה משימושים נפוצים ודוגמאות כיצד להשתמש בפקודה sar
.
sar
יכולה להשתמש למספר מטרות:
sar -r 1 3
Linux 6.5.0-28-generic (zaira-ThinkPad) 04/06/24 _x86_64_ (12 CPU)
19:10:46 kbmemfree kbavail kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
19:10:47 4600104 8934352 5502124 36.32 375844 4158352 15532012 65.99 6830564 2481260 264
19:10:48 4644668 8978940 5450252 35.98 375852 4165648 15549184 66.06 6776388 2481284 36
19:10:49 4646548 8980860 5448328 35.97 375860 4165648 15549224 66.06 6774368 2481292 116
Average: 4630440 8964717 5466901 36.09 375852 4163216 15543473 66.04 6793773 2481279 139
1. שימוש בזיכרון
כדי לבדוק שימוש בזיכרון (פנוי ומשומש), השתמשו ב:
פקודה זו תציג סטטיסטיקות זיכרון כל שניה שלוש פעמים.
sar -S 1 3
sar -S 1 3
Linux 6.5.0-28-generic (zaira-ThinkPad) 04/06/24 _x86_64_ (12 CPU)
19:11:20 kbswpfree kbswpused %swpused kbswpcad %swpcad
19:11:21 8388604 0 0.00 0 0.00
19:11:22 8388604 0 0.00 0 0.00
19:11:23 8388604 0 0.00 0 0.00
Average: 8388604 0 0.00 0 0.00
2. שימוש במרחב ההחלפה
כדי להציג סטטיסטיקות שימוש במרחב ההחלפה, השתמשו ב:
הפקת הצו זו עוזרת למען השגיאה בשימוש במקום מחייב במערכות המתפרסמות מעבר לזיכרון פיסי.
sar -d 1 3
3. עומס המכשירי I/O
על מנת לדווח על פעילות עבור מכשירים בלוק והחלקים שלהם של המכשירים בלוק:
הצו הזה מעניק סטטיסטיקות מפורטות על העברת המידע אל ומן המכשירים בלוק, והוא מועיל לאבחנת קונקרטים I/O.
sar -n DEV 1 3
5. סטטיסטיקות רשת
sar -n DEV 1 3
Linux 6.5.0-28-generic (zaira-ThinkPad) 04/06/24 _x86_64_ (12 CPU)
19:12:47 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
19:12:48 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
19:12:48 enp2s0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
19:12:48 wlp3s0 10.00 3.00 1.83 0.37 0.00 0.00 0.00 0.00
19:12:48 br-5129d04f972f 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
.
.
.
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil
Average: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Average: enp2s0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
...output truncated...
על מנת להביט בסטטיסטיקות רשת, כמו מספר הפקטים המקבלים (השדרים) על הממשקים הרשתיים:
# -n DEV מספר לסאר לדווח על ממשקים מכשירי רשת
זה מציג סטטיסטיקות רשת בכל שניה למשך שלושה שניות, וזה עוזר בניוון של תנועת הרשת.
- 6. נתונים היסטוריים
- # הם "true" ו"false". אל תשים ערכים אחרים, הם
- הגדרת מהירות אספי המידע: ערוך את ההגדרות של המשימה של cron כדי להגדיר את מהירות אספי המידע.
sar -u -f /var/log/sysstat/sa04
Linux 6.5.0-28-generic (zaira-ThinkPad) 04/06/24 _x86_64_ (12 CPU)
15:20:49 LINUX RESTART (12 CPU)
16:13:30 LINUX RESTART (12 CPU)
18:16:00 CPU %user %nice %system %iowait %steal %idle
18:16:01 all 0.25 0.00 0.67 0.08 0.00 99.00
Average: all 0.25 0.00 0.67 0.08 0.00 99.00
החלף <DD>
עם יום החודש שבעבורו רוצה להצגת הנתונים.
בפקודה הבאה, /var/log/sysstat/sa04
מעניקה נתונים עבור יום הרביעי של החודש הנוכחי.
sar -I SUM 1 3
7. הפרעות CPU בזמן אמת
Linux 6.5.0-28-generic (zaira-ThinkPad) 04/06/24 _x86_64_ (12 CPU)
19:14:22 INTR intr/s
19:14:23 sum 5784.00
19:14:24 sum 5694.00
19:14:25 sum 5795.00
Average: sum 5757.67
כדי להסתכל על הפרעות לשניה על ידי הCPU, השתמש בפקודה הבאה:
# ייצוג
הפקודה הזו עוזרת לנטרול איך הCPU מעניקה הפרעות, מה שחשוב להתאמת ביצועים בזמן אמת.
הדוגמאות האלו ממחישות איך ניתן להשתמש ב־sar
כדי לעקוב אחר מגוון נושאים הקשורים לביצועי המערכת. שימוש תדיר ב־sar
יכול לעזור בזיהוי תקלות במערכת ובהבטחה שהיישומים ממשיכים לרוץ ביעילות.
8.9. אסטרטגית פתרון בעיות כללית לשרתים
למה אנחנו צריכים להבין ניטור?
ניטור מערכת הוא חלק חשוב במנהל המערכת. יישומים חיוניים מחייבים רמה גבוהה של פרעון כדי למנוע כשל ולהפחית את ההשפעה של הפסקה.
לינוקס יש כלים חזקים מאוד למדידת בריאות המערכת. במקטע הזה, תלמד על השיטות השונות הזמינות כדי לבדוק את בריאות המערכת שלך ולזהות את נקודות האחסון.
[user@host ~]$ uptime 19:15:00 up 1:04, 0 users, load average: 2.92, 4.48, 5.20
מצא ממוצע עומס וזמן פעילות של המערכת
ייתכן שתתרחש ניהול מחדש של המערכת שיכול לפעמים לטפל בכמה תצורות. כדי לבדוק כמה זמן המכונה הופעלה, השתמש בפקודה: uptime
. בנוסף לזמן פעילות, הפקודה מציגה גם את ממוצע העומס.
ממוצע העומס הוא העומס של המערכת במהלך ה־1, 5 ו־15 דקות האחרונות. מבט כליל מציין אם עומס המערכת נראה כי הוא מתגבר או מתחדש לאורך הזמן.
שים לב: תור ה־CPU האידיאלי הוא 0
. זה יתכן רק במקרה שאין תור ממתין ל־CPU.
lscpu
ניתן לחשב את העומס לפי כל יחידת ה־CPU על ידי חילוק העומס הממוצע על מספר ה־CPU הכולל.
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 48 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 12
On-line CPU(s) list: 0-11
.
.
.
output omitted
כדי למצוא את מספר ה־CPU, השתמש בפקודה lscpu.
# פלט
אם שיעור הטעינה נראה שהוא גדל ולא מוריד, הCPU-ים מותקעים. יש תהליך אחד שנעצר או יש דליקה זיכרון.
free -mh
מחשבת הזיכרון החופשי
total used free shared buff/cache available
Mem: 14Gi 3.5Gi 7.7Gi 109Mi 3.2Gi 10Gi
Swap: 8.0Gi 0B 8.0Gi
לפעמים, יש השתמשות גבוהה בזיכרון שעשויה להיות סיבת בעיה. כדי לבדוק את הזיכרון הזמיני והזיכרון בשימוש, משתמשים בפקודה free
.
# הוצאה
מחשבת המקום על הדיסק
df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 1.5G 2.4M 1.5G 1% /run
/dev/nvme0n1p2 103G 34G 65G 35% /
tmpfs 7.3G 42M 7.2G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
efivarfs 246K 93K 149K 39% /sys/firmware/efi/efivars
/dev/nvme0n1p3 130G 47G 77G 39% /home
/dev/nvme0n1p1 511M 6.1M 505M 2% /boot/efi
tmpfs 1.5G 140K 1.5G 1% /run/user/1000
כדי לוודא שהמערכת בריאה, אל תשכחו מהמקום על הדיסק. כדי לרשום את כל הנקודות המתוךן ואת אחוזי השימוש שלהן באופן ישיר, משתמשים בפקודה הבאה. באופן אידיאלי, המקום המשומש בדיסק לא צריך לעלות מעל 80%.
הפקודה df
מעניקה מידע פרטי על המקום על הדיסק.
קבעת מצבי התהליכים
[user@host ~]$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
runner 1 0.1 0.0 1535464 15576 ? S 19:18 0:00 /inject/init
runner 14 0.0 0.0 21484 3836 pts/0 S 19:21 0:00 bash --norc
runner 22 0.0 0.0 37380 3176 pts/0 R+ 19:23 0:00 ps aux
מצבי התהליכים יכולים להיות מנוטרדים על מנת לראות תהליך אחד שנעצר עם שימוש גבוה בזיכרון או בCPU.
ראינו קודם שפקודת ps
מעניקה מידע שימושי על תהליך. הביטו בעמודי CPU
ו MEM
.
מעקבת מערכת בזמן אמת
מעקב בזמן אמת נותן חלון למצב המערכת האמתי.
אחד היישומים שאתה יכול להשתמש בו לעשות זאת היא הפקודה top
.
הפקודה top מראה מבט דינמי של התהליכים במערכת, שמראה ראשון עם רשימת ס
ניתן לראות פרטים מאורגנים טובים בחלון קומפקט בעזרת top
. יש מספר דגלים, קיצורי דרך ושיטות הדגשה שמקבלים יחד עם top
.
ניתן גם להרוג תהליכים באמצעות top
. כדי לעשות זאת, לחץ k
ואז הזן את מספר תעודת הזהות של התהליך.
תיאור היומן
יומני מערכת ויישומים מכילים מידע רב על מה שהמערכת עוברת. הם מכילים מידע שימושי וקודי שגיאות שמצביעים על שגיאות. אם מחפשים קודי שגיאות ביומנים, יכול להיות מוריד באופן משמעותי את זמן זיהוי ותיקון הבעיות.
ניתוח יציאות רשת
אספקת הרשת לא צריכה להתעלם כי בעיות רשת נפוצות ויכולות להשפיע על המערכת ועל זרימות התנועה.
כדי לזהות בעיות כאלו, צריך להבין מצבי יציאות הרשת. | כמה ממצבי היציאות מסודרים כאן בקצרה: |
מצב | תיאור |
LISTEN | מייצג יציאות שמחכות לבקשת חיבור מכל TCP מרוחק ומפתח יציאה. |
ESTABLISHED | מייצג חיבורים שפתוחים וניתן להעביר את המידע שהתקבל ליעדו. |
TIME WAIT | מייצג זמן המתנה לוודא שהבקשה לסיום החיבור שלו קיבלה אישור. |
FIN WAIT2
מייצג המתנה לבקשת סיום חיבור מהTCP המרוחק.
[user@host ~]$ /sbin/sysctl net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 15000 65000
לבחון כיצד ניתן לנתח מידע קשרתי לפורטים בלינוקס.
טווחי פורטים: טווחי פורטים מוגדרים במערכת, וניתן להגדיל או להקטין אותם על פי הצורך. בפיסקת הקוד הבאה, הטווח הוא מ־15000
עד 65000
, כך שיש בסך הכל 50000
פורטים זמינים (65000 – 15000). אם מספר הפורטים המנוצלים מגיע או מעבר לגבול הזה, ישנה בעיה.
השגיאה שנדווחת בלוגים במקרים כאלו עשויה להיות נכשל בקשרת פורט
או קשרים רבים מדי
.
זיהוי איבוד פקטים
במעקב אחר מערכת, עלינו לוודא שהתקשורת הנכנסת והיוצאת ישירה.
[user@host ~]$ ping 10.13.6.113
PING 10.13.6.141 (10.13.6.141) 56(84) bytes of data.
64 bytes from 10.13.6.113: icmp_seq=1 ttl=128 time=0.652 ms
64 bytes from 10.13.6.113: icmp_seq=2 ttl=128 time=0.593 ms
64 bytes from 10.13.6.113: icmp_seq=3 ttl=128 time=0.478 ms
64 bytes from 10.13.6.113: icmp_seq=4 ttl=128 time=0.384 ms
64 bytes from 10.13.6.113: icmp_seq=5 ttl=128 time=0.432 ms
64 bytes from 10.13.6.113: icmp_seq=6 ttl=128 time=0.747 ms
64 bytes from 10.13.6.113: icmp_seq=7 ttl=128 time=0.379 ms
^C
--- 10.13.6.113 ping statistics ---
7 packets transmitted, 7 received,0% packet loss, time 6001ms
rtt min/avg/max/mdev = 0.379/0.523/0.747/0.134 ms
פקודה שימושית היא ping
. ping
פוגעת במערכת היעד ומביאה תגובה חזרה. שים לב לשורות הסטטיסטיקה האחרונות שמראות את אחוז האיבוד של הפקטים והזמן.
# ping כתובת IP היעד
ניתן גם ללכוד פקטים בזמן ריצה באמצעות tcpdump
. נבדוק בזה בהמשך.
איסוף סטטיסטיקות לאחר-מוות של בעיה
- זה תמיד דבר טוב לאסוף מידע שימושי שיעזור לזיהוי הגורם היסודי מאוחר יותר. בדרך כלל, לאחר הפעלת מחדש של המערכת או שירותים, אנחנו מאבדים את התמונה המערכתית הקודמת והלוגים.
מתחת נמצאים כמה מהשיטות ללכידת תמונת מערכת.
- שמ
לפני שינוי כל דבר, העתק קובץ הרשומים למקום אחר. זה קריטי להבנה מה היתה מצב המערכת בזמן התקרית. לעיתים קרובות, קובץ הרשומים הוא החלון היחיד להסתכלות אחר מצבים של המערכת העתידים, כי נתונים הזמן הרגיל נאבדים.
sudo tcpdump -i any -w
דיקוף TCP
דיקוף TCP (tcpdump) הוא תוכנה של שורת פעולה שמאפשרת לך לתפוס ולנתח את התקשורת הרשתית הכיצדת. היא בעיקר משמשת לעידן הבעיות של הרשת. אם אתה מאמין שהתקשורת במערכת מושפעת, קח את tcpdump באופן הבא:
# איפה,
# -i any תפוס את התקשורת מכל הממשקים
# -w מספר את השם הקובץ להוצאה
# עצור את הפקודה אחר מספר דקות מפני שהגודל של הקובץ עלה
# השתמש בסיום קובץ כ.pcap
אחרי שהתפוס tcpdump, ניתן להשתמש בכלים כמו Wireshark על מנת לנתח התקשורת באופן ויזואלי.
סיכום
תודה רבה על קריאת הספר עד לסוף. אם מצאת שהוא מועיל, קחי בחשבון לשתף אחרים.
הספר לא מסתיים פה, אף על פי כן. אני אמשיך לשפר אותו ולהוסיף חומר חדש בעתיד. אם מצאת בעיות או אם רוצה להציע שיפורים, פתוח בקשה פעולה/בעיה.
- היו
-
LinkedIn: אני משתף מאמרים ופוסטים על טכנולוגיה שם. תשאירו מומן על לינקדין ותאשר אותי על מיומנויות רלוונטיות.
קבלו גישה לתוכן מועבר: עבור עזרה אישית ותוכן מועבר בלבד, לכאן הליך.
קבלו גישה לתוכן מועבר: עבור עזרה אישית ותוכן מועבר בלבד, לכאן הליך.
Source:
https://www.freecodecamp.org/news/learn-linux-for-beginners-book-basic-to-advanced/