💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۱۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۶ ali khosravi
استفاده از & برای اجرا کردن دستورات در background
جامعه لینوکس و دواپس ایجاد شده در ۰۶ تیر ۱۴۰۱

f20e-Screenshot from 2022-06-27 19-53-47.pngسلام وقت بخیر

همین طور که می‌بینید دستور اجرا شده با استفاده از & در background اجرا میشه اما بلافاصله بعد از اجرا در خط بعد بصورت خودکار یه دستور دیگه در foreground اجرا میشه !!!!!

چرا این اتفاق می‌افته؟

سلام دوست عزیز

به شکل زیر تست کنید

nohup php artisan schedule:run > /dev/null 2>&1 &
محمد گازری ۰۶ تیر ۱۴۰۱، ۱۵:۲۸

مرسی بابت راهنماییتون آقای گازری

البته من بیشتر دوست داشتم دلیل این موضوع رو متوجه بشم اینکه چرا دستور بصورت کامل به background منقل نشد و یه بخشی از دستور بصورت خودکار روی foreground داره اجرا میشه

ali khosravi ۰۶ تیر ۱۴۰۱، ۱۵:۳۳

چون بستگی به نوع خروجه داره که لاراول برای این مورد درنظر گرفته که داخل foreground نمایش داده بشه

موفق باشید ?

محمد گازری ۰۶ تیر ۱۴۰۱، ۱۵:۴۰

مرسی بابت پاسختون اما باز هم قانع کننده نبود

ما دو حالت داریم یا دستور بصورت پیشفرض تو foreground اجرا میشه یا با استفاده از & می‌ره به background

سوال من اینه چرا اینجا بخشی از دستور داره تو background و بخش دیگه تو foreground اجرا میشه

اینکه خروجی دستور چی باشه که نباید تاثیری بر این موضوع داشته باشه

خیلی از دستورات دیگه هم هستن که مثلا پیغامی رو چاپ میکنن و یا اتفاقات دیگه که همه با & میرن به background اما اینجا به اتفاق دیگه داره می‌افته

ali khosravi ۰۶ تیر ۱۴۰۱، ۲۰:۲۹

علی عزیز ما مدل‌های مختلف خروجی (stdout, stderror) در ترمینال داریم که هنوز آموزشش داده نشده

این مورد هم حتی برای ابزارهایی مثل curl هم پیش میاد (دلیل curl اطلاعات diagnostic هست) که با ریدایرکت مدل‌های مختلف stdouput‌ها حل میشه

در تصویر زیر با اینکه ما خروجی رو ریدایرکت کردیم باز اطلاعاتی در ترمینال نمایش داده میشه

59b7-JRUSk.png

این جلسه میانی بصورت آزمایشی فعال و غیر فعال شده

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

موفق باشید ??

بهترین پاسخ
محمد گازری ۰۶ تیر ۱۴۰۱، ۲۳:۵۳