انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: afrod در 11 اردیبهشت 1392، 01:28 قظ
-
وقتی اوبونتو روشن میشه، میخوام برنامه a که در استارت آپ قرار گرفته، اجرا بشه و برنامه b منتظر پایان کار برنامه a باشه و a به محض اینکه exit شد (به هر دلیلی حتی اگر crash کرد و بسته شد)، برنامه b شروع بشه و با بشته شدن برنامه b، برنامه c شروع بشه.
برنامه گرافیکی برای start up که این کار از عهده اش اگر وجود نداره، از چه دستورهای ترمینالی و کجا باید استفاده کرد؟
-
میتونی از اسکرپت بش استفاده کنی.
/path/to/program/a || /path/to/program/b || /path/to/program/c
یا این کد C رو کامپایل کنی و بزاری توی startup
int main()
{
system("/path/to/program/a");
system("/path/to/program/b");
system("/path/to/program/c");
}
فقط یادم نیست تابع system توی کدوم سرفایل هست. یه سرچ بزن.
-
فقط یادم نیست تابع system توی کدوم سرفایل هست. یه سرچ بزن.
#include<stdlib.h>
-
با تشکر از vandu ی عزیز.
اگه اشتباه نکنم. اون کد C همه برنامه ها رو با هم اجرا میکنه. برای اینکه به ترتیب اجرا بشن باید از توابع fork و exec استفاده بشه. چون یه خورده سخته پیشنهاد میکنم از همون اسکریپت استفاده کنی.
-
یه اسکریپت بساز، مجوز اجرایی بهش بده، و بعد دستورات رو توی یه خط بذار توش و بینشون && بذار. از پایپ (||) هم استفاده نکن چون برای این کار نیست. قطعه کد سی هم جواب مبده اما نیازی به این پیچیدگی نیست.
-
میتونی از اسکرپت بش استفاده کنی.
/path/to/program/a || /path/to/program/b || /path/to/program/c
همین کد را در crontab (http://wiki.ubuntu.ir/CronHowto) استفاده می کنم اما وقتی برنامه a (که برنامه تورنت transmission (http://forum.ubuntu.ir/index.php/topic,63947.0.html)) است را می بندم، انتظار دارم b اجرا شود که اجرا نمیشه ](*,)
a: برنامه گرافیکی تورنت
b: دستور ترمینال aria2c
c: برنامه گرافیکی Gshutdown
یه اسکریپت بساز، مجوز اجرایی بهش بده، و بعد دستورات رو توی یه خط بذار توش و بینشون && بذار. از پایپ (||) هم استفاده نکن چون برای این کار نیست. قطعه کد سی هم جواب مبده اما نیازی به این پیچیدگی نیست.
با && هم در crontab به نتیجه نرسیدم!
در اسکریپت چطوری باید از crontab استفاده کنم؟ دستورها باید زمانبندی شده اجرا بشه.
-
از چیزها با دلیل خاص استفاده کن. مثلا «و» و «یا» اصولا مال اینکار نیستن. بین دستورها «;» بذار. برای چنین کاری هم معوله همه رو در یک بش اسکریپت بنویسی (هر دستور در یک خط مجزا) و اونو اجرا کنی.
-
با ; درست شد :D
برای چنین کاری هم معوله همه رو در یک بش اسکریپت بنویسی (هر دستور در یک خط مجزا) و اونو اجرا کنی.
اگر هر دستور در خط جدا باشه، دستورها به هم وابسته می شوند؟
در بش اسکریپت با چه دستوری زمانبندی اجرا میشه؟