Русский
Открыть в Telegram

Ветка سلام دوستان

35 сообщений · –
R
سلام دوستان یه موردی ک ذهنمو مشغول کرده راجب مقادیری هستش ک یه دستور یا یه اپ ب stdout پرتاب میکنه و از طریق پایپ ب stdin بعدی داده میشه مثلا دستور cat میاد کل مقدار یک فایل رو یه جا پرتاب میکنه ب stdout cat ./file.lst | bat -A گاهی وقتا هست ک مقادیر زیاد میشه و یه جا پرتاب کردنش زمان بره یا خیلی از دستورات ب صورت تکی مقادیر رو پرتاب میکنن (مثالی حضور ذهن ندارم متأسفانه) سوالم اینکه میخوام تشخیص بدم ک یه دستور یا یه اپ مقادیر رو چجوری پرتاب میکنه ب stdout ؟ یه جا پرتاب میکنه ؟ یا لحظه ای ؟ چون هر چی تعداد پایپ ها بره بالا یا زنجیر وار چندتا دستور کنار هم چیده شه بسته ب این دو حالت زمان تلف میشه (نمیدونم منظورمو خوب رسوندم یا ن)
  1. M
    Ссылка
    нажмите — покажем
    سختش‌ نکن استریم‌ ها هم مثل فایلن‌ وقتی داری یه چیزی رو میدی به stdout مثل اینه‌ که داری میریزی‌ تو یه‌ فایل با همون‌ روند‌ یعنی کامل خونده‌ میشه‌ بعد ریخته‌ یا پرتاب میشه‌ اونجا (stdout) اینجا کامل توضیح داده
    1. R
      (فکر کنم همون حالت استریم ک گفتی مد نظرم باشه) (نمیدونم من منظورمو خوب نرسوندم یا بد متوجه حرفتون شدم) اینی ک گفتی ینی در هر دو صورت چ حالت استریم چ حالت یه جا پرتاب کردن ب پایپ بعدی میرسه خب اونجوری ک من متوجه شدم ترکیب چندتا کامند رو کنار هم بزاریم بعد از دو تا پایپ ب یه حالتی مث انتظار میره تا دستور قبلی کامل کارشو انجام بده خب این وقفه اذیت کننده اس مثلا فرض کنین یه کامند هست ک مدام هر یک ثانیه یه متنی رو پرتاب میکنه و این پایپ میشه ب دستور sort -u خب منطق اینجوری میگه ک این sort باس منتظر بمونه تا کامند قبلی کارش تموم شه بعد سورت کنه بعد بده ب stdout و پایپ شه ب دستور بعدی بنظرت این وقفه طبیعیه یا میشه با یه ترفندی این وقفه رو نداشت ؟
      1. M
        این وقفه طبیعیه دیگه‌ وقتی دستور sort ورودیش‌ رو کامل نگرفته‌ چجوری‌ مقادیر‌ رو کامل و درست مرتب‌ کنه؟ فکر کنم تو میگی هرچی‌ در لحظه خونده‌ شد تحویل sort داده شه و همون‌ لحظه بچینه‌ رو خروجی؟ خب اینکه کاملا غیرمنطقیه‌ و نمیشه‌ باید تمام مقادیر رو داشته باشه‌ کارشو‌ بکنه
        1. R
          درسته ممنون حالا یه راه تشخیص میخوام ک این مورد رو متوجه شم (چیزی ک ب ذهنم میرسه درک عملکرد دستوره )
            1. R
              واسه همین مورد ک ب صورت استریم کار میکنه یا پشت سر هم ینی تشخیص بدم ک ورودی و خروجی یه دستور کدوم دو حالت رو داره ؟ استریمه یا اون حالت دیگه
              1. M
                Фотография
                нажмите — покажем
                اون دستور فایند که گفت خود دستوره که اینجوری کار میکنه با خروجیش ربطی به stdout stdin نداره اگه اینو میخوای تا وقتی که کار یکی تموم نشده دومی نمیتونه کارشو بکنه مثلا اینجا تا وقتی کنترل D زده نشده دستورxrags ls ورودی رو نمیگیره
  2. У
    بستگی داره به دستور اول (سمت چپ pipe) چون تا وقتی اون دستور سیگنال نفرسته Pipe input بسته نمی‌شه، پس وقتی دستوری مثل cat , ... گذاشته میشه دیتای stoud وقتی برای pipe میره که خروجی کامل بشه روی دستوری مثل find مثلاً داستان فرق می‌کنه و می‌تونه بصورت stream هم پردازش بشه
    1. R
      خب یه راه تشخیص میخوام در این مورد ک بقول خودتون ب صورت استریم پردازش میشه یا ن
        1. R
          ببخشید یه سوالی ک الان ب ذهنم اومد اینه ک چجوری میشه حالتی ک پایپ اینپوتش حالا حالا بسته نمیشه رو تبدیل کرد ب حالت استریم ؟؟ یه مثال ساده بخوام بزنم لاگ فایل هستش ک با tail -f ب صورت لایو میتونیم ببینیم ولی قابلیت پایپ کردن یا cat کردنش فقط در لحظه اس یه روند ادامه داری هستش امیدوارم رسونده باشم لپ مطلب رو 😅
          1. У
            متوجه نشدم درستش چیه ولی اگر بخواید ی دستور رو چندین بار خروجی بگیرید watch رو داریم اگر منظورتون خود pipe هست که خروجی سمت چپ رو stream بگیره (همه حال) هیچ option براش ندارید Code it
            1. R
              watcher file -> new line | ... یه همچین چیزی داریم ؟
                1. M
                  من راهی نمیشناسم‌ دقیقا میخوای هرچی در لحظه پرینت شد رو صفحه جای دیگه داشته باشیش؟‌ این کارو با شل نمیدونم چجوری میشه انجام داد ولی با پایتون میشه خودم قبلا نیاز داشتم به چنین مساله ای شبیه به این مورد
                  1. R
                    اسم این روند یا عملیات رو چی میگن فایل واچر ؟ واچر فایل ؟ چی چی ؟ با پایتون هم اوکیه فقط اسمش چیه ؟
                    1. M
                      اسم عملیاتش رو نمیدونم سرچ کن خوندن خروجی یک pts مجزا یا یک پروسه در حال اجرا انگلیسی سرچ کن فارسی چیزی گیر نمیاری البته تو خود شل هم میشه با strace این کارو کرد یعنی اتچ شی به اون پروسه ولی بازم همون آش و همون کاسه ست
                      1. R
                        همون اندک انگلیسی کارمو راه میندازه 😄 فقط باس دنبال سر نخ ها باشم تا ب نتیجه برسم ممنون از راهنماییت
                        1. M
                          راهی پیدا کردی حتما به من بگو
                                1. M
                                  Фотография
                                  нажмите — покажем
                                  اون 393334 ایدی پروسه tail یه آپشن o میخواست
                                  1. S
                                    ببخشید شما جولیا بلدی یه سوال ابتدایی داشتم بپرسم 🙏🏻
                                    1. M
                                      نه من کلا برنامه نویس نیستم جولیا رو یه چنل داشتم منبع خواستن یادم بود فوروارد کردم
                                  2. R
                                    متوجه نشدم اومدی یه چندتا مورد رو ب فایل a اضافه کردی و با tail ب صورت لایو تماشا میکنی داستان اون strace چیه ؟
                                    1. M
                                      اون strace اتچ میشه به پروسه tail و هرچی که قراره تو خروجی استاندارد write کنه رو میریزه تو فایل log میتونی آپشنی بدی بهش که فقط نتیجه خروجی رو بریزه به جای ساختار کامل syscall تو این حالت نمیشه اما بازم مشکلی نیست میتونی خروجی رو خودت با " کات کنی به فیلد ۲ که مقدار پرینت شده ست
              1. I
                من دقیق متوجه خواسته نشدم... اما اگر هدف اینه که $ command_A | command_B دستور A به مدت طولانی در حال خروجی دادن باشه و ما بخوایم موقع کار کردنش پایپ کنه به B، فقط کافیه از unbuffer استفاده کنید.

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем