ठीक है मेरे पास डैरेन के समान निष्कर्ष है, हालांकि थोड़ा अलग प्रोफाइलिंग तंत्र (एनबी धीमी लॉगिन अभी भी योसेमाइट में हो सकता है)।
यहां यह बताने का एक तरीका है कि ओएस एक्स नमूना प्रोफाइलर कमांड का उपयोग करके एक नई लॉगिन विंडो शुरू करते समय वास्तव में क्या चल रहा है ।
पता करें कि एक सामान्य लॉगिन निष्पादन क्या कमांड है
$ ps -ef | grep login
आप कुछ इस तरह देखेंगे login -pfl username /bin/bash -c exec -la bash /bin/bash
profile_login.sh
निम्न जोड़कर निम्न सामग्री के साथ एक स्क्रिप्ट फ़ाइल नाम बनाएँ
-c ""
इस तरह की सामग्री के साथ तुरंत बैश वापसी का अनुरोध करने के लिए खोज की गई कमांड के अंत में:
login -pfl username /bin/bash -c exec -la bash /bin/bash -c "" &
sudo sample $! -mayDie # sample the above command
इसे अमल में लाएं
$ chmod u+x profile_login.sh
और sudo का उपयोग करके इसे चलाएं ( sample
कमांड की आवश्यकता है)
$ sudo ./profile_login.sh
ठीक है तो आगे बढ़ो और इसे चलाओ। उदाहरण के लिए purge
पहले कमांड निष्पादित करके । मेरे बॉक्स पर, मुझे एक बड़ा आउटपुट ग्राफ मिला। "सबसे बड़ी संख्या वाली शाखाओं" (आमतौर पर शीर्ष पर) की तलाश में मैंने निम्नलिखित दो सबसे बड़े अपराधियों को देखा :
कुछ कहा जाता है, pam_start
जो pam ऑर्गेनिक लिबास इमेज खोलने के लिए प्रकट होता है
+ ! 1068 pam_start (in libpam.2.dylib) + 132 [0x7fff97295ab0]
+ ! : 1066 openpam_dynamic (in libpam.2.dylib) + 120 [0x7fff97293d14]
+ ! : | + ! 1042 coresymbolication_load_image(CSCppDyldSharedMemoryPage*, ImageLoader const*, unsigned long long) (in dyld) + 143 [0x7fff66725411]
+ ! : | + ! : 1042 mach_msg_trap (in dyld) + 10 [0x7fff6674a472]
और कभी-कभी दूसरे अपराधी द्वारा पीछा किया जाता है getlastlogxbyname
+ ! 583 getlastlogxbyname (in libsystem_c.dylib) + 212 [0x7fff92b3ef7a]
+ ! : 566 asl_file_open_read (in libsystem_asl.dylib) + 143 [0x7fff8c27030d]
+ ! : | 566 __open_nocancel (in libsystem_kernel.dylib) + 10 [0x7fff97b39012] + ! : | 566 __open_nocancel (in libsystem_kernel.dylib) + 10 [0x7fff97b39012]
इसलिए मूल रूप से, दो अपराधी हैं। एक है pam
(कुछ प्रकार की प्रमाणीकरण प्रणाली) और दूसरा यह asl
"आपके नवीनतम लॉगिन का पता लगाता है" सामान। तो जाहिरा तौर पर सिर्फ अपनी /private/var/log/asl/*.asl
फ़ाइलों को हटाने के लिए पर्याप्त नहीं है। वैसे भी मेरी मशीन पर पैम लोडिंग बहुत अधिक महंगी है, [एसएसडी]। उपरोक्त स्क्रिप्ट को चलाने के लिए स्वतंत्र महसूस करें और देखें कि क्या आपका सिस्टम समान है। दिलचस्प बात यह है कि इन विधि कॉलों का स्रोत कोड भी ऑनलाइन उपलब्ध है, उदाहरण के लिए ओपनपैम_डायनामिक
यदि मैं डैरेन के उत्तर का पालन करता हूं, और मेरे "गोले को" / बिन / बैश के अलावा किसी और चीज के लिए वरीयता के साथ खोलता हूं, तो मैं नई टर्मिनल टैब शुरू करने के लिए उपयोग की जाने वाली निम्न पंक्तियों को देखता हूं:
$ ps -ef | grep login
... login -pfql packrd /bin/bash -c exec -la bash /usr/bin/bash
तो अगर मैं अब sample
नए लॉगिन कमांड पर उसी चाल का उपयोग करता हूं
login -pfql username /bin/bash -c exec -la bash /usr/bin/bash -c "" &
sudo sample $! -mayDie
एक बहुत छोटा स्टैकट्रेस उत्पन्न होता है, जो सबसे बड़ा अपराधी है:
+ 8 pam_end (in libpam.2.dylib) + 190 [0x7fff97294ebb]
+ ! 6 coresymbolication_unload_image(CSCppDyldSharedMemoryPage*, ImageLoader const*) (in dyld) + 143 [0x7fff6e0f634f]
मुझे लगता है कि यह इसलिए है क्योंकि लॉगिन "-q" पैरामीटर अब उपयोग किया जा रहा है। जाहिरा तौर पर यह पैरामीटर pam मॉड्यूल को लोड करने और अंतिम लॉगिन समय (दोनों अपराधियों) को देखने के लिए दोनों को छोड़ देता है। login
कमांड के डॉक्स के अनुसार , ~/.hushlogin
फ़ाइल को छूना एक ही काम करना चाहिए, लेकिन जाहिर है यह अब काम नहीं करता है [कम से कम मेरे साथ 10.4]।
इसलिए, सारांश में, /pStreet/var/log/asl/*.asl को हटाना पर्याप्त नहीं है (मेरे प्रयोग में, यह केवल वास्तविक मंदी के अधिकांश 1/3 के लिए जिम्मेदार है, हालांकि यदि आपके पास वहां फ़ाइलें थीं तो यह खाता हो सकता है अधिक प्रतिशत के लिए मुझे यकीन है)।
वैसे भी समान स्क्रिप्ट का उपयोग करते हुए, आपको यह बताने में सक्षम होना चाहिए कि आपकी स्थानीय मशीन किस कारण से खराब हो रही है, और देखें कि क्या उपरोक्त सुधार आपके लिए लागू होता है। यहाँ टिप्पणी करने के लिए स्वतंत्र महसूस करें।
अद्यतन: लगता है कि coresymbolication_load_image
अभी भी समय लग सकता है, तब भी जब login -pfql
आह्वान किया जाता है (संभवत: कुछ पीएएम प्रमाणीकरण मॉड्यूल या अन्य को केंद्रीय लॉगिन सर्वर या कुछ विषम "डायल आउट" करना है, इसलिए किसी तीसरे पक्ष की प्रतिक्रिया की प्रतीक्षा करनी होगी )। इसलिए मुझे जो एकमात्र वास्तविक समाधान मिला है, वह iTerm2 का उपयोग करना है, और वरीयताओं को बदलना है -> प्रोफाइल -> सामान्य -> /bin/bash
इसके बजाय कमांड ।
.bash_profile
(~/.profile
वैसे भी जांच करें )। इसके अलावा: ध्यान दें कि बैश लोड होने के दौरान आप टाइप करना शुरू कर सकते हैं, और आमतौर पर जो आप टाइप करते हैं वह कमांड प्रॉम्प्ट में कॉपी हो जाएगा एक बार तैयार होने के बाद।