اطلاعیه

بستن
No announcement yet.

ریستارت اتوماتیک یک پروسس

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    ریستارت اتوماتیک یک پروسس

    سلام وقتتون بخیر
    من تازه سه چهار ماهه که دارم رو سرورای لینوکس کار میکنم و امشب از طرف مدیرم یه تسک دریافت کردم که

    نیاز دارم که فلان پروسه با pid منحصر به فردش در صورت داون شدن خود به خود ریست شه.
    امکانش هست کمکم کنید؟

    #2
    سلام. ورود تون رو به دنیای لینوکس تبریک میگم. در ادامه کار براتون آرزوی موفقیت دارم. نمیدونم درست متوجه شدم یا نه؟ شما میخواید یک پروسس رو مانیتور کنید و در صورت down شدن اون سرویس رو ریستارت کنید؟ برای مشاهده اینکه هر سرویسی از چه پراسسی داره استفاده میکنه شما میتونید از دستور ps استفاده کنید. مثلا میخواید ببینید سرویس آپاچی از چه pid داره استفاده میکنه شما ابتدا باید با دستور ps شماره پراسس آیدی اونو در بیارید :
    کد PHP:
    # ps -aux | grep apache
    OR
    # ps -aux | grep httpd 
    برای سناریویی که گفتید به روش های مختلف میشه انجام داد. ولی ساده ترین راهش اینه که هر چند ثانیه یکبار وضعیت سرویس رو با دستور systemctl status service_name بررسی کنید اگر فعال باشه که میزنه active و اگر غیرفعال باشه یه چیز دیگه میزنه سپس یه اسکریپت شرطی بنویسید که در صورتیکه وضعیت سرویس تون برابر با active نبود بره یه دور دستور systemctl start service_name رو بزنه که سرویس اتوماتیک استارت بشه. البته به نظرم دنبال پیدا کردن مشکل باشید که چرا سرویس میخوابه و اونو برطرف کنید خروجی بهتری داره. 90 درصد مواردی که گفتم آموزش هاش توی انجمن هست. کمی تلاش کنید اگر مشکلی داشتید بفرمایید که بررسی کنیم.


    من قلبی بزرگ با رویاهایی بزرگ دارم. دانسته هایمان را با هم به اشتراک بگذاریم.

    کامنت


      #3
      ممنونم از لطفتون.
      علت inactive شدن پروسسم که مشخصه اونم اینه که فشار که روی سرور زیاد میشه پروسس ناخوداگاه داون میشه و طبیعیه چون منابع سخت افزاری لازم رو نداریم و مجبوریم بسازیم
      دقیقا دنبال اون شرط میگردم که خودتون توضیح دادید.هر چند ثانیه بررسی کنه وضعیت پروسس رو و اگه داون بود خودش ریست بده

      کامنت


        #4
        سلام وقت شما بخیر. سناریو شما نیاز به یک شل اسکریپت دارد. بعد توی اسکریپت تون ابتدا وضعیت سرویس رو با دستور systemctl مانیتور کنید و خروجی دستور رو با استفاده از دستور awk فیلتر کنید، بعد یه شرط باید تعریف کنید که اگر وضعیت سرویس برابر با مثلا active نبود دستور systemctl restart service رو اجرا کنه. در آخر هم باید اسکریپت رو بذارید توی کرون جاب لینوکس تون که هر چند دقیقه یکبار اجرا بشه.

        بخش اول کار نیاز به اسکریپت نداره، فقط باید وضعیت سرویس رو به دست بیارید. من در اینجا وضعیت سرویس استریسک رو بررسی کردم بعد با دستور grep خط Active که وضعیت سرویس رو نمایش میده رو به تنهایی میارم توی خروجی و در دستور آخر هم گفتم برو ستون دوم رو که وضعیت سرویس در اونجا نوشته شده رو خروجی بگیر.
        کد PHP:
        root@Asterisk:~# systemctl status asterisk
        ● asterisk.service LSBAsterisk PBX
        Loaded
        loaded (/etc/init.d/asteriskgenerated)
        Activeactive (runningsince Sat 2020-12-05 13:14:45 +03301 weeks 2 days ago
        Docs
        man:systemd-sysv-generator(8)
        Process1133 ExecStart=/etc/init.d/asterisk start (code=exitedstatus=0/SUCCESS)
        Tasks68 (limit4689)
        Memory106.8M
        CGroup
        : /system.slice/asterisk.service
        └─1185 
        /usr/sbin/asterisk

        Dec 05 13
        :14:45 Asterisk systemd[1]: Starting LSBAsterisk PBX...
        Dec 05 13:14:45 Asterisk asterisk[1133]: Starting Asterisk PBXasterisk.
        Dec 05 13:14:45 Asterisk systemd[1]: Started LSBAsterisk PBX.
        root@Asterisk:~#
        root@Asterisk:~# systemctl status asterisk | grep Active
        Activeactive (runningsince Sat 2020-12-05 13:14:45 +03301 weeks 2 days ago
        root
        @Asterisk:~#
        root@Asterisk:~# systemctl status asterisk | grep Active | awk '//{print $2}'
        active
        root
        @Asterisk:~
        حالا شما باید همین دستورات رو ببرید توی قالب اسکریپت و خروجی دستور بالا رو بندازید توی یک متغییری و بگید اگر این متغیر خروجیش هرچی به غیر از عبارت active بود، دستور ریستارت کردن سرویس مورد نظرتون رو اجرا کنه.

        کامنت

        درباره انجمن منطقه لینوکسی ها

        انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

        شبکه های اجتماعی

        ایمیل مدیریت

        Habili@linux-zone.org

        در حال انجام ...
        X