שאלה לגבי סקריפט שירוץ ב cron

  • פותח הנושא kitt
  • פורסם בתאריך

kitt

New member
שאלה לגבי סקריפט שירוץ ב cron

אני מריץ ubuntu 12.04
אני רוצה שכל שעתיים ירוץ סקריפט שיעביר קבצים מshare על מכונת windows
הסקריפט אמור לרוץ כל שעתיים אני מצרף את הcron, את שני הסקריפטים שרצים (כדי שהmv ירוץ כ root) בקובץ txt.
משום מה הcron פועל רק ב 0:02 ולא כל שעתיים, ולא עושה כלום, כאשר אני מריץ משורת הפקודה את sudo fromshared.sh הוא פועל תקין.
מה לא בסדר? למשתמש שמריץ את הסקריפט הגדרתי ב sudoers שהוא לא צריך סיסמא לפקודה mv

מה יכולה להיות הבעיה?
תודה
 

אiהד

New member
שמת לב שלסקריפט השני אין הרשאות ריצה?

לא יודע אם זה קשור, אבל בכל זאת..

-rw-r--r-- 1 root root 54 Sep 15 17:43 moveshared.sh
 

mthree

New member
האם בדקת בתיבת הדואר?

בעת הרצת כל cron job הפלט והשגיאות נשלחים לדואר של המשתמש שקרא ל-cron (בהנחה שה-job לא מפנה את הפלטים לקבצים אחרים). התוכן של הדואר יתן לך כיוון למה שאירע.
 

Dניאל Mור

New member
בנוסף לתגובות המצויינות שכבר קיבלת

ולדרכי הבדיקה\פעולה האפשריות, בדוק האם אינך מקבל הודעה מסוג: "sudo: sorry, you must have a tty to run sudo" בלוגים\דוא"ל וכו'. יכול להיות שגם "שכבת" ה - sudo יוצרת לך בעיה.

בהצלחה.

+דניאל.
 

kitt

New member
אני לא מקבל את השגיאה שאתה מציין, אבל לא

מצליח להישלח דואר.
בלוג נרשם שהסקריפט רץ
 

Expect

New member
עוד כמה דברים לנסות

1. - שורת cron :
* */2 * * * root sudo sh /media/Docs/script/fromshared.sh

2. הגדרת ב-sudoers
שגם לסקריפט עצמו לא יבקש סיסמא ?
לדוגמא
tempuser ALL=(ALL) NOPASSWD: /media/Docs/script/fromshared.sh

3. תעשה רי-דיירקט של sterr
לקובץ ותראה אם הרצה גורמת לשגיאות
 

kitt

New member
כאשר אני מריץ את הסקריפט מטרמינל ע"י

sudo fromshared.sh הוא רץ תקין (פרט למחיקה של המקור, אבל זו בעיה כנראה ב share ממנו אני מעתיק או בגלל הרשאות על ה mount point.
ניסיתי את האפשרויות האחרות, נראה מה יהיה בריצה הבאה.
 

Dניאל Mור

New member
וכיוון נוסף - (אחת הסיבות הפופלאריות ביותר)

לכשלונות בהרצת cron שב - Terminal "עובדים" - ענייני סביבה (משתנים למיניהם, לדוגמא PATH ודומיו) שיכולים לגרום לצרות צרורות. הסבר: כשאתה מריץ משהו דרך cron, הסביבה שלך אינה זהה לסביבה האינטראקטיבית שלך. על-מנת לראות זאת במו-עינך, אתה יכול להריץ set/env דרך cron, להפנות את הפלט לקובץ ולראות על מה מדובר. כהארה כללית: דע שניתן להגדיר משתנים, דהיינו את הסביבה, גם בתוך קובץ ה - cron עצמו.

בהצלחה!

+דניאל.
 

Dניאל Mור

New member
ועוד טיפ (זה בא אצלי בחלקים היום
)

המלצה חמה: הקפד לעבוד עם נתיבים אבסולוטים (מלאים) כשאתה עובד עם cron. בין היתר, פותר 99% מהבעיות שתארתי בהודעה הקודמת. לדוגמא - לגבי ההצעה האחרונה שקיבלת, כשאתה מריץ את sudo בקובץ ה - cron עצמו, השתמש בנתיב המלא של הפקודה sudo (אתה יכול לגלות נתיבים מלאים בעזרת הפקודה which).

בהצלחה שוב.

+דניאל.
 

Dניאל Mור

New member
תחזור להתחלה, קיבלת הרבה רעיונות

הבסיסי ביותר ומה שכבר הוצע לך - בשורת ההרצה עצמה בקובץ ה - cron, הוסף הפניות קלט, גם ל - STDOUT וגם ל - STDERR (האם זה לשני קבצים שונים או אותו קובץ, לא משנה) ובחן את הפלט לאחר שהלוג של cron מראה שה - job אכן רץ. במידה והפקודה נכשלת מסיבה כלשהיא, הפלט ישלח לקבצים הרלוונטים ויהיה לך כיוון חקירה.

בהצלחה.

+דניאל.
 

Expect

New member
תדביק את הקוד של הסקריפט שלך

ואני יכול לסמלץ אותו במעבדה אצלי ולראות מה יכולה להיות עוד הבעיה.
 
למעלה