जब मैं एक बिल्ली को / proc / cpuinfo में करता हूं तो यह क्लफ़ुशसाइज़ के साथ एक रेखा दिखाता है: 64
इसका मतलब यह है कि मेरी गिरी 64 बिट्स में चल रही है?
जब मैं एक बिल्ली को / proc / cpuinfo में करता हूं तो यह क्लफ़ुशसाइज़ के साथ एक रेखा दिखाता है: 64
इसका मतलब यह है कि मेरी गिरी 64 बिट्स में चल रही है?
जवाबों:
uname -a
आपको कर्नेल बताएगा - अंत बिट आपको आर्किटेक्चर बताता है।
दो उदाहरण:
मेरा मैक:
Darwin Mac.local 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386
मेरी ड्रीमहोस्ट होस्टिंग:
Linux ecco 2.6.24.5-serf-xeon-c6.1-grsec #1 SMP Tue Oct 7 06:18:04 PDT 2008 x86_64 GNU/Linux
i386 = 32 बिट
x86_64 = 64 बिट
uname -m
आपको वह आर्किटेक्चर देगा जिसे आप कर्नेल के लिए संकलित करते हैं। यदि यह प्रिंट करता है i686
तो आपकी कर्नेल 32 बिट है, यदि x86_64
यह 64 बिट है, तो मान लें कि आपके पास इंटेल / एएमडी चिप है।
i386
पुराने 32-बिट प्लेटफ़ॉर्म पर भी हो सकता है (और मैंने कुछ पैकेजों को संकलित करने के लिए भी देखा है i586
- यह सुनिश्चित नहीं है कि अगर यह कभी भी आउटपुट होगा uname
, हालांकि)
uname -m
आपको आर्किटेक्चर देता है कि कर्नेल इस विशेष प्रक्रिया को उजागर करता है, न कि कर्नेल की मूल वास्तुकला। इस लिंक को देखें ।
uname -m
करता है । यदि यह नहीं है, तो सबसे अधिक संभावना है कि व्यवस्थापक वास्तव में-वास्तव में आपको विश्वास करना चाहते हैं कि आप उस अन्य वास्तुकला पर हैं और आपका सर्वश्रेष्ठ शर्त यह स्वीकार करना है कि वह जानता है कि वह क्या कर रहा है। यदि आप व्यवस्थापक हैं और आप के साथ खिलवाड़ कर रहे हैं setarch
तो आप पहले से ही बेहतर जानते हैं।
setarch
आप इस तरह की स्क्रिप्ट को बिना किसी विचार के लागू कर सकते हैं कि यह uname -m
कुछ अलग करने का कारण बनता है। यह संभव है, शायद यह भी संभावना है कि इस प्रकार के मुद्दे ओपी से क्यों पूछ रहे हैं।
init
सोचता है कि यह 32-बिट है: इसके लिए स्थिति 32-बिट उपयोगकर्ताओं के साथ 64-बिट कर्नेल है। कई संकलन प्रणालियां uname -m
संकलक झंडे को निर्धारित करने के लिए निर्भर करती हैं , उदाहरण के लिए GDB की, उन्हें नकली व्यक्तित्व के साथ आपूर्ति की जानी चाहिए। लेकिन कुछ अन्य यूजरस्पेस एप्लिकेशन अभी भी जानना चाह सकते हैं कि इसमें किस प्रकार का कर्नेल है (जैसे कुछ निम्न-स्तर की जरूरतों के लिए), व्यक्तित्व की परवाह किए बिना।
मुझे लगता है कि सबसे सटीक तरीका है
getconf LONG_BIT
यहाँ यह बिल्कुल दिखाता है 64
इस टिप पर पाया गया
getconf
पैकेज libc-bin से है (ubuntu पर)
यदि आप अपने सिस्टम (सीपीयू, कर्नेल और कोर ओएस सॉफ्टवेयर) के बारे में एक आसान लेकिन विस्तृत रिपोर्ट चाहते हैं और न केवल कर्नेल तो यहां एक छोटी सी बैश स्क्रिप्ट है जो आपको उत्तर तेजी से देगा।
यदि आप 32 बिट / 64 बिट सीपीयू और एस / डब्ल्यू की ख़ासियत के बारे में पर्याप्त जानते हैं तो यह आसान है। यदि आप ज्यादा नहीं जानते हैं और सोचते हैं कि आपका "सिस्टम" या तो 32 बिट या 64 बिट है, तो यह आपको यह पता लगाने में मदद करेगा कि सच्चाई अधिक जटिल हो सकती है (आपके सिस्टम के कुछ हिस्से 64 बिट हो सकते हैं जबकि अन्य 32 बिट) आपको भ्रमित किए बिना।
फिर से यह स्क्रिप्ट (और उत्तर) शाब्दिक प्रश्न के लिए नहीं है "मुझे कैसे पता चलेगा कि मेरा लिनक्स कर्नेल 32 या 64 बिट में चल रहा है?" लेकिन उन लोगों के लिए भी जो अपने सीपीयू और कोर ओएस एसडब्ल्यू के आर्क को जानना चाहते हैं।
ये एक असामान्य मामले के लिए उदाहरण हैं:
You have a 64 bit CPU
Your kernel reports that the architecture is 32 bit
Your /sbin/init process is 64 bit
Your C compiler is configured to produce 32 bit executables
You have a 64 bit CPU
Your kernel reports that the architecture is 32 bit
If you are not the admin he can make a 64bit kernel report 32bit (see man setarch)
In this case he has (because we have 64bit programs)
Your /sbin/init process is 64 bit
Most other core OS programs will probably be 64 bits also.
You may use the following command to check a specific program.
file -L /path/to/program
Your C compiler is configured to produce 32 bit executables
(Note that a 64bit compiler may be setup to produce 32bit code)
ये 4 लाइनें सभी आवश्यक जानकारी देती हैं।
grep -w 'lm' /proc/cpuinfo > /dev/null && echo "You have a 64 bit CPU" || echo "You have a 32 bit CPU"
echo "Your kernel reports that the architecture is $(uname -m|sed -e 's/x86_64/64 bit/' -e 's/i.86/32 bit/')"
echo "Your /sbin/init process is $(file /sbin/init|sed -e 's/^.* \(32\|64\) bit.*$/\1bit/')"
echo "Your C compiler is configured to produce $(getconf LONG_BIT) bit executables"
यदि आप इस विषय पर अनुभव नहीं रखते हैं और एक अजीबोगरीब मामले का सामना कर रहे हैं तो यह स्क्रिप्ट बहुत सारे विवरणों को छापती है और उपयोगी है।
#!/bin/bash
# collect system info
grep -w 'lm' /proc/cpuinfo > /dev/null && CPU=64 || CPU=32
ARCH=$(uname -m|sed -e 's/x86_64/64/' -e 's/i.86/32/')
INIT=$(file -L /sbin/init|sed -e 's/^.* \(32\|64\)-bit.*$/\1/')
COMPILER=$(getconf LONG_BIT)
# if all values are the same we set UNIFORM="YES"
! echo "$CPU $ARCH $INIT $COMPILER" | grep -q "$CPU $CPU $CPU $CPU" && UNIFORM="NO" || UNIFORM="YES"
# report to the user
echo "You have a $CPU bit CPU"
echo "Your kernel reports that the architecture is $ARCH bit"
if [ "$UNIFORM" = "NO" ] && [ "$ARCH" = "32" ] ; then
echo " If you are not the admin he can make a 64bit kernel report 32bit (see man setarch)"
if [ "$INIT" = "64" ] || [ "$COMPILER" = "64" ] ; then
echo " In this case he has (because we have 64bit programs)"
else
echo " We don't see such signs so you most likely run a 32bit kernel"
echo " (A 64bit CPU can run 32bit kernels)"
fi
fi
echo "Your /sbin/init process is $INIT bit"
if [ "$CPU" = "64" ] ; then
echo " Most other core OS programs will probably be $INIT bits also."
echo " You may use the following command to check a specific program."
echo " file -L /path/to/program"
fi
if [ "$UNIFORM" = "NO" ] && [ "$INIT" = "32" ] ; then
echo " (Note that a 64bit kernel may start a 32bit init process)"
fi
echo "Your C compiler is configured to produce $COMPILER bit executables"
if [ "$UNIFORM" = "NO" ] && [ "$COMPILER" = "32" ] ; then
echo " (Note that a 64bit compiler may be setup to produce 32bit code)"
fi
यदि आप इन दो पृष्ठों को पढ़ना चाहते हैं, जहां से मुझे अधिकांश जानकारी मिली है तो a) /programming/246007/how-to-determine-whether-a-given-linux-is-32-32 bit-or-64-bit b) https://unix.stackexchange.com/a/134394/73271
यदि आप केवल उस प्लेटफ़ॉर्म को देखना चाहते हैं जिस पर आप चल रहे हैं, तो आप उपयोग कर सकते हैं
uname -i
के लिए समर्थित विकल्पों की पूरी सूची uname
है
$ uname --help
Usage: uname [OPTION]...
Print certain system information. With no OPTION, same as -s.
-a, --all print all information, in the following order,
except omit -p and -i if unknown:
-s, --kernel-name print the kernel name
-n, --nodename print the network node hostname
-r, --kernel-release print the kernel release
-v, --kernel-version print the kernel version
-m, --machine print the machine hardware name
-p, --processor print the processor type or "unknown"
-i, --hardware-platform print the hardware platform or "unknown"
-o, --operating-system print the operating system
--help display this help and exit
--version output version information and exit
uname -i
प्रिंट GenuineIntel
, जो वास्तव में वह नहीं है जो वह खोज रहा है।
Unknown
एक मैक पर।
i386
मेरी मशीन पर प्रिंट !
CLFLUSHSIZE
प्रोसेसर के ऑपरेटिंग मोड के बारे में आपको कुछ नहीं बताता है। इस उत्तर के अनुसार , यह कैश की सबसे छोटी फ्लशबल इकाई को संदर्भित करता है। आपके मामले में, 64 पंक्तियों की इकाइयों में कैश लाइनों को पढ़ा / लिखा जाता है।
uname
उदाहरण के शो के विकिपीडिया की तालिका पर एक नज़र के रूप में आउटपुट उपयोगी होने के लिए बहुत भिन्न होता है । सबसे विश्वसनीय तरीका कुंभ पावर के जवाबgetconf LONG_BIT
में दिखाया गया है । यह प्रोसेसर आर्किटेक्चर की परवाह किए बिना काम करता है, इसलिए एआरएम, पावर, या एमआइपी पर एक्स 86 की तरह ही घर पर है।