ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
SFאורח · ·
 

הודעה פורסם: 01/09/2018 - 15:52
נושא ההודעה: "רענון" תיקיה שנמחקה ונוצרה מחדש

לא משהו נפוץ במיוחד, אבל יוצא לי לפעמים להיות במצב כזה - פתוחים לי שני טרמינלים, באחד אני עושה:

קוד:

$ cd ~/foo


ולאחר מכן אני עושה בשני:

קוד:

$ rm -rdf ~/foo
$ mkdir ~/foo
$ touch ~/foo/bar


ואז כשאני חוזר לראשון ועושה:

קוד:

$ ls


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

תודה.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
mksoftלא בפורום כעתSite Admin ת.הצטרפות: 17/03/2002 · הודעות: 10514 · מיקום: כדור הארץ
 

הודעה פורסם: 02/09/2018 - 14:12
נושא ההודעה:

הכי קל:
קוד:
cd .

_________________
הבלוג שלי
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צפריראורח · ·
 

הודעה פורסם: 02/09/2018 - 14:50
נושא ההודעה:

אני קצת פוחד משימוש ב־. בהקשר הזה ותמיד משתמש בנתיב המלא:
קוד:

cd $PWD
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
borsoodלא בפורום כעת ת.הצטרפות: 05/01/2007 · הודעות: 306 ·
 

הודעה פורסם: 03/09/2018 - 07:15
נושא ההודעה: Re: "רענון" תיקיה שנמחקה ונוצרה מחדש

SF :
אני מניח שמה שקורה זה שהטרמינל "יודע" איפה הוא לפי inode או איזה מזהה קאנוני של התיקייה, ואז למרות ששם הנתיב שבו הוא כביכול נמצא קיים, המקום הפיזי שבו הוא חושב שהוא כבר לא.
השאלה היא קודם כל - האם ההסבר הזה נכון, או מה ההסבר המדויק?
והשאלה השניה היא - האם יש דרך "לרענן" מלבד לעשות cd .. ולהכנס מחדש?
תודה.

לא הטרמינל אלא המעטפת (shell) מחזיקה את ה CWD כקובץ פתוח בתוך מבני הנתונים הפנימיים של התהליך. לכן גם כשאתה עושה rmdir או rm -r, הקובץ (מדריך directory) הישן לא נמחק בפועל את שהמעטפת לא תסגור אותו מה שיקרה בפקודת cd, אבל לתהליכים אחרים אין גישה אליו. מבחינה זו אין הבדל בין מדריך או קובץ רגיל.
כדי לרענן צריך לגרום למערכת לסגור את המדריך על ידי פקודת cd כמו שכתבת.
קוד:
cd .
בדרך כלל לא יעבוד.
הערה: במערכות קבצים מבוססות רשת כמו NFS או CIFS ההתנהגות היא שונה.
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
צפריראורח · ·
 

הודעה פורסם: 03/09/2018 - 18:47
נושא ההודעה:

לא בדיוק ה־shell. מדובר (גם) על ליבת המערכת.

קוד:

$echo $$
19022
$ mkdir /tmp/test_dir
$ cd /tmp/test_dir
[test_dir] $ ls -lia .
total 4
  1774493 drwxr-xr-x  2 tzafrir  tzafrir     6 Sep  3 18:28 .
134296306 drwxrwxrwt 24 root     root     4096 Sep  3 18:28 ..

ועכשיו משהו שאפשר להריץ גם ממסוף אחר:
קוד:

$ ls -lia /proc/19022/cwd/
total 4
  1774493 drwxr-xr-x  2 tzafrirc tzafrirc    6 Sep  3 18:28 .
134296306 drwxrwxrwt 24 root     root     4096 Sep  3 18:29 ..
$ rmdir /tmp/test_dir
$ ls -lia /proc/19022/cwd/
total 0
$ ls -l /proc/19022/cwd
lrwxrwxrwx 1 tzafrir  tzafrir  0 Aug 26 06:24 /proc/19022/cwd -> '/tmp/test_dir (deleted)'
$ mkdir /tmp/test_dir
$ ls -lia /proc/19022/cwd
7399647 lrwxrwxrwx 1 tzafrir  tzafrir  0 Aug 26 06:24 /proc/19022/cwd -> '/tmp/test_dir (deleted)'

כמוכן cd .‎ עבד במקרה הזה (מערכת קבצים: xfs).
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. אורח [SF]
  2. mksoft
  3. אורח [צפריר]
  4. borsood
  5. אורח [צפריר]