জিনোম-টার্মিনালে কমান্ড লাইন আর্গুমেন্টের সর্বোচ্চ দৈর্ঘ্য কত?


38

জিনোম-টার্মিনালে কমান্ড লাইন আর্গুমেন্টের সর্বোচ্চ দৈর্ঘ্য কত?

... এবং এমন কোনও সিস্টেমের পরিবেশের পরিবর্তনশীল যা এই মানটির প্রতিবেদন করে?


উত্তর:


32

xargsজানেন। আমার সিস্টেমে,

$ xargs --show-limits
Your environment variables take up 2572 bytes
POSIX upper limit on argument length (this system): 2092532
POSIX smallest allowable upper limit on argument length (all systems): 4096
Maximum length of command we could actually use: 2089960
Size of command buffer we are actually using: 131072

5
এটি প্রসারিত করার জন্য, সীমাটি টার্মিনালে নয়, এটি কার্নেলের মধ্যেও রয়েছে (এবং শেলের মধ্যেও, তবে আমি মনে করি ডিফল্ট শেল (বাশ) এর সীমা কার্নেলের সীমা হিসাবে বেশি)। এছাড়াও, xargsকেবল সীমাটি প্রতিবেদন করার জন্য নয়, এটি প্রায়শই কাজ করার জন্য (প্রাথমিকভাবে) - ম্যান পৃষ্ঠা বা অন্যান্য ডকুমেন্টেশন দেখুন।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

1
আমি এই উত্তরটি পছন্দ করি, বিশেষত "প্রকৃতপক্ষে" আউটপুট "ব্যবহার করতে পারার কারণে ... আমি এর সাথে কিছুটা দ্বিগুণ হয়েছি এবং এই কমান্ডটির সাথে" আসল "মানটি বিচ্ছিন্ন করার জন্য এসেছি ... (সম্ভবত এটির একটি সহজ উপায় আছে, তবে ওহে, এটি কাজ করে এবং একটি স্ক্রিপ্টের জন্য উপযুক্ত:xargs --show-limits --no-run-if-empty < /dev/null 2>&1 |sed -n "/could actually use/s/.*: \\([0-9]\+\\)/\1/p"
পিটার.ও

আশ্চর্যের বিষয় হল, xargs পরিবেশ সীমাটিকে POSIX সীমাতে (POSIX সীমা = ARG_MAX - 2048 (হেডরুম) - envvars) দ্বিগুণ গণনা করছে বলে মনে হচ্ছে।
তোবু

18

উত্তরটি সাইকনফ মান থেকে আসে ARG_MAX। এটি আপনার সিস্টেমে পরীক্ষা করতে:

getconf ARG_MAX

আমার জন্য, এই রিপোর্ট 2097152। আরও তথ্যের জন্য ম্যানপেজটি পরীক্ষা করুন:

man sysconf

এটি একটি প্রোগ্রামের মধ্যে পেতে উদাহরণস্বরূপ:

#include <unistd.h>
...
printf("%ld\n", sysconf(_SC_ARG_MAX));

1
ধন্যবাদ কেসি .. +1; একটি ঝরঝরে উপায় পরম MAX টি পেতে, কিন্তু আমি xargs তার "আসলে প্রাপ্তিসাধ্য" ফ্যাক্টর কারণ পদ্ধতি পছন্দ করেছি ... আমি একটি রান-টাইম মূল্য পর আসলে ছিল (কিন্তু আমি যে :( উল্লেখ না
পিটার .O

0

জিনোম-টার্মিনাল সম্পর্কে আমি সত্যিই জানি না, তবে শেলের কোনও 'নির্দিষ্ট' সীমা নেই, তবে স্ট্যাকের সীমা রয়েছে।

তবে প্রতি-আর্গুমেন্টে হার্ডকোডের সীমা রয়েছে যা 128KB, যদি আপনি 'খুব খুব দীর্ঘ আর্গুমেন্ট ....' ব্যবহার না করেন তবে সমস্যা হওয়া উচিত নয়।

আপনি এখানে এই বিষয়ে আরও পড়তে পারেন:

http://www.mail-archive.com/bug-make@gnu.org/msg05522.html

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