লিনাক্সে এমন কোনও সিস্টেম কমান্ড রয়েছে যা শেষের প্রতিবেদন করে?


30

কেউ কি এমন কোনও কমান্ড সম্পর্কে জানেন যা রিপোর্ট করে যে কোনও সিস্টেম বিগ এন্ডিয়ান বা লিটল এন্ডিয়ান, বা পার্ল বা কমান্ডের স্ট্রিং ব্যবহার করে এই জাতীয় কৌশলটি সেরা বিকল্প?

পার্ল

# little
$ perl -MConfig -e 'print "$Config{byteorder}\n";'
12345678

# big
$ perl -MConfig -e 'print "$Config{byteorder}\n";'
87654321

ওড | awk

# little
$ echo -n I | od -to2 | awk 'FNR==1{ print substr($2,6,1)}'
1

# big
$ echo -n I | od -to2 | awk 'FNR==1{ print substr($2,6,1)}'
0

তথ্যসূত্র


odপদ্ধতিতে কী ভুল ? এটি সহজ এবং সর্বত্র কাজ করে। আপনার প্রশ্নের বডিটি পড়ার আগে আমি এটিই ভেবেছিলাম।
গিলস 'অশুভ হওয়া বন্ধ করুন'

@ গিলস - আসলে কিছুই নেই, হ্যাকের মতো কিছুটা লাগে (কমপক্ষে আমার কাছে)। সত্য যে এটি সোলারিস + এআইএক্সের মতো অন্যান্য সিস্টেমে পোর্টেবল হিসাবে উপস্থিত হবে বলে মনে হয়, তবে মনে হয়েছিল যে কোনও সিস্টেমের এন্ডিয়ানিয়েন্সটি 32-বিট বনাম 64-বিটের মতো আরও স্পষ্টভাবে নির্ধারিত হওয়া উচিত, তাই আমি কিছুটা অবাক হয়েছিলাম যে এটি ছিল না ' টি। নতুন lscpuপদ্ধতিটি আমি প্রত্যাশায় আসব আরও বেশি।
slm

শব্দের আকারের তুলনায় এন্ডিয়েনসনেসটি নির্ধারণ করা সহজ, কারণ আপনার এমন প্ল্যাটফর্মগুলি খুঁজে পেতে খুব কঠিন সময় আসবে যেগুলি হয় লিড-এন্ডিয়ান বা বিগ-এন্ডিয়ান নয় (কমপক্ষে পূর্ণসংখ্যার জন্য, ভাসমানগুলি অন্য বিষয়) যেখানে প্রচুর মিশ্রণ রয়েছে 32-বিট এবং 64-বিটের মধ্যে (সিপিইউ, কার্নেল, ইউজারল্যান্ড, একটি প্রদত্ত প্রক্রিয়া)।
গিলস 'অশুভ হওয়া বন্ধ করুন'

@ গিলস - হ্যাঁ বিশ্বের সম্পর্কে আমার দৃষ্টিভঙ্গি সম্ভবতঃ সংক্ষিপ্ত হয়েছে যেহেতু আমি প্রাথমিকভাবে সোলারিস বা লিনাক্সের সাথেই বড় হয়েছি। এর বাইরেও তেমন কিছু নয়।
slm

odপদ্ধতির সবচেয়ে ওপেন সিস্টেম কাজ করা উচিত না শুধুমাত্র লিনাক্স ব্যবহার করে মামলাটি হবে যা lscpu। সুতরাং "সেরা" কী তা পরিস্থিতিগুলির উপর নির্ভর করে।
ম্যাটবিয়ানকো

উত্তর:


40

lscpu

lscpuকমান্ড শো (অন্যান্য বিষয় ছাড়াও):

Byte Order:            Little Endian

সিস্টেমগুলি এটিতে কাজ করার জন্য পরিচিত

  • CentOS 6
  • উবুন্টু (12.04, 12.10, 13.04, 13.10, 14.04)
  • ফেডোরা (17,18,19)
  • আর্কলিনাক্স 2012+
  • লিনাক্স মিন্ট দেবিয়ান (অতএব দেবিয়ান পরীক্ষাও ধরে নিচ্ছেন)।

সিস্টেমগুলি এটিতে কাজ না করার জন্য পরিচিত

  • ফেডোরা 14
  • CentOS 5 (এর কারণে RHEL5 ধরে নিচ্ছেন)

কেন distros জুড়ে আপাত পার্থক্য?

অনেক খোঁড়াখুঁজির পরে আমি কেন তা জানতে পারলাম। দেখে মনে হচ্ছে সংস্করণ ইউজ-লিনাক্স সংস্করণ ২.১৯ প্রথম সংস্করণ যা বৈশিষ্ট্যটি অন্তর্ভুক্ত করেছিল যেখানে lscpuআপনাকে আপনার সিস্টেমের এন্ডিয়ানিয়েন্সের রিপোর্টিং আউটপুট দেখায়।

পরীক্ষা হিসাবে আমি আমার ফেডোরা 14 সিস্টেমে 2.18 এবং 2.19 উভয় সংস্করণ সংকলন করেছি এবং নীচের আউটপুটটি পার্থক্যগুলি দেখায়:

ইউজ-লিনাক্স 2.18

$ util-linux-ng-2.18/sys-utils/lscpu 
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
CPU(s):                4
Thread(s) per core:    2
Core(s) per socket:    2
CPU socket(s):         1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 37
Stepping:              5
CPU MHz:               1199.000
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
NUMA node0 CPU(s):     0-3

ইউজ-লিনাক্স 2.19

$ util-linux-2.19/sys-utils/lscpu 
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    2
Core(s) per socket:    2
CPU socket(s):         1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 37
Stepping:              5
CPU MHz:               2667.000
BogoMIPS:              5320.02
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              3072K
NUMA node0 CPU(s):     0-3

উপরের সংস্করণগুলি kernel.org ওয়েবসাইট থেকে ডাউনলোড করা হয়েছিল ।


ধন্যবাদ ডেভিড, আমি যখন এই ফাইলটি গ্রেপ করছিলাম তখন আমি মিস করেছি। অবশ্যই অন্ধ হয়ে যেতে হবে 8-)
slm

আমি কেন এটি মিস করলাম তা দেখছি। আমার ফেডোরা 14 সিস্টেমের lscpuমানটি এটি দেখায় না, তবে আমার উবুন্টু 12.10 সিস্টেমটি করে। আপনি যদি আপত্তি না করেন তবে আমি আপনার উত্তরটি নিতে পারি এবং এটি প্রতিটি সিস্টেমে বিভিন্ন পদ্ধতি এবং পদ্ধতিগুলির জন্য এটি বিভাগে বিভক্ত করতে পারি।
slm

@ এসএমএম শিওর, এগিয়ে যান রেফারেন্সের জন্য, lscpuআর্চলিনাক্সেও কাজ করে।
ডেভিড ব্যাগারম্যান

আর্কের কোন সংস্করণ?
slm

আর্কের সংস্করণ নেই; এটি একটি রোলিং রিলিজ ...
জেসনওয়ারিয়ান

6

ডেবিয়ান / উবুন্টু সিস্টেমে আমি একটি পদ্ধতি খুঁজে পেয়েছি তা হল এই আদেশটি চালানো:

$ dpkg-architecture
DEB_BUILD_ARCH=amd64
DEB_BUILD_ARCH_BITS=64
DEB_BUILD_ARCH_CPU=amd64
DEB_BUILD_ARCH_ENDIAN=little
DEB_BUILD_ARCH_OS=linux
DEB_BUILD_GNU_CPU=x86_64
DEB_BUILD_GNU_SYSTEM=linux-gnu
DEB_BUILD_GNU_TYPE=x86_64-linux-gnu
DEB_BUILD_MULTIARCH=x86_64-linux-gnu
DEB_HOST_ARCH=amd64
DEB_HOST_ARCH_BITS=64
DEB_HOST_ARCH_CPU=amd64
DEB_HOST_ARCH_ENDIAN=little
DEB_HOST_ARCH_OS=linux
DEB_HOST_GNU_CPU=x86_64
DEB_HOST_GNU_SYSTEM=linux-gnu
DEB_HOST_GNU_TYPE=x86_64-linux-gnu
DEB_HOST_MULTIARCH=x86_64-linux-gnu

এটি আপনার সিস্টেমের সমন্বিত স্থাপত্যের উপর নির্ভর করে আপনাকে ছোট বা বড় শব্দগুলি দেখায়:

$ dpkg-architecture | grep -i end
DEB_BUILD_ARCH_ENDIAN=little
DEB_HOST_ARCH_ENDIAN=little

6

ব্যবহার python:

$ python -c "import sys;print sys.byteorder"
little

বা:

printf '\1' | od -dAn
1

যেখানে 1সামান্য এন্ডিয়ান এবং 00256বড় এন্ডিয়ানের জন্য।

বা একটি সংক্ষিপ্ত perlসংস্করণ ব্যবহার :

$ perl -V:byteorder
byteorder='12345678';

5

একটি পসিক্স শেল এবং সি সমাধান:

cat << EOF > foo.c

#include <endian.h>
#include <stdio.h>

int main() {
  printf("Byte Order: ");
  if (BYTE_ORDER == LITTLE_ENDIAN) 
    printf("little");
  else {
    if (BYTE_ORDER == BIG_ENDIAN)
      printf("big");
    else
      printf("unknown");
  }
  printf(" endian.\n");
  return 0;
}
EOF

gcc -D__USE_POSIX foo.c
./a.out

1

আপনি যদি এমন কোনও সিস্টেমে থাকেন যা না থাকে endian.h:

#include <stdio.h>

int main() {
  int test = 0;
  char *bytes = (char *) &test;
  *bytes = 0x1;

  printf("Byte Order: ");
  if (test == 1){
    printf("little");
  }
  else {
      printf("big");
  }
  printf(" endian.\n");
  return 0;
}

ভ্যাক্স মিডল-এন্ডিয়ানদের জন্য আর কোন প্রেম নেই?
ট্রিগার করুন

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