הבלוג של PracticU›מסלול לינוקס ו-DevOps

פקודות לינוקס שימושיות - דף עזר למתחילים

פקודות לינוקס הן הוראות טקסט שמקלידים בטרמינל (שורת הפקודה) כדי לנהל קבצים, משתמשים, תוכנות, שירותים ורשת במערכת Linux. בשרתים אין בדרך כלל ממשק גרפי, ולכן מי שעובד עם לינוקס עובד בעיקר עם פקודות.

בדף העזר הזה ריכזנו פקודות linux שימושיות למתחילים, מחולקות לפי נושא, עם הסבר קצר ודוגמה לכל פקודה. הן עובדות כמעט בכל ההפצות, ובמקומות שבהם יש הבדל בין משפחת Debian ו-Ubuntu למשפחת Red Hat (RHEL, Rocky, AlmaLinux, Fedora) מצוין ההבדל. אם אתם עוד מתלבטים באיזו הפצה ואיך להתחיל, קראו קודם את המדריך לינוקס למתחילים - מאיפה להתחיל.

לפני שמתחילים: טיפים לעבודה בטרמינל

  • sudo - מריץ פקודה בהרשאות root (מנהל המערכת). התקנת תוכנות, שינוי קבצי מערכת וניהול משתמשים ושירותים דורשים sudo.
  • man ו-help - man ls פותח את המדריך המלא של הפקודה (יוצאים עם q), ו-ls --help מציג סיכום קצר של המתגים.
  • Tab משלים שמות של פקודות, קבצים ותיקיות, החץ למעלה מחזיר פקודות קודמות, ו-Ctrl+C עוצר פקודה שרצה.
  • | ו-> - הסימן | (Pipe) מעביר את הפלט של פקודה לפקודה הבאה, > כותב את הפלט לקובץ ודורס אותו, ו->> מוסיף לסוף הקובץ. דוגמה: ls -l /etc > list.txt

פקודות לינוקס לקבצים ותיקיות

הפקודות הבסיסיות וההתחברות לשרת מרוחק מודגמות בהרצאה פקודות בסיסיות בלינוקס - SSH.

pwd

מציגה באיזו תיקייה אתם נמצאים עכשיו (Print Working Directory).

דוגמה: pwd

ls

מציגה קבצים ותיקיות. -l מציג רשימה מפורטת עם הרשאות, בעלים, גודל ותאריך; -a מציג גם קבצים מוסתרים (ששמם מתחיל בנקודה); -h מציג גדלים בפורמט קריא (K, M, G).

דוגמה: ls -lah /var/log

cd

עוברת לתיקייה אחרת. cd .. עולה תיקייה אחת, cd לבד חוזרת לתיקיית הבית (~), ו-cd - חוזרת לתיקייה הקודמת.

דוגמה: cd /etc/ssh

mkdir

יוצרת תיקייה. -p יוצר גם את כל התיקיות שבדרך, ולא מחזיר שגיאה אם התיקייה כבר קיימת.

דוגמה: mkdir -p ~/projects/site/images

touch

יוצרת קובץ ריק, ואם הקובץ קיים היא מעדכנת את זמן השינוי שלו.

דוגמה: touch notes.txt

cp

מעתיקה קבצים. -r מעתיק תיקייה עם כל התוכן שלה, והמתג -i שואל לפני שדורסים קובץ קיים.

דוגמה: cp /etc/ssh/sshd_config ~/sshd_config.bak או cp -r site site-backup

mv

מעבירה קובץ או תיקייה למקום אחר, ומשמשת גם לשינוי שם.

דוגמה: mv report.txt report-old.txt

rm ו-rmdir

rm מוחקת קבצים; -r מוחק תיקייה עם כל התוכן שלה, והמתג -i שואל לפני כל מחיקה. אין סל מחזור, ו-rm -rf מוחק בלי לשאול, אז בודקים פעמיים את הנתיב. rmdir מוחקת רק תיקייה ריקה.

דוגמה: rm -i old.txt או rm -r site-backup

cat ו-less

cat מדפיסה את כל הקובץ למסך ומתאימה לקבצים קצרים. less פותחת קובץ ארוך לקריאה עם גלילה: / מחפש טקסט ו-q יוצא.

דוגמה: cat /etc/hostname או less /etc/services

head ו-tail

head מציגה את תחילת הקובץ ו-tail את סופו (10 שורות כברירת מחדל, והמתג -n קובע כמה). tail -f ממשיכה להציג שורות חדשות שנכתבות לקובץ, וכך עוקבים אחרי לוג בזמן אמת.

דוגמה: tail -n 20 /etc/passwd או sudo tail -f /var/log/nginx/access.log

הרשאות: chmod ו-chown

לכל קובץ יש בעלים (user) וקבוצה (group), ושלוש קבוצות הרשאות: לבעלים, לקבוצה ולכל השאר (others). כל אחת כוללת r קריאה, w כתיבה ו-x הרצה (בתיקייה x פירושו אפשרות להיכנס אליה). ב-ls -l השורה -rwxr-xr-- אומרת: קובץ רגיל, לבעלים rwx, לקבוצה r-x ולשאר r--. ההסבר המלא בהרצאה הרשאות במערכת קבצים של לינוקס.

chmod עם מספרים

כל הרשאה שווה מספר, r=4, w=2, x=1, ומחברים אותם לכל קבוצה: 7 = rwx, 6 = rw-, 5 = r-x, 4 = r--. לכן 755 = rwxr-xr-x (סקריפטים ותיקיות), 644 = rw-r--r-- (קובץ רגיל) ו-600 = rw------- (רק הבעלים, למשל מפתח SSH פרטי).

דוגמה: chmod 755 backup.sh או chmod 600 ~/.ssh/id_rsa

chmod עם אותיות

u בעלים, g קבוצה, o אחרים ו-a כולם; + מוסיף, - מסיר ו-= קובע בדיוק. -R מחיל את השינוי על תיקייה וכל מה שבתוכה.

דוגמה: chmod u+x deploy.sh או chmod -R g+w /srv/shared

chown

משנה בעלים וקבוצה של קובץ או תיקייה (דורש sudo). הפורמט הוא user:group, והמתג -R חל על כל התוכן.

דוגמה: sudo chown -R www-data:www-data /var/www/site (www-data הוא המשתמש של שרת האינטרנט ב-Ubuntu)

משתמשים וקבוצות

whoami ו-id

whoami מחזירה את שם המשתמש הנוכחי. id מציגה את מספר המשתמש (UID), את הקבוצה הראשית ואת כל הקבוצות שהמשתמש חבר בהן.

דוגמה: id dana

useradd ו-passwd

useradd יוצרת משתמש; -m יוצר לו תיקיית בית, והמתג -s קובע את ה-Shell. passwd משנה סיסמה: בלי שם את שלכם, ועם sudo ושם של משתמש אחר את שלו. ב-Debian וב-Ubuntu יש גם adduser, שמבקש את כל הפרטים בצורה אינטראקטיבית.

דוגמה: sudo useradd -m -s /bin/bash dana ואחריה sudo passwd dana

groupadd ו-usermod -aG

groupadd יוצרת קבוצה, ו-usermod -aG מוסיפה משתמש לקבוצה נוספת. ה-a (append) חשוב: בלעדיו המשתמש יוצא מכל הקבוצות הנוספות שלא נכתבו בפקודה. השינוי נכנס לתוקף בהתחברות הבאה של המשתמש.

דוגמה: sudo groupadd developers ואחריה sudo usermod -aG developers dana

userdel

מוחקת משתמש; -r מוחק גם את תיקיית הבית שלו.

דוגמה: sudo userdel -r dana

תהליכים

ps

מציגה תהליכים שרצים. ps aux מציג את כל התהליכים של כל המשתמשים, עם PID, צריכת מעבד וזיכרון והפקודה שהפעילה אותם.

דוגמה: ps aux | grep nginx

top

מציגה בזמן אמת את התהליכים שצורכים הכי הרבה מעבד, יחד עם עומס המערכת והזיכרון. q יוצא.

דוגמה: top

kill ו-pkill

kill שולחת אות לתהליך לפי PID. ברירת המחדל היא SIGTERM, שמבקש מהתהליך להיסגר בצורה מסודרת; kill -9 (SIGKILL) סוגר אותו בכוח בלי שיספיק לשמור נתונים, ולכן משתמשים בו רק כשהתהליך לא מגיב. pkill סוגרת תהליכים לפי שם.

דוגמה: kill 4312, kill -9 4312 או pkill firefox

התקנת תוכנות: apt ו-dnf

כל משפחת הפצות משתמשת במנהל חבילות משלה, שמוריד תוכנות ממאגרים (Repositories) ומתקין גם את התלויות שלהן.

apt (Debian ו-Ubuntu)

apt update מרעננת את רשימת החבילות (היא לא משדרגת דבר), apt upgrade משדרגת את מה שמותקן, apt install מתקינה, apt remove מסירה ו-apt purge מסירה גם את קובצי ההגדרות. apt search מחפשת חבילה.

דוגמה: sudo apt update ואחריה sudo apt install nginx

dnf (Red Hat, Rocky, AlmaLinux, Fedora)

dnf install מתקינה, dnf remove מסירה, dnf upgrade משדרגת, dnf search מחפשת ו-dnf list installed מציגה מה מותקן. בגרסאות ישנות של Red Hat ו-CentOS משתמשים ב-yum, עם כמעט אותן פקודות.

דוגמה: sudo dnf install httpd

שירותים: systemctl

שירות (Service, או Daemon) הוא תוכנה שרצה ברקע, כמו שרת אינטרנט או SSH. ברוב ההפצות המודרניות מנהלים אותם עם systemd והפקודה systemctl. שמות השירותים לפעמים שונים: Apache נקרא httpd ב-Red Hat ו-apache2 ב-Ubuntu. ההסבר המלא בהרצאה לינוקס Services או Daemons.

systemctl status

מציגה אם השירות פועל, מאז מתי, ואת שורות הלוג האחרונות שלו.

דוגמה: systemctl status nginx

systemctl start, stop ו-restart

מפעילות, עוצרות ומפעילות מחדש שירות. אחרי שינוי בקובץ ההגדרות של שירות מפעילים אותו מחדש כדי שהשינוי ייכנס לתוקף.

דוגמה: sudo systemctl restart nginx

systemctl enable ו-disable

קובעות אם השירות יעלה אוטומטית בהפעלת המחשב. enable לבד לא מפעיל את השירות עכשיו; enable --now עושה את שני הדברים.

דוגמה: sudo systemctl enable --now nginx

journalctl

מציגה את הלוגים ש-systemd אוסף. -u מסנן לפי שירות, -n קובע כמה שורות אחרונות להציג, והמתג -f עוקב אחרי שורות חדשות.

דוגמה: sudo journalctl -u nginx -n 50

פקודות רשת

הסבר מורחב על הפקודות האלה נמצא בהרצאה פקודות רשת TCP/IP בלינוקס.

ip a ו-ip route

ip a (קיצור של ip address) מציגה את כרטיסי הרשת ואת כתובות ה-IP שלהם. ip route מציגה את טבלת הניתוב, והשורה שמתחילה ב-default היא ה-Default Gateway. הפקודה ip מחליפה את ifconfig הישנה.

דוגמה: ip a או ip route

ping

בודקת אם יעד עונה ותוך כמה זמן. בלינוקס, בניגוד ל-Windows, ping ממשיכה לשלוח עד שעוצרים עם Ctrl+C, והמתג -c קובע את מספר החבילות.

דוגמה: ping -c 4 8.8.8.8

ss

מציגה חיבורים ופורטים פתוחים (התחליף החדש ל-netstat). t ל-TCP, u ל-UDP, l רק פורטים שמאזינים, n מספרים במקום שמות, ו-p שם התהליך (כדי לראות תהליכים של משתמשים אחרים צריך sudo).

דוגמה: sudo ss -tulpn

curl

שולחת בקשה לכתובת אינטרנט ומציגה את התשובה. -I מציג רק את כותרות התשובה (למשל קוד 200 או 404), והמתג -o שומר את התוכן לקובץ.

דוגמה: curl -I https://www.google.com

ssh ו-scp

ssh מתחברת לשרת מרוחק ופותחת בו טרמינל; -p קובע פורט אם השרת לא מאזין בפורט 22. scp מעתיקה קבצים מעל אותו חיבור.

דוגמה: ssh [email protected] או scp backup.tar.gz [email protected]:/tmp/

חיפוש: grep ו-find

grep

מחפשת טקסט בתוך קבצים או בפלט של פקודה אחרת. -i מתעלם מאותיות גדולות וקטנות, -r מחפש בכל הקבצים שבתיקייה, -n מציג מספרי שורות, והמתג -v מציג את השורות שלא מתאימות. grep ו-awk מודגמות בהרצאה grep + awk.

דוגמה: grep -in "error" /var/log/nginx/error.log או grep -v "^#" /etc/ssh/sshd_config (הקובץ בלי שורות ההערה)

find

מחפשת קבצים ותיקיות לפי שם, סוג, גודל או זמן שינוי. -name לפי שם (עם * בתוך גרשיים), -type f רק קבצים, -type d רק תיקיות, -size +100M קבצים גדולים מ-100MB, והמתג -mtime -1 קבצים ששונו ביממה האחרונה.

דוגמה: find /etc -name "*.conf" או sudo find / -type f -size +100M 2>/dev/null (2>/dev/null מסתיר שגיאות על תיקיות בלי הרשאה)

ארכיונים ודחיסה: tar

tar -czvf

אורזת קבצים ותיקיות לקובץ אחד ודוחסת אותו: c יוצר ארכיון, z דוחס ב-gzip, v מציג כל קובץ שנארז, ו-f מציין את שם הקובץ, ולכן האות f באה אחרונה, מיד לפני השם.

דוגמה: tar -czvf etc-backup.tar.gz /etc

tar -xzvf ו-tar -tzvf

x מחלץ את הארכיון, והמתג -C קובע לאיזו תיקייה (קיימת) לחלץ. t מציג מה יש בארכיון בלי לחלץ.

דוגמה: tar -xzvf etc-backup.tar.gz -C /tmp/restore או tar -tzvf etc-backup.tar.gz

דיסק ומקום פנוי

df -h

מציגה לכל מערכת קבצים כמה מקום יש, כמה תפוס וכמה פנוי. הבדיקה הראשונה כשמשהו נכשל בגלל דיסק מלא.

דוגמה: df -h

du -sh

מחשבת כמה מקום תופסת תיקייה: -s מסכם לשורה אחת, והמתג -h מציג בפורמט קריא. עם * ו-sort -h רואים את התיקיות הגדולות.

דוגמה: sudo du -sh /var/* | sort -h

lsblk

מציגה את הדיסקים והמחיצות כעץ, עם הגודל ונקודת החיבור (Mount Point) של כל אחת.

דוגמה: lsblk

5 משימות תרגול עם פתרונות

נסו לפתור כל משימה במכונה וירטואלית לפני שאתם קוראים את הפתרון.

משימה 1: תיקייה ~/projects/site ובה קובץ index.html שהבעלים יכול לקרוא ולכתוב וכל השאר רק לקרוא

פתרון: mkdir -p ~/projects/site, אחר כך touch ~/projects/site/index.html ולבסוף chmod 644 ~/projects/site/index.html. בבדיקה עם ls -l תופיע השורה -rw-r--r--.

משימה 2: איזה תהליך מאזין לפורט 80?

פתרון: sudo ss -tlnp | grep :80 ומחפשים שורה שבה הכתובת המקומית מסתיימת ב-:80. בעמודה האחרונה מופיעים שם התהליך וה-PID שלו. grep :80 מוצא גם :8080, ולכן בודקים את הכתובת המלאה.

משימה 3: משתמש dana שחבר גם בקבוצה developers, בלי לצאת מקבוצות אחרות

פתרון: sudo groupadd developers (אם הקבוצה לא קיימת), sudo useradd -m dana, sudo passwd dana, ואז sudo usermod -aG developers dana. בודקים עם id dana.

משימה 4: קבצים ב-/var/log שגדולים מ-10MB

פתרון: sudo find /var/log -type f -size +10M. כדי לראות את הגודל של כל תיקייה שם מריצים sudo du -sh /var/log/* | sort -h.

משימה 5: להתקין nginx ב-Ubuntu, להפעיל אותו עכשיו ובכל הפעלה של השרת, ולבדוק שהוא עונה

פתרון: sudo apt update, sudo apt install nginx, ואז sudo systemctl enable --now nginx. systemctl status nginx צריכה להציג active (running), ו-curl -I http://localhost צריכה להחזיר קוד 200.

איפה לומדים לינוקס לעומק

את הפקודות זוכרים באמת רק אחרי שימוש על שרת אמיתי. קורס לינוקס למתקדמים עם Red Hat והכנה ל-RHCSA ול-RHCE של PracticU עובר מהתקנה ופקודות בסיסיות, דרך פקודות רשת, מערכת קבצים, עורך vi, התקנת תוכנות, grep ו-awk, משתמשים, הרשאות וסקריפטים, ועד שירותים, Apache, ניהול דיסקים עם LVM ו-RAID, NFS ו-Samba, Firewall ו-Docker, ומסתיים בפרויקט גמר עם פתרון שאלות מתוך מבחני ההסמכה.

שאלות נפוצות

האם הפקודות עובדות בכל הפצות הלינוקס?

רוב הפקודות, כמו ls, cp, chmod, grep, find ו-tar, זהות בכל ההפצות. ההבדלים העיקריים הם במנהל החבילות (apt ב-Debian וב-Ubuntu, dnf ב-Red Hat ובקרובותיה) ובשמות של חלק מהשירותים.

איך מתרגלים פקודות לינוקס בלי להתקין לינוקס על המחשב?

אפשר להתקין לינוקס במכונה וירטואלית, למשל ב-VirtualBox, ולתרגל בלי לגעת במערכת הקיימת. ב-Windows 10 ו-11 אפשר גם להפעיל את WSL ולקבל טרמינל של Ubuntu בתוך Windows.

מה ההבדל בין sudo ל-su?

sudo מריצה פקודה אחת בהרשאות root ומבקשת את הסיסמה שלכם. su מחליפה את כל ה-Shell למשתמש אחר, בדרך כלל root, ומבקשת את הסיסמה של אותו משתמש.

צריך לזכור את כל המתגים בעל פה?

לא. זוכרים את הפקודות הנפוצות ואת המתגים העיקריים שלהן, ואת השאר בודקים כשצריך עם man או --help. גם אנשי מקצוע ותיקים עושים את זה כל הזמן.

איך יוצאים מ-less, מ-top או מ-man?

לוחצים על q. כדי לעצור פקודה שרצה בלי סוף, כמו ping או tail -f, לוחצים Ctrl+C.

הקורס המלאקורס לינוקס מתקדם אונלייןלעמוד הקורס

מאמרים נוספים

מסלול תקשורת ואבטחת מידע - Cisco CCNA & FortiGate & Checkpointמבחן CCNA לדוגמה - שאלות ותשובותמסלול מנהלי רשת - עם התמחות בשרתי מיקרוסופטשאלות ראיון עבודה ל-Help Desk ותמיכה טכנית - עם תשובותמסלול מנהלי רשת - עם התמחות בשרתי מיקרוסופטקורס טכנאי מחשבים: מה לומדים, למי זה מתאים ואיך מתחילים לעבוד

כל המאמרים