mhsn
mhsn
خواندن ۱ دقیقه·۵ سال پیش

اجرای برنامه در پشت زمینه ترمینال

اجرای برنامه در پشت زمینه تلگرام
اجرای برنامه در پشت زمینه تلگرام


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



برای مثال ما میخوایم برنامه تلگرام رو از طریق دستور توی ترمینال اجرا کنیم؛کدی که استفاده میکنیم:

$ Telegram

با اجرای این دستور برنامه تلگرام برای ما اجرا خواهد شد اما شما نمیتونید تا زمان بسته شدن تلگرام کامند دیگه ای به ترمینالتون تعریف کنید یعنی نرم افزار در پس زمینه اجرا شده

برای اینکه فرایند رو به پشت زمینه انتقال بدین دو راه وجود داره

پس از اجرای برنامه در تلگرام کلید میانبر Ctrl+Z رو فشار بدید تا برنامه به پشت زمینه یا اصطلاحا bg انتقال پیدا کنه

  1. قبل از اجرای برنامه به انتهای آن یک & اضافه کنید تا برنامه در بکگراند اجرا شود مثال
$ Telegram &

مشکلی که ممکنه بوجود بیاد لاگ های اون فرایند یا نرم افزار هست به طور مثال وقتی من پروژه لاراول خودم رو از طریق Artisan اجرا میکنم(حتی اگه برنامه در پشت زمینه اجرا شه) لاگ هایی از طرف Artisan به ترمینال انتقال داده میشن؛ببینید:

لاگ ها در ترمینال(KDE)
لاگ ها در ترمینال(KDE)


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

در پوشه روت یا ریشه لینوکس پوشه ای وجود داره به نام dev که داخل اون فایلی به نام null وجود داره

حالا این فایل برای چیه؟هر چیزی که به این فایل ارسال بشه گم و گور میشه و یعنی یه جور سطل آشغال مطلقه که داده هارو به هیچی تبدیل میکنه

برای اینکه ما لاگ هامون رو به dev/null انتقال بدیم باید از دستور

"<&"

استفاده کنیم:

$ Telegram &> /dev/null

با اجرای این دستور همه لاگ ها به null منتقل میشن و شما لاگی دریافت نمیکنید

حالا با & در آخر کامند دستور رو در پشت زمینه اجرا میکنیم:

$ Telegram &> /dev/null &

و شما براحتی میتونید بدون دخالت اون نرم افزار از ترمینال خودتون لذت ببرید :)

برای مدیریت برنامه های در حال اجرا در پشت زمینه از دستور jobs استفاده میکنیم که پشت هر کامند اجرا شده یک شماره که از 1 شروع میشه وجود داره:

[1]+ Running Telegram &> /dev/null &

حالا میتونید با دستور

kill %1

اون پراکسس رو ببندید(Terminte)

با Jobs -l هم میتونید PID اون فرایند رو دریافت کنید

امیدوارم مفید باشه.

امضا:MoHsEn


لینوکسترمینالبرنامه نویسیاسکریپتbash
برنامه نویس وب و Native،گاهی نوازنده گیتار
شاید از این پست‌ها خوشتان بیاید