انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


ارائه ۲۴٫۱۰ اوبونتو منتشر شد 🎉

نویسنده موضوع: اجرای سریالی چند اسکریپت  (دفعات بازدید: 3006 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین IGLOO

  • Full Member
  • *
  • ارسال: 104
  • جنسیت : پسر
اجرای سریالی چند اسکریپت
« : 20 آبان 1394، 11:57 ق‌ظ »
سلام
سه تا اسکریپت دارم که اینها رو به صورت دستی اجرا میکنم یعنی هر کدام کارشان تمام شد بعدی رو اجرا میکنم
حالا میخواهم به صورت اتوماتیک پشت سر هم اجرا بشوند به این شرط که حتما اسکریپت قبلی بدون ارور تمام شده باشه
سوالم اینجاست که:
از کجا میتوانم مطمئن شوم که اسکریپت با موفقیت تمام شده؟
دوم: تا وقتیکه اولی تموم نشده دومی اجرا نشه؟


آفلاین احسان فعالپور

  • Sr. Member
  • *
  • ارسال: 408
  • جنسیت : پسر
پاسخ : اجرای سریالی چند اسکریپت
« پاسخ #1 : 20 آبان 1394، 12:42 ب‌ظ »
اسکریپت اول && اسکریپت دوم && اسکریپت سوم
عضو ارشد فدراسیون بیکاران ایران FBI

آفلاین Nelliel

  • High Hero Member
  • *
  • ارسال: 2151
  • جنسیت : پسر
  • Nelliel Tu Odelschwanck
پاسخ : اجرای سریالی چند اسکریپت
« پاسخ #2 : 20 آبان 1394، 02:03 ب‌ظ »
اسکریپت اول && اسکریپت دوم && اسکریپت سوم

احسان آقا این مال دستورات ترمینال هست اگر اسکریپت‌های ایشون همه مثلا 20 خطی و توی فایل‌های متنی مختلف باشند دیگه جوابگو نیست تا حدودی پس دوست عزیز شما هم اول اسکریپت‌های تون را پیوست کنید لطفا.
طرفدار انیمه و مانگا - کاربر آرچ لینوکس

آفلاین koosha

  • Hero Member
  • *
  • ارسال: 734
  • جنسیت : پسر
پاسخ : اجرای سریالی چند اسکریپت
« پاسخ #3 : 20 آبان 1394، 03:20 ب‌ظ »
احسان آقا این مال دستورات ترمینال هست اگر اسکریپت‌های ایشون همه مثلا 20 خطی و توی فایل‌های متنی مختلف باشند دیگه جوابگو نیست تا حدودی پس دوست عزیز شما هم اول اسکریپت‌های تون را پیوست کنید لطفا.
میتونند از حلقه استفاده بکنند .
GNU/Linux
Debian8
I3 WM

آفلاین احسان فعالپور

  • Sr. Member
  • *
  • ارسال: 408
  • جنسیت : پسر
پاسخ : اجرای سریالی چند اسکریپت
« پاسخ #4 : 20 آبان 1394، 06:47 ب‌ظ »
چرا جوابگو نیست،میشه بیشتر توضیح بدید؟
مثلا اسکریپت اول چندین خط باشه توی یه فایل جداگونه،اگه همه کامندهایی که توش هستن درست اجرا بشن پس مقدار ؟$ هم باید درستی انجام کار رو برسونه دیگه.
من خودم تا حالا تست نکردم،شایدم نشه.
عضو ارشد فدراسیون بیکاران ایران FBI

آفلاین Nelliel

  • High Hero Member
  • *
  • ارسال: 2151
  • جنسیت : پسر
  • Nelliel Tu Odelschwanck
پاسخ : اجرای سریالی چند اسکریپت
« پاسخ #5 : 20 آبان 1394، 07:43 ب‌ظ »
چک لیست

حلقه

شرط درست بودن

ترتیب


اسکریپت‌هات را طبق بالا تنظیم کن تا کارت راه بیفته دقیقا مثل کاری که علیرضا با زنیتی انجام داده اومده با if گفته اگه شد برو بعدی اگه نشد نوتیفای بده و بسته, شو شما هم شرط بذار اگه شد برو چک لیست بعدی اگه درست جرا نشد حلقه را ادامه نده و نرو چک لیست بعدی و ترتیبش هم با خودت.

@Ehsan-faal

احسان جان توی ترمینال حرف شما صحیح هست مثلا :

pstree > out && cp out out.backup
اما یه اسکریپت مثلا 1000 خطی که یه عالمه سینتکس داره را نمیشه اینجوری کرد اصلا اسکریپت‌ها با دستور /.و sh ران میشن.

مگه اینکه بگی :

sh fs1 && fs2 && fs3
که اینم میگه اگه اجرا شد برو بعدی نمیگه اگه درست اجرا شد برو بعدی .

فکر کن اسکریپت نوشتی تعداد پروسه‌های ران شده با فلان یوزر را ضرب در دو کنه بده و وقتی رانش میکنه مثلا میگه پروسه‌ها اینا هستند اما عمل ضرب را انجام نمیده در این صورت اسکریپت ران شده اما درست کار نکرده.

اون دستور که دادم فقط میگه اگه خود اسکریپت ران نشد نرو بعدی مثلا میزنی دستور را میگه توی دایرکتوی هوم فایل fs1 نیست و نمیره بعدی ولی اگه بود و رانش کرد میره بعدی و دیگه چک نمی کنه که اسکریپت چی میخواد و چی گفته و ...


ویرایش :

میایم یه تست میزنیم که چطور عمل میکنه ( خودم انجام دادم و نشد )

با دستور زیر یه فایل شل درست میکنیم :

nano fs1.sh
اکنون که ادیتور نانو باز شده خطوط زیر را میزاریم توش :
#!/bin/bash
mkdir 2
cd 2
cp 1 2

اسکریپت میگه توی جایی که هستی پوشه‌ی 2 را بساز و بعد برو توی پوشه‌ی دو و فایل 1 را یک کپی ازش بگیر بذار توی فایل 2.

این اسکریپت مشکل دارد چون فایل 1 ساخته نشده.

یه اسکریت دیگه هم می‌نویسیم :

nano fs2.sh
و خطوط زیر را توش میذارم :
#!/bin/bash
mkdir 1

میگه یه پوشه با اسم یک بساز.

حالا به جفتشون دسترسی ران میدیم :

sudo chmod u+x fs1.sh fs2.sh
حالا با دستور زیر رانش میکنیم :

sh fs1.sh && sh fs2.sh
ترمینال پیامی میده که میگه :

نقل‌قول
no such a file or directory

این پیام را که برای فایل 1 میده مربوط به اسکریپت مشکل دار فایل fs1.sh هست. حالا کافی با دستور زیر ببینیم که آیا پوشه‌ی 1 ساخته شده است یا نه اگه ساخته شده باشد در این شرایط && اصلا کار ساز نیست.

ls
خب توی خروجی 1 دیده میشه پس حرف من تا اینجا درسته. ;D ;D

حالا کافی پوشه‌ی یک را با اسکریپت اول پاک کنیم و دستور را دوباره اجرا کنیم :

sudo rm -R fs1.sh 1
و دوباره :

sh fs1.sh && sh fs2.sh
حالا اگه پوشه‌ی یک ساخته شده باشه بازم حرف من درست بوده که مربوط به اجرا شدن خود فایل هست .

ls
خودتون ببنید که پوشه‌ی 1 ساخته نشده چون اسکریپت اول ران نشده. ;D ;D ;D

« آخرین ویرایش: 20 آبان 1394، 08:23 ب‌ظ توسط حسین حیدری »
طرفدار انیمه و مانگا - کاربر آرچ لینوکس

آفلاین nixoeen

  • ناظر انجمن
  • *
  • ارسال: 4872
  • جنسیت : پسر
  • masoft قدیم
پاسخ : اجرای سریالی چند اسکریپت
« پاسخ #6 : 20 آبان 1394، 08:06 ب‌ظ »
احسان آقا این مال دستورات ترمینال هست اگر اسکریپت‌های ایشون همه مثلا 20 خطی و توی فایل‌های متنی مختلف باشند دیگه جوابگو نیست تا حدودی
فرقی نداره، همون && جوابگوست.

آفلاین Nelliel

  • High Hero Member
  • *
  • ارسال: 2151
  • جنسیت : پسر
  • Nelliel Tu Odelschwanck
پاسخ : اجرای سریالی چند اسکریپت
« پاسخ #7 : 20 آبان 1394، 08:15 ب‌ظ »
نقل‌قول
فرقی نداره، همون && جوابگوست.

پست قبلیم را ویرایش کردم لطفا دستورات بالا را بزنید و خروجی‌ها را اینجا بذارید.

من امتحان کردم و نشد اسکریپت‌ها ران میشن اما شرطی بر درست بودنشون نیست.

و $$ زمانی اسکریپت بعدی را ران میکنه که اسکریپت قبلی ران شده باشه حالا چه درست و چه غلط.
« آخرین ویرایش: 20 آبان 1394، 08:18 ب‌ظ توسط حسین حیدری »
طرفدار انیمه و مانگا - کاربر آرچ لینوکس

آفلاین احسان فعالپور

  • Sr. Member
  • *
  • ارسال: 408
  • جنسیت : پسر
پاسخ : اجرای سریالی چند اسکریپت
« پاسخ #8 : 20 آبان 1394، 08:29 ب‌ظ »
حسین من تست کردم و جواب همونی بود که فکر میکردم:

ehsan@ehsan-SVF152190X:~/stuff$ cat script1
#!/bin/bash
mkdir firstFolder
cd firstFolder
cp ../some.txt  .

ehsan@ehsan-SVF152190X:~/stuff$ cat script2
#!/bin/bash
touch some.txt

و محتویات فعلی:

ehsan@ehsan-SVF152190X:~/stuff$ ls -lh
total 8.0K
-rwxrwxr-x 1 ehsan ehsan 64 Nov 11 20:24 script1
-rwxrwxr-x 1 ehsan ehsan 27 Nov 11 20:25 script2

و حالا اجرا:

ehsan@ehsan-SVF152190X:~/stuff$ ./script1 && ./script2
cp: cannot stat ‘../some.txt’: No such file or directory

و نتایج:

ehsan@ehsan-SVF152190X:~/stuff$ ls -lh
total 12K
drwxrwxr-x 2 ehsan ehsan 4.0K Nov 11 20:28 firstFolder
-rwxrwxr-x 1 ehsan ehsan   64 Nov 11 20:24 script1
-rwxrwxr-x 1 ehsan ehsan   27 Nov 11 20:25 script2
ehsan@ehsan-SVF152190X:~/stuff$ cd firstFolder/
ehsan@ehsan-SVF152190X:~/stuff/firstFolder$ ls -lh
total 0

همه چیز هونطور که گفتم بود.
عضو ارشد فدراسیون بیکاران ایران FBI

آفلاین Nelliel

  • High Hero Member
  • *
  • ارسال: 2151
  • جنسیت : پسر
  • Nelliel Tu Odelschwanck
پاسخ : اجرای سریالی چند اسکریپت
« پاسخ #9 : 20 آبان 1394، 08:35 ب‌ظ »
آقا احسان منم همین را گفتم  :)

گفتم میره اسکریپت بعدی اما ارور خود اسکریپت را نمیفهمه :
نقل‌قول
ehsan@ehsan-SVF152190X:~/stuff$ ./script1 && ./script2
cp: cannot stat ‘../some.txt’: No such file or directory

ببین ارور داده اما اخرش رفته دستور بعدی و first folder را ساخته :

نقل‌قول
drwxrwxr-x 2 ehsan ehsan 4.0K Nov 11 20:28 firstFolder

اما ایشون میخوان همه‌ی اسکریپت‌ها بدون ارور اجرا شن و اگر اروری در کار بود نره سر اسکریپت بعدی که در اینجا میشه از
then exit;
fi

که میگه اگه نشد برو بیرون, استفاده کرد.
طرفدار انیمه و مانگا - کاربر آرچ لینوکس

آفلاین Риал Краесис

  • High Hero Member
  • *
  • ارسال: 1178
  • جنسیت : پسر
  • !!! I FIGHT FOR THE USERS
پاسخ : اجرای سریالی چند اسکریپت
« پاسخ #10 : 20 آبان 1394، 08:56 ب‌ظ »
حق هم با حسین هست و هم با نیکسون!
ببینید درسته && میره سراغ دستور بعد (تا اینجا نیکسون درست میگه)اما اگر اسکریپت اول ارور بده این دستور بدون توجه به ارور میره اسکریپت دوم رو اجرا میکنه.(اینجاست که حسین درست میگه)


If you do not like Arch use Gentoo and just shut up
 and If you do not like Gentoo use Arch and shut up
finaly If you do not like either use Ubuntu and shut the f*** up

آفلاین احسان فعالپور

  • Sr. Member
  • *
  • ارسال: 408
  • جنسیت : پسر
پاسخ : اجرای سریالی چند اسکریپت
« پاسخ #11 : 20 آبان 1394، 09:00 ب‌ظ »
؟؟؟؟
اسکریپت اول اجرا شده و فلدر رو ساخته و وقتی به قسمتی رسیده که قرار بوده کپی انجام بشه با ارور متوقف شده.
همین ارور باعث شده اسکرپت دوم هم اجرا نشه.
همونطور که میبینید فایل تکست که قرار بوده با اسکریپت دوم بوجود بیاد الان وجود نداره.

حسین اینکه اون فلدر ساخته شده و فایل تکست نه حرفم رو تایید میکنه دیگه.
عضو ارشد فدراسیون بیکاران ایران FBI

آفلاین Риал Краесис

  • High Hero Member
  • *
  • ارسال: 1178
  • جنسیت : پسر
  • !!! I FIGHT FOR THE USERS
پاسخ : اجرای سریالی چند اسکریپت
« پاسخ #12 : 20 آبان 1394، 09:04 ب‌ظ »
؟؟؟؟
اسکریپت اول اجرا شده و فلدر رو ساخته و وقتی به قسمتی رسیده که قرار بوده کپی انجام بشه با ارور متوقف شده.
همین ارور باعث شده اسکرپت دوم هم اجرا نشه.
همونطور که میبینید فایل تکست که قرار بوده با اسکریپت دوم بوجود بیاد الان وجود نداره.

حسین اینکه اون فلدر ساخته شده و فایل تکست نه حرفم رو تایید میکنه دیگه.
تفاوت مورد من با شما در اینه که شما اسکریپت دومت وابسته به اسکریپت اول هست.
اما اگه اشتباه نکنم این دوستمون اسکریپت هاشون به هم وابسته نیست.


If you do not like Arch use Gentoo and just shut up
 and If you do not like Gentoo use Arch and shut up
finaly If you do not like either use Ubuntu and shut the f*** up

آفلاین احسان فعالپور

  • Sr. Member
  • *
  • ارسال: 408
  • جنسیت : پسر
پاسخ : اجرای سریالی چند اسکریپت
« پاسخ #13 : 20 آبان 1394، 09:12 ب‌ظ »
خب این هم هیچ تفاوتی ایجاد نمیکنه ها.
بالفرض اسکریپت اول هون قبلی باشه ولی توی دومی فقط یه دستور echo داشته باشیم که یه چیزی بنویسه واسمون.
باز هم به محض گرفتن ارور کل اجرا متوقف میشه و دومی هم اجرا نمیشه.
ضمن اینکه من وابستگی دومی به اولی رو که شما ذکر کردی متوجه نمیشم،چه وابستگی ای دارن؟
عضو ارشد فدراسیون بیکاران ایران FBI

آفلاین IGLOO

  • Full Member
  • *
  • ارسال: 104
  • جنسیت : پسر
پاسخ : اجرای سریالی چند اسکریپت
« پاسخ #14 : 20 آبان 1394، 09:27 ب‌ظ »
ممنون از دوستان
اسکریپتهایی که دارم مربوط به خاموش و روشن شدن و  پشتیبان گیری یک سرویس هستند منتها در سه فایل داخل اسکریپت موقع اجرا ارورهایی داریم که ممکنه صدمه به روال کار نزنه و در نهایت کارش رو انجام بده! مثل وقتهایی که سیستم میاد بالا  ارورهایی مشاهده می‌کنیم ولی سیستم بالا میاد
حالا میخوام بین این ارورها فرق بزارم و مطمئن شوم که ارور مهمی نبوده یا برعکس مهم هاشو داشته باشم و از ادامه کار جلوگیری کنم.
برای همین دنبال یه راهکاری هستم شبیه $? اما میخواهم کنترل بیشتری داشته باشم
« آخرین ویرایش: 20 آبان 1394، 09:29 ب‌ظ توسط IGLOO »