یه موقع هایی لازمه که یه برنامه رو از طریق ترمینال اجرا کنید و همچنین از همون ترمینال برای نوشتن کامند های دیگه استفاده کنید تو این پست میگم چطور با یک ترمینال چندین نرم افزار رو ران کنید و اونارو مدیریت کنید
برای مثال ما میخوایم برنامه تلگرام رو از طریق دستور توی ترمینال اجرا کنیم؛کدی که استفاده میکنیم:
$ Telegram
با اجرای این دستور برنامه تلگرام برای ما اجرا خواهد شد اما شما نمیتونید تا زمان بسته شدن تلگرام کامند دیگه ای به ترمینالتون تعریف کنید یعنی نرم افزار در پس زمینه اجرا شده
برای اینکه فرایند رو به پشت زمینه انتقال بدین دو راه وجود داره
پس از اجرای برنامه در تلگرام کلید میانبر Ctrl+Z رو فشار بدید تا برنامه به پشت زمینه یا اصطلاحا bg انتقال پیدا کنه
$ Telegram &
مشکلی که ممکنه بوجود بیاد لاگ های اون فرایند یا نرم افزار هست به طور مثال وقتی من پروژه لاراول خودم رو از طریق Artisan اجرا میکنم(حتی اگه برنامه در پشت زمینه اجرا شه) لاگ هایی از طرف Artisan به ترمینال انتقال داده میشن؛ببینید:
این لاگ ها ممکنه یکم اذیت کنه برای برطرف کردنش از لینوکس کمک میگیریم:
در پوشه روت یا ریشه لینوکس پوشه ای وجود داره به نام 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