লিনাক্স বিট সংখ্যা (32 বা 64) ফেরত দিতে?


13

একটি লিনাক্স কমান্ড কী যে আমি 32 বা 64 প্রোগ্রামের মাধ্যমে প্রসেসরটি 32 বিট বা bit৪ বিট প্রসেসর কিনা তা চিহ্নিত করতে ফিরে যেতে পারি?


1
@ সাথ্যা: এটি হুবহু ডুপ্লিকেট নয়, কারণ লিনাক্স না হলেও প্রসেসরটি -৪-বিট হতে পারে।
গিলস 'এস-অশুভ হওয়া বন্ধ করুন'

উত্তর:


13
  • আপনি দেখতে পাচ্ছেন যে সিপিইউ 64৪-বিট, ৩২-বিট, বা flagsলাইনটি ভিতরে পরীক্ষা করে উভয়ের পক্ষে সক্ষম /proc/cpuinfo। আপনার আর্কিটেকচার পরিবারের সম্ভাব্য পতাকাগুলি আপনাকে জানতে হবে। উদাহরণস্বরূপ, i386 / amd64 প্ল্যাটফর্মে, lmপতাকাটি amd64- সক্ষম সিপিইউগুলি সনাক্ত করে (সিপিইউগুলির যে পতাকাটি কেবল i386-কেবল নয়)।

    grep -q '^flags\s*:.*\blm\b' /proc/cpuinfo    # Assuming a PC
    
  • আর্কিটেকচারটি জিজ্ঞাসা করে কার্নেলটি 32-বিট বা 64-বিট কিনা তা আপনি দেখতে পাচ্ছেন uname -m। উদাহরণস্বরূপ, i[3456]8632-বিট যখন x86_6464-বিট হয়। নোট করুন যে বেশ কয়েকটি আর্কিটেকচারে একটি -৪-বিট কার্নেল ৩২-বিট ইউজারল্যান্ড প্রোগ্রাম চালাতে পারে, সুতরাং 64৪ uname -m-বিট কার্নেল দেখানো হলেও , guarantee৪-বিট লাইব্রেরি উপলব্ধ থাকার কোনও নিশ্চয়তা নেই।

    [ "$(uname -m)" = "x86_64" ]    # Assuming a PC
    

    নোট যে uname -mএকটি "ভার্চুয়ালাইজড" মান ফিরে আসতে পারে। উদাহরণস্বরূপ, লিনাক্সের অধীনে, আপনি যদি setarch i386 bashএকটি এমডি 64 সিস্টেমে চালিত হন এবং আপনি uname -mসেই ব্যাশ থেকে চালান তবে আপনি uname -mপ্রতিবেদন দেখতে পাবেন i386। এটি কার্যকরভাবে আপনাকে ভান করতে দেয় যে আপনি "32-বিট সিস্টেমে" রয়েছেন যদিও কার্নেলটি 64-বিট এক, উদাহরণস্বরূপ ক্রস-সংকলন স্থাপন না করে 32-বিট প্রোগ্রামগুলি সংকলন করা।

  • কমান্ডের সাহায্যে এলএসবি সমর্থন জিজ্ঞাসা করে আপনি ইউজারল্যান্ডে কী উপলব্ধ তা দেখতে পাচ্ছেন lsb_release। আরও স্পষ্টভাবে, সমর্থিত এলএসবি বৈশিষ্ট্যগুলির lsb_release -sএকটি- :বিযুক্ত তালিকা মুদ্রণ করে। প্রতিটি বৈশিষ্ট্যের ফর্ম রয়েছে । উদাহরণস্বরূপ, একটি ix86 সি লাইব্রেরির উপলব্ধতা দ্বারা নির্দেশিত হয় , যখন amd64 এর জন্য অ্যানালগ থাকে। প্রতিটি বিতরণ সমস্ত উপলভ্য এলএসবি মডিউল যদিও ঘোষণা করে না, তাই এটি সনাক্তকরণযোগ্যের চেয়ে আরও বেশি উপলভ্য হতে পারে।module-version-architecturecore-2.0-ia32core-2.0-amd64

  • আপনি উন্নয়নের জন্য পছন্দের শব্দের আকারটি সন্ধান করতে পারেন (একটি সি সংকলক উপলব্ধ আছে তা অনুমান করে) একটি 5-লাইন সি প্রোগ্রাম সংকলন করে যা প্রিন্ট করে sizeof(void*)বা sizeof(size_t)


3
গনুহ সিস্টেম অন (এবং অন্যদের যদি তারা এটি আছে), আপনি কি করতে সক্ষম হওয়া উচিত getconf WORD_BITবা getconf LONG_BITপরিবর্তে (তুচ্ছ, এবং পোর্টেবল যদিও এটা হয়) আপনার নিজের সি প্রোগ্রাম কম্পাইল করার থাকার।
পরবর্তী বিজ্ঞপ্তি না দেওয়া পর্যন্ত বিরতি দেওয়া হয়েছে।

@ ডেনিস: সংশোধন করার জন্য ধন্যবাদ। আমি getconfএখানে ব্যবহারের কথা ভাবিনি । এটি নীতিগতভাবে দুর্দান্ত লাগছে, তবে এটি নিশ্চিত করা শক্ত যে আপনি যে নির্দিষ্ট সি সংকলকটি ব্যবহার করছেন তার প্রয়োগ রয়েছে, যদি একের বেশি থাকে (সাধারণত জিসিসি / আইসিসি বা লিনাক্স, জিসিসি / নেটিভ সিসি অন্য কোথাও থাকে)। একটি প্রমিত সিস্টেমে getconfপ্রয়োগ করা উচিত c89বা c99মধ্যে $(getconf PATH), কিন্তু বাস্তবে আমি কাউকে একটি বিকল্প ইনস্টল সম্পর্কে চিন্তা চাই ccযা বিক্রেতা দ্বারা দৌড়ে c89মোড়কের।
গিলস 'তাই মন্দ হওয়া বন্ধ করুন'

একটা হল .Regex অনুপস্থিত: grep '^flags.*:.*\blm\b' /proc/cpuinfo। এছাড়াও এটি কেবল -qপতাকা ছাড়াই আমার পক্ষে কাজ করে
বাইফ-ফেরেডি

@ বাইফ-ফেরডি এটি অনুপস্থিত ছিল না .: আমার কাছে "শূন্য বা আরও বেশি জায়গা" ছিল তবে আসলে একটি ট্যাব রয়েছে। ট্যাবগুলিকেও অনুমতি দেওয়ার জন্য আমি রেজিপ্লেক্স পরিবর্তন করেছি। সঙ্গে -qপতাকা, কোন আউটপুট, কিন্তু কমান্ডের প্রস্থান অবস্থা বলে আপনি কিনা পতাকা উপস্থিত। আপনি যদি আউটপুট চান তবে -qপতাকাটি সরান ।
গিলস 'খারাপ হয়ে যাওয়া বন্ধ করুন'

@ গিলস আহ আমি -qপতাকা সম্পর্কে জানতাম না । টাই, এখন কাজ করে :)
বাইফিডে

3

আপনি 64-বিট চালাচ্ছেন কিনা তা দেখতে আপনি ব্যবহার করতে uname -aএবং সন্ধান করতে পারেন x86_64। আর কিছু (যতদুর আমি জানি) এবং আপনার 32 বিট দৌড়াচ্ছে অথবা আপনি যেমন অ পিসি হার্ডওয়্যার হয় alpha, sparcঅথবা ppc64


3
আর কিছু এবং আপনার 32 বিট, বা অ- পিসি হার্ডওয়্যার (যেমন চালাচ্ছেন alpha, sparc64, ppc64, ...
গিলেজ 'SO- স্টপ হচ্ছে মন্দ'

@ গিলস: ধন্যবাদ, আমি সেই অনুযায়ী আমার উত্তরটি সম্পাদনা করেছি।
ওফার্স


1

টাইপ করুন:

uname -a

যদি আপনি পান তবে x86_64 GNU/Linuxআপনি একটি 64 বিট কার্নেল চালাচ্ছেন। যদি আপনি এর মতো কিছু পান তবে আপনি i386/i486/i586/i686সম্ভবত 32 বিট কার্নেল চালাচ্ছেন


1
এটাই প্রশ্ন নয়।
harrymc

1

getconf সর্বাধিক সিস্টেম কল ব্যবহার করে:

$ strace getconf LONG_BIT | wc -l
253

$ strace arch | wc -l
280

$ strace uname -m | wc -l
281

$ strace grep -q lm /proc/cpuinfo | wc -l
301
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.