25-07-2010, 08:40
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,775
|
|
כי הרגת אותו מיד אחרי שהפעלת אותו
הפתרון הנכון (כנראה...) הוא לחלק את הסקריפט לשני סקריפטים:
אחד שיעשה את ההעתקה, ובסוף ההעתקה ידפיס success ואז יהרוג פרוסס לפי PID ששמור בקובץ שהסקריפט השני ייצר:
קוד:
kill `cat /tmp/copier.pid`
השני שיפעיל את הראשון ברקע עם & ומיד לאחר מכן יריץ tail ברקע וישמור את ה PID שלו לקובץ, נניח עם
קוד:
echo $! > /tmp/copier.pid
על פניו זה אמור לעבוד
קח בחשבון שיש פה בעייה פוטנציאלית של race condition (כתיבה לקובץ ידוע מראש וכל המשמעויות של זה - בייחוד אם המשתמש הכותב הוא root ולמשתמשים אחרים יש גישה ליצור קבצים בספריית היעד של הכתיבה מראש..). אם אמורים לשמור על אבטחת מידע במערכת מפני משתמשיה, צריך פתרון עוד יותר טוב, כמו למשל שימוש ב mktemp כדי ליצור את הקובץ הזמני, ולהעביר אותו כפרמטר לסקריפט השני, שידע באיזה שם קובץ אקראי להשתמש...
|