Unix - מושגי יסוד - brd4.braude.ac.il
Transcription
Unix - מושגי יסוד - brd4.braude.ac.il
מושגי יסוד- Unix : פירוט * ? " \ . .. & matches any string matches any character quotation canceles special characters the current directory (soft link) the parent directory (soft link) run command in the background מושגי יסוד- Unix פקודות שימושיות וסימנים מיוחדים.1 :Unix רשימת פקודות בסיסיות לעבודה ראשונית במערכת דוגמאות cp /etc/passwd "The password file" cp /etc/passwd \*.\? ls -l /etc | more ls -s /usr/bin | less ls -s /usr/bin | sort | less ls -l > file & ls -l /tmp | grep dany cat /etc/passwd | grep u3203903 grep u3203903 /etc/passwd man ls man man cat file1 file2 file3 > file4 & cd cp mv mkdir rm rmdir rm -r rm -i ls -aCF pwd cat more less grep man - change directory copy move make directory remove file/dir remove an empty directory remove recursively interactiv remove list all files in columns print working directory display file display file by pages display file by pages (page-up) get regular expression manual pages command > file command < file Special Characters: * ? " \ | . - 2 - - 1 - מושגי יסוד- Unix מושגי יסוד- Unix & קבלת עזרה.2 דוגמאות man 1 mkdir man mkdir man 2 mkdir => There is a system call mkdir! man grep man 5 passwd => information on the file /etc/passwd man passwd => information about the command passwd man -k password => All commands related to password .. : מתחלקים לשמונה פרקיםUnix דפי עזרה של פקודות משתמש ברמת מעבד הפקודות.1 C ( מתוך ספריותsystem calls) תוכניות מערכת C פונקציות נוספות מתוך ספריות \special les" התקנים ודרייברים .2 .3 .4 תאור סוגי קבצים.5 משחקים.6 שונות.7 : אינפורמציה נוספת ניתן למצוא בספריות /usr/doc /usr/doc/HOWTO /usr/doc/HTML /usr/doc/FAQ /usr/info תוכניות לתחזוק המערכת ומידע.8 : בדרך כלל ממוקמים בספריות לשם הצגתxman קיימת הפקודהX windows בסביבת החלונות בסביבה זו ניתן.דפי העזרה בצורה גרפית ויותר נוחה לדיפדוף יש. בכדי לדפדף בדפי העזרהNetscape גם להשתמש בתוכנת ./usr/doc/HTML/index.html להתחיל במסמך .rtfm.mit.edu מאגר גדול של דפי עזרה ניתן למצוא באתר - 4 - /usr/man/man1 /usr/man/man2 /usr/man/man3 .... /usr/man/man8 .1 היא פרקman ברירת המחדל של הפקודה man -k keyword - 3 - : חיפוש על פי מילת מפתח מושגי יסוד- Unix :ps USER root root root root root root root dany dany dany dany miki miki miki miki auw PID %CPU %MEM SIZE 222 0.0 2.5 1440 230 0.0 3.0 1316 240 0.0 1.9 1120 319 0.0 3.8 2048 329 0.0 5.2 2408 330 0.0 3.1 1320 1329 0.0 1.5 820 446 0.0 2.5 1444 447 0.0 2.4 1160 1211 0.0 2.5 1168 1370 0.8 30.6 10160 1398 0.0 2.5 1428 1399 0.1 2.5 1184 1437 1.1 4.7 2312 1440 11.8 28.8 10096 מושגי יסוד- Unix RSS TTY STAT START 776 1 S 18:44 928 1 S 18:53 612 1 S 18:53 1180 1 S 18:53 1620 1 S 18:54 972 p1 S 18:54 488 p1 R 23:34 784 p4 S 19:15 772 p4 S 19:15 776 p5 S 22:41 9488 p5 T 00:25 780 p8 S 00:31 792 p8 S 00:31 1480 p8 S 00:40 8920 p8 S 00:42 TIME COMMAND 0:00 /bin/login 0:00 -zsh 0:00 startx 0:01 control-panel 0:00 xterm 0:00 zsh 0:00 ps auw 0:00 login 0:00 -bash 0:00 vi file.txt 0:00 gnuchessx 0:00 /bin/login 0:00 -bash 0:00 xcalc 0:00 gnuchessx : הסברים PID CPU SIZE RSS TTY STAT S T R Z תהליכים.3 דוגמא )מקוצרת( לפלט של הפקודה - process identity number - central procecessing unit time - size of text+data+stack - kilobytes of program in memory - controling terminal (teletype) - status of the process: sleeping stopped running (or ready to run) zombie . ניתן לתאר את כל הפעילות של המערכת במונחים של תהליכים ומספר תהליכים, הגרעין של המערכת: קיימים תהליכי המערכת . ופעולה שוטפת של המערכת,קבועים לטיפול בדואר תיקשורת כל תהליך.זמנית- כל משתמש יכול להריץ מספר תהליכים בו שנוצר בדרך זו עשוי להוליד תהליכים נוספים )ילדים( במהלך .פעולתו תהליכי מערכת ההפעלה שייכים. כל תהליך שייך למשתמש מסוים .root -ל כל משתמש יכול להציג על המסך את רשימת התהליכים השייכים .ps לו באמצעות הפקודה ps ps a ps au ps auw - list my processes list processes of all users list all processes in user format as above in wide format - 6 - - 5 - מושגי יסוד- Unix מושגי יסוד- Unix יש, במידה ותהליך מסוים נתקע ואינו משחרר את המסך: הערה צורך להתחבר לחשבון דרך מסך אחר ומשם לסיים את התהליך .התקוע וערוך,\ps auxw" הפעל את הפקודה, כנס למערכת: תרגיל על ידי שימוש.root - רשימה מלאה של כל התהליכים השייכים ל נסה להבין בערך מהם התפקידים של כל התהליכיםman בפקודה .האלה (signals) סיגנלים ניתן לשלוח אליהם סיגנלים בכדי ליידע,בכדי לשלוט על תהליכים .אותם לגבי התרחשות אירועים מיוחדים או לבקש אותם לסיים .kill למעשה זוהי המטרה העיקרית של הפקודה : דוגמא ~> ps PID TTY STAT TIME COMMAND 398 p5 S 0:00 /bin/login -h localhost -p 399 p5 S 0:00 -bash 450 p6 S 0:00 bash 497 p5 S 0:00 vi targil.text 499 p6 S 0:00 xboard 500 p6 S 0:00 gnuchessx 40 5 502 p6 R 0:00 ps ~> kill -s SIGKILL 497 better to type ~> kill -s 9 497 kill סיום תהליכים באמצעות הפקודה .כל משתמש יכול לסיים כל תהליך השייך לו בלבד ~/games> ps PID TTY STAT 398 p5 S 399 p5 S 418 p6 S 420 p5 S 421 p5 R 436 p5 R TIME COMMAND 0:00 /bin/login -h mail.netanya.ac.il 0:00 -bash 0:00 bash 0:00 xboard 4:12 gnuchessx 40 5 0:00 ps ~/games> kill 420 ~/games> ps PID TTY STAT 398 p5 S 399 p5 S 418 p6 S 444 p5 R TIME COMMAND 0:00 /bin/login -h localhost -p 0:00 -bash 0:00 bash 0:00 ps למרות שבקשנו רק את סיום - 8 - 421 למה הסתיים תהליך:שאלה ?420 תהליך - 7 - - Unixמושגי יסוד - Unixמושגי יסוד טבלת סיגנלים נפוצים Terminal hangup Terminal interrupt Terminal quit Process killed Broken pipe Alarm clock interrupt Software termination continue job if stopped interactive stop signal SIGHUP SIGINT SIGQUIT SIGKILL SIGPIPE SIGALARM SIGTERM SIGCONT SIGSTP 1 2 3 9 13 14 15 23 25 כל תהליך יגיב לסיגנלים הנשלחים אליו בהתאם לקוד התוכנית שלו ) .(signal handlersמלבד ממקרים מיוחדים ,תהליך עשוי "לתפוס" את הסיגנל הנשלח אליו ולהתעלם ממנו .שום תהליך אינו יכול להתעלם מהסיגנל ) SIGKILLוגם .(SIGSTPלכן סיגנל זה יכול לסיים כל תהליך המסרב להסתיים בצורה נורמלית ).(SIGTERM קיימים בערך 30סיגנלים שונים. כל מעבד פקודות מודרני מספק למשתמש כלים לשם "בקרת תהליכים" ) .(job controlבמעבד הפקודות bashלמשל ניתן לבצע את הדברים הבאים: Control-Z stop a job, keep it in the background, and return to the shell continue the last stopped job in the background continue the n-th stopped job in the background bg bg %n return to the last stopped job return to the n-th stopped job fg fg %n list of all jobs that are running in the background jobs תרגיל :השתמש בעורך הטקסט viבכדי לערוך 5קבצים פשוטים בו-זמנית .על ידי שימוש בפקודות הנ"ל עבור מעריכה הקובץ החמישי לקובץ השני. משתנים סביבתיים )(environment variables { לכל תהליך יש קבוצה של משתנים סביבתיים. { תהליכים מורישים את המשתנים הסביבתיים שלהם להתהליכים שהם יוצרים. - 9 - - 10 - - Unixמושגי יסוד - Unixמושגי יסוד { הפקודה env מעבד הפקודות ,bashלמשל ,הוא התהליך הראשון שמופעל עבור המשתמש כאשר הוא נכנס למערכת והוא בעל קבוצה חשובה של משתנים סביבתיים. { ניתן לקבל את רשימת המשתנים הסביבתיים הסטנדרטיים של מעבד פקודות זה על ידי הפקודה envאו .printenv ~> env ENV=/home/cs/stud97/u3203903/.bashrc HISTSIZE=1000 HOSTNAME=mail.netanya.ac.il LOGNAME=u3203903 HISTFILESIZE=1000 MAIL=/var/spool/mail/u3203903 TERM=xterm HOSTTYPE=i686 PATH=/usr/local/bin:/bin:/usr/bin:.:/usr/X11R6/bin HOME=/home/cs/stud97/u3203903 SHELL=/bin/bash >PS1=\w USER=u3203903 DISPLAY=mail.netanya.ac.il:0.0 OSTYPE=Linux MM_CHARSET=ISO-8859-1 SHLVL=1 - 11 - משתנים אלה עוברים בירושה לכל תהליך שנוצר באמצעות מעבד הפקודות. ניתן לקבל את התוכן של משתנה סביבתי על ידי הוספת התו $ לפניו .מעבד הפקודות יבצע קודם את החלפת המשתנה בתוכנו, ורק לאחר מכן יפעיל את הפקודה שתתקבל כתוצאה מכך. more $MAIL - read your mail echo $PATH - see your path PATH=$PATH:$HOME/bin cp $MAIL mymail grep -i "Yoram Cohen" $MAIL - 12 - >~ >~ >~ >~ >~ - Unixמושגי יסוד - Unixמושגי יסוד .4מערכת הקבצים לקובץ במערכת Unix בתים ).(bytes אין שום מבנה מיוחד :קובץ הוא סדרת כל קובץ מיוצג במערכת על ידי מספר .index number -מנקודת המבט של מערכת ההפעלה ,המספר הזה הוא הנציג האמיתי של הקובץ. ספריה היא קובץ מיוחד המכיל טבלה המקשרת בין שמות רגילים של קבצים ובין מספריהם .השמות הרגילים מיועדים עבור במשתמשים ,אך מערכת ההפעלה עצמה עובדת עם המספרים שלהם. Directory Contents . .. 5826 7610 13093 raedme.txt 22703 targil8 8391 targil5 6326 mailbox 9273 dany.txt 12091 user1 has: /home/cs/stud97/user1/dir5/phones.txt user2: ~> ln ~user1/dir5/phones.txt mycopy.txt Now user2 has a link to ~user1/dir5/phones.txt !This file has one index number, but two names ישנם כמה סוגי קבצים: א .קבצים רגילים regular les - ב .ספריות directories - ג .קבצים מיוחדים ,fo special les ,device special les - sockets שם קבץ יכול להיות מורכב מלכל היותר 255תווים .התו /אינו יכול להופיע בשם קובץ .תוים נוספים עשויים להיות בעייתיים מאחר שמעבד הפקודות מפרש אותם בצורה מיוחדת .קיימת הבחנה בין אותיות אנגליות גדולות לקטנות. נקודה בתחילת שם קובץ הופכת אותו לקובץ נסתר .בכדי להציג את רשימת כל הקבצים ,כולל הקבצים הנסתרים ,יש להשתמש בפקודה .ls -a dir2 2174 לאותו הקובץ עשויים להיות כמה שמות שונים .למשל שני משתמשים שונים יכולים להיות שותפים לאותו הקובץ: תרגיל :בדוק מה הם הקבצים הנסתרים בספריית הבית שלך ומהו תוכנם? directory8 - 13 - - 14 - - Unixמושגי יסוד - Unixמושגי יסוד מסלולים אבסולוטיים ומסלולים יחסיים :לכל תהליך במערכת Unixיש ספריית עבודה נוכחית אשר בה הוא מתבצע .ניתן לציין מסלולי קבצים יחסית לספריה זו או באופן אבסולוטי. קישור סימבולי הוא קובץ אשר תוכנו הוא מסלול של קובץ או ספריה .הקובץ המקושר עשוי להשתייך למערכת קבצים שונה. ניתן לזהות קישורים סימבוליים על ידי הפקודה .ls -l עץ הקבצים של Unixעשוי להיות מורכב מכמה מערכות קבצים שונות השוכנות בהתקנים שונים -דיסקים קשיחים נפרדים, ,cdromמחיצות שונות של אותו דיסק קשיח ,ואפילו דיסקטים. הנתונים של הקובץ נשמרים בדיסק כסדרה של בלוקים )מספר שלם של יחידות דיסק( .גודל טיפוסי של בלוק הוא 4096בתים. סדרת הבלוקים אינה חייבת להיות רציפה על הדיסק ,ובדרך כלל קבצים עשויים להתפזר בצורה אקראית על הדיסק. סידור כזה נוח למטרות אדמיניסטרציה .למשל ,על מחיצה אחת ניתן להתקין את כל תוכניות המשתמשים ,על מחיצה שניה את כל חשבונות המשתמשים ,וכו .מאוחר יותר ניתן לשדרג את המערכת או לגבות את חשבונות המשתמשים ביתר נוחות. 0 מערכות הקבצים יכולות להיות שונות גם מבחינת המבנה שלהן. למשל ,ניתן לשלב מחיצות של Dosאו Win95בתוך עץ הקבצים של .Unix לא ניתן לבצע קישור )(link בין קבצים השייכים לשתי מערכות קבצים שונות. ~> ln -s /usr/doc/HTML info ~> ln /var/spool/mail/u3203903 MyMail ~> ls -l total 16 1024 Mar 30 18:40 Exams 2 user32 602 drwx--x--x 2497 Mar 30 18:54 MyMail 2 user32 mail -rw-rw---- 247 Mar 30 16:48 file1 1 user32 602 -rw-r--r-- 591 Mar 30 16:49 file2 1 user32 602 -rw-r--r-- 1024 Mar 31 00:47 games 13 Mar 31 11:07 info -> /usr/doc/HTML - 15 - 1 user32 602 ~> cd info בכדי לפתור בעייה זו פותח רעיון הקישור הסימבולי (symbolic ) .linkקישור כזה נקרא לפעמים גם " ,\soft linkוקישור רגיל נקרא ".\hard link קישור סימבולי מתבצע על ידי הפקודה -s 2 user32 602 drwxr-xr-x lrwxrwxrwx ~/info> netscape index.html .ln - 16 - - Unixמושגי יסוד - Unixמושגי יסוד כל קובץ במערכת הקבצים מיוצג על ידי מבנה נתונים שנקרא .inodeבתוך מבנה זה מערכת ההפעלה שומרת את כל הפרטים הנחוצים לה לגבי הקובץ: { גודל הקובץ. { בעל הקובץ ).(uid { { { { )atime (access time זמן יצירתו ).(ctime )mtime (modification time זמן השינוי האחרון ).(mtime )ctime (creation time זמן הגישה האחרון ).(atime { { file type: .(?rwxrwxrwx, regular file, directory, device file, fifo .fo ,device סוג הקובץ :קובץ רגיל ,ספריהle , 12מצביעם ל 12 -הבלוקים הראשונים של הקובץ. links 12 direct pointers to blocks { מצביע לבלוק של מצביעים לבלוקים נוספים של הקובץ. { מצביע לבלוק של מצביעים לבלוקים של מצביעים לבלוקים נוספים של הקובץ. { הקבוצה אליה משתייך בעל הקובץ ).(gid הרשאות )?=-dlsbc { permissions indirect pointer 1 single indirect pointer 1 double indirect pointer 1 triple indirect pointer .triple - 17 - - 18 - - Unixמושגי יסוד - Unixמושגי יסוד כל המבנים האלה מרוכזים בטבלת הקבצים הכללית של המערכת בה מתבצעת התאמה בין מספר הקובץ ) (index numberובין מבנה הנתונים המתאים לו ).(inode מחיצות )(Buers { מחיצה היא שטח בזיכרון המכיל נתונים שנקראו מקובץ או { inodes table gid uid times: מספר הקישורים הקיימים לקובץ. { )size (in bytes inode structure 893 inode structure 1274 inode structure 2810 inode structure 7962 inode structure 14087 inode structure 35811 { { { עומדים להכתב לתוך קובץ. כמעט כל תוכנית בקבצים .למשל: Unix משתמשת במחיצות בכדי לטפל התוכנית cpמשתמשת במחיצה לשם העתקת קובץ. העורך viמשתמש במחיצה גדולה )עבור כל הקובץ!( לעריכת קובץ. מספר המחיצות וגודלם תלוי בתוכנית. הרשאות )(Permissions Permissions נפח מקסימלי של קובץ חשבון פשוט מראה כי הגודל המקסימלי של קובץ בUnix - :4TB השיטה מס בלוקים D SI DI TI 12 הוא other x גודל בלוק הנפח המקסימלי 1K 1 1K 1K 1 1K 1K 1K 1 - 19 - 4K 4K 4K 4K 48KB 4MB 4GB 4TB w user group r w x r x w r משמעות ההרשאות לגבי ספריה: r מאפשר להציג את רשימת הקבצים בספריה .לא מאפשר להוסיף או למחוק קבצים בספריה .לא מאפשר לקרוא או לשנות בקבצים קיימים. - 20 - מושגי יסוד- Unix מושגי יסוד- Unix chmod הפקודה syntax: chmod [-Rcfv] mode file two types of modes: symbolic, numeric BEFORE COMMAND AFTER --------rw------rwxrwxrwx rwxrwxrwx rwxrwx--rwxrwx--rwxr-xr-x rwxrwxrwx rwxrwxrwx rwxrwxrwx chmod chmod chmod chmod chmod chmod chmod chmod chmod chmod rw-rw-rwrw-r--r-rw-rw-rwrw-r-xr-rwxrwxrwx rwxrwxr-rwsr-xr-x rwx--x--x rw-r--r-rwxr-xr-x u g o a + = a=rw file go+r file a-x file g-w,o-wx file o=g file o=g-xw file u+s file 711 file 644 file 755 file user group other all (equivalent to ugo) add permission deny permission set eact pemissions לא מספיק בכדי.ניתן להוסיף או למחוק קבצים בספריה .לאפשר לקרוא או לשנות בקבצים קיימים w בתנאי,מאפשר לבצע כל פעולה על הקבצים בספריה . מאפשר להיכנס לספריה.ששמותיהם ידועים x Set-uid הסיבית .מאפשרת לתוכנית לרוץ עם ההרשאות של בעליה אך כל משתמש,root - שייכת לpasswd התוכנית:דוגמא תוכנית זו עשויה לבצע שינויים בקובץ.אחר רשאי להפעילה ואין הרשאת כתיבהroot - השייך גם הוא ל/etc/passwd בכדי שמשתמש רגיל יוכל בכל זאת לשנות.למשתמשים אחרים הוא מקבל אתpasswd בזמן ההפעלה של הפקודה,את סיסמתו .root ההרשאות של /usr/bin/passwd /etc/passwd chmod u+s program -r-sr-xr-x -rw-r--r-- : הפעלת סיבית זו תתבצע על ידי הפקודה . בשורת ההרשאותx היא תתפוס את המקום של .( של הקבוצהx )במקוםSet-Gid באופן דומה קיימת הסיבית - 22 - - 21 - מושגי יסוד- Unix מושגי יסוד- Unix ספריות חשובות /usr /usr/bin /usr/local/bin /usr/ucb /usr/bin/X11 /bin /sbin /usr/sbin /home /dev /lib /usr/lib /usr/local/lib /usr/src /usr/include /tmp /var /var/log /var/spool root root umask הפקודה מקבלים,gcc אוvi קבצים שנוצרים על ידי תוכניות שונות כגון או, אם הם קבצים רגיליםrw-rw-rw- מהמערכת שורת הרשאות ברירת מחדל זו ניתנת לשינוי. אם הם קובצי הפעלהrwxrwxrwx בדרך כלל קובץ האיתחול של כל מעבד.umask על ידי הפקודה : בצורה סימבולית.umask 022 פקודות כולל את הפקודה umask -S u=rwx,g=r,o=r vi file.txt ls -l file.txt -rw-r--r-user51 603 ... תווים מיוחדים לתאור קבצים * matches any string ? matches any single char [...] matches all chars inside [abg03] matches all chars a, b, g, 0, 3 [a-z] matches all chars from a to z [^a-z] all chars different from a-z [!a-z] all chars different from a-z [a-z0-9] - 24 - - 23 -