লিনাক্সের নীচে পাইপকে কীভাবে রেট-সীমাবদ্ধ করবেন?


63

এমন কোন ফিল্টার আছে যা আমি লিনাক্সে পাইপের রেট-সীমাবদ্ধ করতে ব্যবহার করতে পারি? যদি এটি বিদ্যমান থাকে তবে এটিকে রেট-সীমা বলি, আমি কোনও টার্মিনালে টাইপ করতে সক্ষম হতে চাই

cat /dev/urandom | rate-limit 3 -k | foo

Foo এর স্ট্যান্ডার্ড ইনপুটটিতে 3 কেবিট / কম হারে এলো স্ট্যান্ড প্রেরণ করতে foo এর স্ট্যান্ডার্ড ইনপুটটিতে।


1
আমি এখানে জিজ্ঞাসা করেছি কারণ আমি এটি কোনও প্রোগ্রামে ব্যবহার করতে চাই, সমস্যা সমাধানের জন্য নয়। তবে এটি এখানে আমার প্রথম প্রশ্ন তাই আমি যদি কোনও ত্রুটি করি তবে আমি ক্ষমা চাই।

1
বিটিডাব্লু, উপরের বিড়ালের অপ্রয়োজনীয় ব্যবহার, আপনি করতে পারেন rate-limit 3k < /dev/urandom | foo
ডিএমকেকে

উত্তর:



17

আমি বলব যে আপনার কাছে সেই সরঞ্জামটি থাকলে জুলিয়ানো সঠিক উত্তর পেয়েছে , তবে আমি এটিও সুপারিশ করব যে এটি একটি ঝরঝরে কে ও আর স্টাইলের অনুশীলন: কেবলমাত্র বিড়ালের একটি বিশেষ সংস্করণ লিখুন যা stdinআউটপুট থেকে একবারে একটি চরিত্র পড়ে reads প্রতিটি আগে stdoutএবং তারপর usleepএগিয়ে চলার আগে। স্ট্যান্ডার্ড আউটপুট আনফফার করতে ভুলবেন না , বা এটি বরং ঝাঁকুনির সাথে চলবে।

আমি এটি বলেছি slowcat.c:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(int argc, char**argv){
  int c;
  useconds_t stime=10000; // defaults to 100 Hz

  if (argc>1) { // Argument is interperted as Hz
    stime=1000000/atoi(argv[1]);
  }

  setvbuf(stdout,NULL,_IONBF,0);

  while ((c=fgetc(stdin)) != EOF){
    fputc(c,stdout);
    usleep(stime);
  }

  return 0;
}

এটি সংকলন এবং চেষ্টা করুন

$ ./slowcat 10 < slowcat.c

17
এখন আমি নতুন চরিত্রগুলির জন্য অতিরিক্ত বিলম্বের সাথে সাথে প্রতিটি চরিত্রের জন্য একটি "ক্ল্যাক" শব্দের একটি ডিফল্ট গতি 40 সিপিএসে সেট করার ভয়াবহ প্রলোভন অনুভব করছি।
ডিএমকেকে

যদি আমি আমার লিনাক্স বাক্সগুলিতে স্পিকার সংযুক্ত করে থাকি তবে আমি জিগগলের জন্য those রেট্রো টার্মিনাল স্ক্রিনসেভারগুলির সাথে এটি ব্যবহার করব।
বেনি ম্যাকনি

4

থ্রোটল মনে হয় এটির জন্য বিশেষভাবে ডিজাইন করা হয়েছে । যেমন

cat /dev/urandom | throttle -k 3 | foo

1
আমি এটির সাথে একমত হব, তবে উবুন্টুর জন্য কোনও মানক প্যাকেজ বলে মনে হচ্ছে না। আমি এটির জন্য উত্স কোডও দেখছি না। আপনি এই ইউটিলিটিটি কোথায় পেতে পারেন কেউ জানেন?
বেনিয়ামিন লেইনওবার

1
@ বেনজামিনলাইনবার এটি এমন ওয়েবসাইটের মতো দেখায় যা সাধারণত কোডটি হোস্ট করে অফলাইনে, তবে ফ্রিবিএসডি তাদের এফটিপি সার্ভারে উপলব্ধ 1.2 এর উত্স রয়েছে । আপনি এটি ডাউনলোড করতে হবে & ./configure && make
পোনকডুডেল

3

এখানে একটি সমস্ত শেল সমাধান রয়েছে যা ইনপুটটি হারাবে না (সিফ। মাইকের এস থেকে হেড -1 ধারণা):

hexdump -c /dev/urandom | (lines=0; while read line; do echo $line; if [ $((++lines % 10)) -eq 0 ]; then sleep 1; fi; done) | cat -n

2

দ্রুত এবং নোংরা, সব সময় সমস্ত শেল (আমার কাছে সেন্টোস এবং পিভি ডিফল্টরূপে আসে না):

hexdump -c /dev/urandom | while true; do head -1; sleep 1; done | \
your_program_that_reads_stdin  -your_argument_list

... নোংরা কারণ যদিও এটির হার সীমিত, এটি এমন হারে ফেটে গেছে যা আমি আপনাকে বলতে পারি না :-)। আপনি যখন এক জায়গা থেকে অন্য জায়গায় ডেটা প্রেরণ করতে চান তখন এটি কার্যকর it's

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.