टर्मिनल लॉगिन लटका हुआ है


26

मेरे पास अपने नए मैकबुक प्रो (देर से -2016, टच बार) पर एक अजीब मुद्दा है।

यह ठीक काम करता है और फिर, थोड़ी देर के लिए उपयोग करने के बाद, नई टर्मिनल विंडो खोलने से काम नहीं चलता क्योंकि loginहैंग हो जाता है। रीबूटिंग समस्या को ठीक करता है।

ऐसा लगता है कि कुछ अन्य लोगों के पास एक मुद्दा था इसलिए मैंने उनके सभी समाधानों को पहले से ही आजमा लिया था 1 और [2] ):

  1. निकाला जा रहा है ~/Library/Preferences/com.apple.Terminal.plist
  2. (से एक अन्य सुरक्षा को मेरा डिफ़ॉल्ट खोल स्थापना /bin/zshकरने के लिए /bin/shया /bin/bash)
  3. निकाला जा रहा है या सफाई मेरी .profile, .zprofile... यह काम नहीं करता और मैं पुष्टि कर सकते हैं कि इस मुद्दे से पहले खोल भी शुरू हो जाती है तब होता है, क्योंकि यदि मैं echo HEYमेरी की पहली पंक्ति के रूप में .zshenvयह भी पूरा नहीं हुआ है। यह loginपरेशानियों का कारण बन रहा होगा । /etc/profileशीर्ष पर एक प्रतिध्वनि जोड़ने का संपादन भी कुछ नहीं दिखाता है
  4. Run command:मेरे टर्मिनल कॉन्फिगरेशन में सेटिंग को कुछ इस तरह बदलना echo fooभी काम नहीं करता है ( Run inside shellचेक या अनचेक छोड़ने से कुछ भी नहीं बदलता है)।

अन्य नोट:

  • जैसा [2] , ssh-add -Kरिबूट के बीच कुंजी मौजूद नहीं होता, कुछ मैं कभी नहीं मुसीबतों से पहले के साथ किया था।
  • कंसोल किसी भी संदिग्ध त्रुटियों या चेतावनियों को नहीं दिखाता है।
  • एक नई Terminalविंडो खोलने से लगता है कि tty फ़ाइल ( /dev/ttys<number>) बनाई गई है ।
  • जब ऐसा होता है, तो इससे कोई फर्क नहीं पड़ता कि मैं Terminal.app या iTerm.app का उपयोग करता हूं
  • मेरे पास एक बहुत अच्छी तरह से स्थापित है (बस मेरा लैपटॉप मिला है, किसी भी बैकअप को पुनर्स्थापित नहीं किया है, बस कुछ एप्लिकेशन इंस्टॉल किए हैं brew installऔर brew cask install)।

यह डिबग करना वास्तव में कठिन है क्योंकि मैं इसे पुन: पेश नहीं कर सकता हूं और अक्सर मैं एक नया टर्मिनल नहीं खोल सकता हूं ताकि यह पता लगाने की कोशिश भी न हो कि क्या हो रहा है।

क्या किसी के भी पास कोई भी सुझाव है?

अद्यतन करें:

ITerm का उपयोग करके, मैं स्टार्ट कमांड को सेट करके एक शेल प्राप्त करने में सक्षम था /bin/bash। इस शेल में, हालांकि, sudoकाम नहीं करता है। यह लटकी हुई है (शीघ्र दिखाए बिना) और ctrl-Cऔर ctrl-Dजब यह लटकी हुई है कोई काम नहीं करते हैं।

कुछ अन्य कार्यक्रमों का उपयोग करना भी इस शेल में काम नहीं करता है: nodeया /usr/local/bin/nodeदोनों लटकाते हैं। जहां तक ​​मैं बता सकता हूं, यह ऐसे कार्यक्रम हैं जो अंदर हैं /usr/local/bin

अपडेट 2:

brew list --full-name इन पैकेजों में परिणाम:

autoconf
automake
blueutil
boost
cabal-install
cairo
cfssl
cmake
coreutils
doxygen
editorconfig
erlang
ffind
ffmpeg
flow
fontconfig
fontforge
freetype
gdbm
gettext
ghc
git
glib
go
gobject-introspection
graphicsmagick
harfbuzz
haskell-stack
highlight
icu4c
influxdb
jemalloc
jpeg
keybase
lame
libevent
libffi
libpng
libtermkey
libtiff
libtool
libuv
libvterm
libxml2
lua
mongodb
msgpack
nginx
node
openssl
openssl@1.1
pango
pcre
pixman
pkg-config
postgresql
protobuf
python
python3
rabbitmq
readline
reattach-to-user-namespace
redis
sqlite
the_silver_searcher
thefuck
tmux
unibilium
unixodbc
wxmac
x264
xvid
xz
yarn
z
zsh
josegonzalez/php/php54
neovim/neovim/neovim

अपडेट 3:

ये बिंदु @ मोनोमेथ के उत्तर के साथ पत्राचार में हैं:

  1. जब ऐसा होता है, तो एक loginआइटम गतिविधि की निगरानी में दिखाई देता है। (फोर्स) इसे छोड़ने से टर्मिनल विंडो भी बंद हो जाती है। विंडो को मैन्युअल रूप से बंद करने से loginप्रक्रिया मॉनिटर एक्टिविटी में नहीं जाती है।

  2. टर्मिनल का शीर्षक है Terminal — login — term big — ttys001 — 89x18 — ⌘1, term bigसेटिंग्स नाम कहां है।

  3. sudoगतिविधि मॉनीटर में कोई प्रक्रिया नहीं दिख रही है। मैं sudoiTerm.app (जो बैश का उपयोग करता है) खोलकर और sudo echo okवहां चलकर एक प्रक्रिया बना सकता हूं । यह छोड़ना नहीं हो सकता है, लेकिन फोर्स क्विट काम करता है और इसे मारता है:

    bash-3.2 $ sudo इको ओके किल्ड: 9

अपडेट 4:

जब ऐसा होता है, loginएक शेल से चल रहा है जो अभी भी उपलब्ध है , काम करता है , जबकि loginनए शेल में लटका हुआ लगता है।

अपडेट 5:

मुझे हाल ही में एक नया लैपटॉप मिला (मैकबुक प्रो 2017, नो टच बार) और समस्या बनी हुई है।

मैंने गोले को भी बंद कर दिया है: अब मैं fishएक सुंदर वेनिला विन्यास का उपयोग कर रहा हूं । मुझे लगता है कि अपराधी के रूप में गोले को नियमबद्ध करता है।

OS को 10.13.3 (17D47) हाई सिएरा में भी अपडेट किया गया है।

मैंने इस मशीन पर जितना संभव हो सके स्थापित करने की कोशिश की है:

brew list —-full-names

coreutils 8.29
dnsmasq 2.78
faac 1.29.9.2
fdk-aac 0.1.5
ffmpeg 3.4.1
fish 2.7.1
freetype 2.9
gdbm 1.14.1_1
gettext 0.19.8.1
git 2.16.1
highlight 3.42
htop 2.0.2_2
icu4c 60.2
imagemagick 7.0.7-22
jemalloc 5.0.1
jpeg 9b
lame 3.100
libav 12.2
libogg 1.3.3
libpng 1.6.34
libtermkey 0.20
libtiff 4.0.9_1
libtool 2.4.6_1
libuv 1.19.1
libvorbis 1.3.5_1
libvpx 1.7.0
libvterm 681
libyaml 0.1.7
lua 5.3.4_2
luajit 2.0.5
mongodb 3.6.2
msgpack 2.1.5
neovim 0.2.2
node 9.5.0
openssl 1.0.2n
opus 1.2.1
parallel 20180122
pcre 8.41
pcre2 10.30
postgresql 10.2
python 2.7.14_3
python3 3.6.4_2
readline 7.0.3_1
ripgrep 0.7.1
ruby 2.5.0
sqlite 3.22.0
the_silver_searcher 2.1.0
thefuck 3.25_1
unibilium 1.2.1
x264 r2795
xvid 1.3.5
xz 5.2.3
youtube-dl 2018.02.08

अभी यकीन नहीं है कि यह क्या हो सकता है। केवल वही ऐप जो मैं सोच सकता हूं Divvyया Apptivateजब से वे दोनों पुराने लग रहे हैं। यह पुराने बनाम नई मशीन पर क्या स्थापित किया गया था इसका प्रतिच्छेदन है:

coreutils
ffmpeg
freetype
gdbm
gettext
git
highlight
icu4c
jemalloc
jpeg
lame
libpng
libtermkey
libtiff
libtool
libuv
libvterm
lua
mongodb
msgpack
node
openssl
pcre
postgresql
python
python3
readline
sqlite
the_silver_searcher
thefuck
unibilium
x264
xvid
xz

अद्यतन 6:

इसके अलावा, यहां एक स्क्रीनशॉट है: स्क्रीनशॉट

अपडेट 7:

मेरा env आमतौर पर इस तरह दिखता है:

Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.k60Nf5UBfq/Render
DISPLAY=/private/tmp/com.apple.launchd.6FMoWPSlJI/org.macosforge.xquartz:0
EDITOR=env VIRTUAL_ENV= nvim -u /Users/john-doe/.config/vim/vimrc -p
GNUTERM=X11
HOME=/Users/romeo
HOMEBREW_NO_EMOJI=1
HOMEBREW_PREFIX=/usr/local
LANG=en_GB.UTF-8
LESS=-RI
LESSHISTFILE=-
LOGNAME=romeo
LS_COLORS=di=00;31:ex=00;37:mi=00;41;30:tw=00;33
MANPATH=/usr/local/opt/coreutils/libexec/gnuman
PAGER=less
PATH=/Users/john-doe/.config/fisherman/re-search:/usr/local/opt/python/libexec/bin:/usr/local/opt/ruby/bin:/usr/local/opt/coreutils/libexec/gnubin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/local/MacGPG2/bin
PWD=/Users/romeo
SECURITYSESSIONID=186a8
SHELL=/usr/local/bin/fish
SHLVL=1
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.fQn5sHMuZP/Listeners
TERM=xterm-256color
TERM_PROGRAM=Apple_Terminal
TERM_PROGRAM_VERSION=400
TERM_SESSION_ID=D2AF7A50-8B41-4793-9201-8304A02C9B29
TMPDIR=/var/folders/15/zcyyfw_x7638z7vfg5zd85z40000gn/T/
USER=romeo
XDG_CACHE_HOME=/Users/john-doe/.cache
XDG_CONFIG_HOME=/Users/john-doe/.config
XPC_FLAGS=0x0
XPC_SERVICE_NAME=0

1
यह एक लंगड़ा सुझाव हो सकता है, लेकिन क्या आपने Apple ग्राहक सहायता से संपर्क करने की कोशिश की है? जब आप इसे पोस्ट करते हैं, तो आपके प्रश्न पर अधिक ध्यान नहीं जाता है, और उनके सहायक कर्मचारियों ने इस समस्या के बारे में सुना होगा। मेरा केवल अन्य सुझाव MacOS को फिर से स्थापित करने के लिए होगा। हालाँकि, चूंकि आपका मैक इतना नया है, मुझे नहीं पता कि यह काम करेगा या नहीं।
नूह

@klanomath किया!
रोमियोवस

यह पता लगाने के लिए कि लॉगिन क्या कर रहा है, इसे गतिविधि मॉनिटर में चुनें और नमूना प्रक्रिया चुनें। वही अन्य प्रक्रियाओं के लिए जाता है जो लटकाए जाते हैं। हालाँकि, डीबगिंग का यह स्तर StackExchange Q & A के लिए उपयुक्त नहीं हो सकता है। बेहतर हो सकता है कि या तो नमूना फ़ाइल सहित Apple के साथ बग रिपोर्ट दर्ज करें, या किसी ऐसे व्यक्ति को ढूंढें जो इस स्तर पर समस्या के निदान के लिए समर्थन की पेशकश कर सकता है। डेवलपर
क्रिस पेज

कब तक लटका रहता है? क्या आपने इसे दस मिनट तक छोड़ने की कोशिश की है? क्या आपकी मशीन एक ओपन डायरेक्टरी नेटवर्क से जुड़ी है? विशेष रूप से, लॉगिन को आपकी उपयोगकर्ता जानकारी प्राप्त करनी है, और यदि आप किसी व्यस्त / अनुत्तरदायी निर्देशिका सर्वर के साथ OD नेटवर्क पर हैं, तो इसका जवाब देने में कुछ मिनट लग सकते हैं; अन्य कार्यक्रम भी उपयोगकर्ता की जानकारी प्राप्त करते हैं और इस समस्या से पीड़ित हो सकते हैं।
क्रिस पेज

लंबे समय तक इंतजार करने की कोशिश नहीं की, अगली बार यह कोशिश करेंगे। मैं एक ओपन डायरेक्टरी नेटवर्क के लिए बाध्य नहीं हूँ, ये त्रुटियाँ तब भी होती हैं जब मैं किसी भी नेटवर्क पर नहीं होता।
रोमियोस

जवाबों:


13

जैसा कि मुझे यकीन है कि आप जानते हैं, समस्या निवारण उन्मूलन की एक प्रक्रिया है और अक्सर धैर्य की एक निष्पक्ष आवश्यकता होती है। मैं आपके लिए कुछ चीजें आजमाना चाहता हूं और इसके लिए नीचे तक जाना चाहता हूं।

1. पुष्टि करें कि यह लॉगिन के दौरान लटका हुआ है

यदि यह प्रक्रिया जिस पर लटक रही है वह वास्तव में लॉगिन के दौरान है , तो इसका अर्थ है कि प्रक्रिया अभी भी लॉगिन सत्र बनाने की प्रतीक्षा कर रही है। अगर यह मामला है, तो यह खोल अभी तक शुरू करने की कोशिश नहीं की है।

इसकी पुष्टि करने के लिए, अगली बार जब आप इस समस्या का अनुभव करते हैं, तो यह जांचने के लिए गतिविधि मॉनिटर लॉन्च करें कि क्या शेल चल रहा है या क्या आप केवल एक लॉगिन प्रक्रिया देखते हैं ।

एक बार जब आपको ऐसा करने का मौका मिल जाए, तो आपको जो मिला, उसके साथ वापस रिपोर्ट करें।

नोट: - यदि आपके पास अन्य टर्मिनल खुले हैं, तो सुनिश्चित करें कि आप इसी प्रक्रिया की जाँच कर रहे हैं। मेरा अनुमान है कि फांसी की प्रक्रिया उच्चतम प्रक्रिया आईडी (पीआईडी) संख्या के साथ एक है।

2. टर्मिनल शीर्षक क्या है?

अगली बार जब आपके पास यह मुद्दा हो, तो आप इस बात पर ध्यान दे सकते हैं कि टर्मिनल विंडो का शीर्षक क्या है और वापस रिपोर्ट करें?

3. सुडो को मारना

आप कहते हैं कि आपके MBP को रिबूट करने से हमेशा यह समस्या हल हो जाती है।

हालाँकि, अगली बार आपके पास यह समस्या है (शायद ऐसा करने के बाद जो मैंने ऊपर 1 पर वर्णित किया है), मैं चाहूंगा कि आप एक्टिविटी मॉनिटर से सुडो को मारने की कोशिश करें।

एक बार जब आप यह कोशिश कर लेते हैं, तो हमें बताएं कि क्या होता है।

4. अपने .bash * फ़ाइलों को ले जाने का प्रयास करें

यह संभव है (विभिन्न कारणों से) आपकी उपयोगकर्ता निर्देशिका में एक .bash_profile फ़ाइल हो सकती है और यह आंतरायिक समस्याओं का कारण बन रही है। यह एक ऐसी चीज है जिसके बारे में आप भी नहीं जानते होंगे, लेकिन आप ऑटोमैटर का उपयोग किसी स्क्रिप्ट को चलाने के लिए कर सकते हैं जो किसी भी .bash फाइलों को ढूंढती है और उन्हें स्थानांतरित करती है।

यहाँ यह करने के लिए एक उदाहरण स्क्रिप्ट है:

cd ~

mkdir moved
for F in .bash*
do
    mv $F moved
done

यह स्क्रिप्ट आपके घर के .bash से शुरू होने वाली सभी फाइलों को एक नए बनाए गए सबफ़ोल्डर में ले जाती है।

स्क्रिप्ट चलाने के बाद, इस फ़ोल्डर को देखें और हमें बताएं कि क्या वास्तव में इसमें आपकी कोई फाइल है।

नोट: - आप नए सबफ़ोल्डर को अपनी इच्छानुसार लेबल कर सकते हैं। ऐसा करने के लिए, स्क्रिप्ट में स्थानांतरित की गई दो घटनाओं को केवल उस लेबल में बदलें, जिसे आप उपयोग करना चाहते हैं।

[अद्यतन करें]

कोशिश करने के लिए कुछ और बातें।

5. .asl फ़ाइलों को साफ़ करने का प्रयास करें

यदि आपने पहले से नहीं किया है, तो * .asl फ़ाइलों को साफ़ करने का प्रयास करें। ऐसा करने के लिए निम्नलिखित का उपयोग करें:

sudo rm -rf /private/var/log/asl/*.asl

नोट: - इसमें कुछ समय लग सकता है क्योंकि यह एक नया शेल बनाता है। जब पूरा हो जाए, तो सुनिश्चित करें कि आपने परिवर्तनों को प्रभावित करने के लिए टर्मिनल को पूरी तरह से छोड़ दिया है।

6. सुरक्षित मोड

क्या आप अपने एमबीपी को सेफ मोड में शुरू करते समय व्यवहार में कोई अंतर देखते हैं? सुरक्षित मोड में बूट करने के लिए:

  1. पूरी तरह से अपने मैक को बंद करें
  2. अपने मैक को पुनरारंभ करें
  3. तुरंत Shiftकुंजी दबाएं और इसे नीचे रखें
  4. चलो का जाना Shiftकुंजी जब आप लॉगिन विंडो देखते हैं (नोट: यदि आपके पास FileVault सक्षम आप दो बार में लॉग इन करने की आवश्यकता हो सकती)।
  5. एक बार जब आपका एमबीपी टर्मिनल का उपयोग करना शुरू कर देता है और देखें कि क्या आप अभी भी इस मुद्दे को दोहरा सकते हैं?
  6. समाप्त होने पर, आप अपने MBP को सामान्य मानकर सुरक्षित मोड से बाहर निकल सकते हैं

7. ओपन डायरेक्टरी

यह संभवत: आपके मामले में लागू नहीं होता है क्योंकि आप इसका उल्लेख नहीं करते हैं, लेकिन यदि आप एक ओपन डायरेक्टरी नेटवर्क से जुड़े हैं तो यह आपके लिए परेशानी का कारण बन सकता है। आमतौर पर यह केवल लगभग 10 - 15 सेकंड के लिए इंतजार करना होगा, लेकिन मैंने इस स्थिति को पूरा करने के लिए टर्मिनल लॉगइन को पांच या अधिक मिनट लेने की रिपोर्ट देखी है।


धन्यवाद! मैं उपयोग कर रहा हूँ zsh, और यहां तक कि एक खाली साथ .zshrc, .zprofile, .profile, आदि आईडी नहीं होती है, के साथ साथ यह स्पष्ट नहीं क्यों में अन्य कार्यक्रमों करता /usr/local/binभी लटका है, इसलिए मुझे लगता है कि 4. तस्वीर से बाहर है। एक बार उन्हें प्राप्त करने के बाद मैं अन्य प्रश्नों के उत्तर के साथ वापस आ जाऊंगा।
रोमियोवेंस

इन सवालों के जवाब के साथ एक अपडेट जोड़ा गया। loginलगता है कि अपराधी है, लेकिन यह अभी भी यह नहीं समझाता है कि यह iTerm के साथ काम क्यों करता है bash
रोमियोव्स

मैंने अपना उत्तर अपडेट कर दिया है। हालाँकि, मुझे अभी पता चला है कि आपने संकेत नहीं दिया है कि आपने टर्मिनल लॉगिन के पूरा होने की कितनी देर तक प्रतीक्षा की है? यह जानना अच्छा होगा कि क्या यह अंततः लॉग इन करता है, या क्या यह केवल अनिश्चित काल तक लटका रहता है।
Monomeeth

@romeovs सोच रहे हैं, क्या आपने कभी इस मुद्दे को हल किया है?
Monomeeth

nope :( अभी भी इस पर काम कर रहा है। हालांकि यह बहुत कम होने लगा है।
रोमियो

6

ऐसा लगता है कि आप प्रति उपयोगकर्ता (या संभवतः अधिकतम प्रक्रियाओं) की अधिकतम प्रक्रियाओं को पार कर चुके हैं।

एक स्टॉक macOS इंस्टॉलेशन पर आपको प्रति उपयोगकर्ता 709 ( ulimit -u) और 1064 अधिकतम प्रोसेस ( sysctl -a | grep maxp) मिलते हैं

इनको टक्कर देने का एक आसान तरीका है, App Store से Server.app को इंस्टॉल करना और फिर रिबूट करना। आप उच्च सीमाओं के लिए प्रदर्शन मोड भी सेट कर सकते हैं।

चूंकि आपने अपने सेटअप (OS संस्करण और बिल्ड) का वर्णन नहीं किया है, तो यहां कुछ सुझाव दिए गए हैं - यदि आप सर्वर को स्थापित करने का सहारा लिए बिना सीमा को बदलने पर पुराने लेखों को पढ़ते हैं, तो फ़ाइलों को बदलने की आपकी क्षमता को रोकने के लिए SIP की जांच करना सुनिश्चित करें। एप्लिकेशन:


बहुत बढ़िया बात! मैंने भी इस पर विचार नहीं किया था। :)
Monomeeth

@Monomeeth आपका जवाब कमाल का है। इसमें बहुत सारी बातें।
51

@bmike क्या कोई तरीका है कि मैं प्रक्रियाओं की कुल संख्या की जांच कर सकता हूं कि यह मामला है? हो सकता है कि मैं 709 प्रक्रियाएँ बनाकर इसे पुन: पेश कर सकूँ?
रोमियोवस

5

मैं भी कई महीनों से इसे देख रहा हूं। बहुत निराशा होती है। केवल एक चीज जो इसे ठीक करती है वह है रिबूट।

  • मध्य 2015 MBP (कोई टच बार नहीं)
  • MacOS 10.12.6 बीटा

कभी-कभी tmux के साथ बातचीत करने के बाद लॉगिन हैंग होता है।

मैंने सभी अनुशंसित दृष्टिकोणों का असफल प्रयास किया है।

यकीन नहीं है कि यह संबंधित है, लेकिन त्रिशंकु प्रवेश प्रक्रिया के लिए lsof -p LOGIN_PIDएक बहुत बड़े पैमाने पर फ़ाइल दिखाता है /private/var/db/dyld/dyld_shared_cache_x86_64h

8/29/2017 अपडेट:

अभी भी समस्या है। कभी-कभी जब मशीन खराब स्थिति में हो जाती है, तो मेरे पास खुली टर्मिनल खिड़कियां होती हैं जो पहले से ही सफलतापूर्वक लॉग इन होती हैं जिन्हें मैं डीबग करने के लिए उपयोग कर सकता हूं।

कई आदेश ठीक से नहीं चलते हैं, लेकिन वे सभी को लिखने में परेशानी होती है (स्टडआउट करने के लिए, मैं सोच रहा हूं)। उदाहरण के लिए, जब मैं दौड़ता हूं, तो मैं stderr को उत्सर्जित ls -alदेखता हूं ls: write error। जब मैं दौड़ता हूं ls -al > /dev/null, तो कुछ भी नहीं लिखा जाता है।


यह पता लगाने पर कोई भाग्य?
रोमियो

मेरे ओएस को अपडेट करने के बाद से यह समस्या मेरे लिए हल हो गई है। यह कुछ मामूली संस्करणों के लिए तय किया गया है, और मैं वर्तमान में 10.13.3 (17D47) चला रहा हूं।
ज़ैक

Im 10.13.3 (17D47) भी चल रहा है! यह लगातार घाव बन गया है, लेकिन अभी भी कभी-कभी होता है।
रोमियो

4

वास्तविक मुद्दे का इलाज करना महत्वपूर्ण है न कि केवल लक्षण। तो निम्नलिखित सुझावों को आज़माएं और उसके आधार पर अपडेट करें ताकि आगे के उपाय भी सुझाए जा सकें।

  1. टर्मिनल का मालिक कौन सा उपयोगकर्ता है? :
    मेरा पहला कूबड़ यह है कि यह संबंधित हो सकता है कि आपका खाता कैसे सेट किया गया है। यदि टर्मिनल उन संसाधनों या निर्देशिकाओं तक पहुँचने का प्रयास कर रहा है, जो केवल व्यवस्थापक उपयोगकर्ता ही कर सकता है (यदि आपका कोई गैर खाता है), तो वह ठंड की स्थिति पैदा कर सकता है - आपको टर्मिनल तक पहुँचने की अनुमति नहीं देता है। इसलिए आगे बढ़ें और सुनिश्चित करें कि जब आप एक टर्मिनल सत्र शुरू करते हैं, तो यह आपके उपयोगकर्ता के लिए स्थानीय होता है न कि किसी अन्य उपयोगकर्ता के लिए। तथ्य यह है कि आप एक sudo प्रक्रिया नहीं बना सकते, मुझे इस दिशा की ओर इशारा कर रहा है।

  2. टाइप कंट्रोल-जेड या कमांड-जेड:
    यह नियंत्रण कुंजी अनुक्रम एक प्रोग्राम को निलंबित करता है जो चल सकता है और आपको एक शेल प्रॉम्प्ट देता है। अब आप प्रोग्राम के नाम को खोजने के लिए जॉब्स कमांड दर्ज कर सकते हैं, फिर प्रोग्राम को fg के साथ पुनः आरंभ कर सकते हैं या इसे किल के साथ समाप्त कर सकते हैं।

  3. प्रेस कमांड-सी :
    यह तब बाधित होगा जब टर्मिनल पृष्ठभूमि में एक प्रोग्राम चलाने की कोशिश कर रहा है। इसे एक-दो बार आजमाएं। यदि आपको कोई आउटपुट दिखाई देता है तो ध्यान दें

  4. नियंत्रण-क्यू टाइप करें :
    यदि आउटपुट को नियंत्रण-एस के साथ रोका गया है, तो यह इसे पुनः आरंभ करेगा।

  5. एक वैकल्पिक शेल प्राप्त करें :
    यदि आप कुछ दिनों के लिए एक अलग शेल की कोशिश करना चाहते हैं, तो उनके व्यवहार कभी-कभी आपको टर्मिनल के साथ समस्या को समझने में मदद कर सकते हैं यदि वे एक निश्चित तरीके से कार्य करते हैं। विकल्प के लिए नीचे दिए गए इन लिंक की जाँच करें

https://git-scm.com/downloads/guis
https://computers.tutsplus.com/tutorials/beyond-terminal-4-os-x-terminal-alternatives--mac-56217

निम्नलिखित को जानने में मदद करेगा, यदि पहले से उल्लेख नहीं किया गया है:

  • आप टर्मिनल सत्र की शुरुआत कैसे कर रहे हैं? क्या यह स्पॉटलाइट या डेस्कटॉप आइकन या किसी अन्य तरीके से है?

  • जब यह लटकता है तो टर्मिनल क्या कर रहा है? क्या यह किसी कमांड को निष्पादित करने के बीच में है (हर बार लटकाए जाने से पहले एक ही कमांड) या यह उस समय से लटका रहता है जब आप टर्मिनल सत्र / विंडो शुरू करते हैं।

  • आप आमतौर पर अपने टर्मिनल का उपयोग किस लिए करते हैं? यदि आपके उपयोग का अधिकांश हिस्सा केवल git से संबंधित कमांड के लिए है, तो मैं सुझाव दूंगा कि Github जैसे Mac के लिए कुछ का उपयोग किया जाए क्योंकि आप आमतौर पर वहां से अधिकांश चीजें कर सकते हैं।


Ctrl-Z और Ctrl-C दोनों ही स्क्रीन पर दिखाई देते हैं ^Zऔर ^C, Ctrl-Q कुछ नहीं करता है। मैं आमतौर पर टर्मिनल में कमांड-एन का उपयोग करके शेल को खोलता हूं। मैं एक पूर्णकालिक प्रोग्रामर हूं, इसलिए मैं मूल रूप से हर चीज के लिए टर्मिनल का उपयोग करता हूं। कुछ भी निष्पादित (चालू login) होने से पहले टर्मिनल हैंग हो जाता है ।
रोमियोवैन

@romeovs Pointer 1 के बारे में आपका उपयोगकर्ता प्रकार क्या है? इस मुद्दे के साथ एक स्क्रीनशॉट भी मदद करेगा। धन्यवाद
pal4life

मैं अपनी मैकबुक पर डिफ़ॉल्ट उपयोगकर्ता और व्यवस्थापक हूं।
रोमियोवस

4

मैं मूल कारण को खोजने के लिए SIP और dtrace लॉगिन को अक्षम करने का प्रयास करूंगा (SIP को अक्षम और पुनः सक्षम करने के लिए, http://osxdaily.com/2015/10/05/disable-rootless-system-integrity-protection-mac देखें -ओएस-एक्स / )

$ csrutil status
System Integrity Protection status: disabled.
$ cp /usr/bin/login /tmp
$ sudo dtruss /tmp/login

आपको एक उदाहरण आउटपुट देने की कोशिश कर रहा हूं, मुझे पता चला है कि चीजें मेरे विचार से बहुत सरल हैं। SIP को अक्षम करने की आवश्यकता नहीं है, बस लॉगिन को कॉपी करें।

dtuss सिस्टम कॉल लौटाएगा और यह संकेत दे सकता है कि चीजें कहां गलत हैं।

cp /usr/bin/login .
sudo ls

अपना पासवर्ड दें। फिर करो

sudo dtruss -d -e ./login 2> dtruss_login.txt

अपना उपयोगकर्ता नाम दर्ज करें, Enter दबाएँ

अपना पासवर्ड डालें, एंटर दबाएं

'बाहर निकलें' दर्ज करें, एंटर दबाएं

और अंत में dtruss_login.txt को उदा। https://gist.github.com/ पर अपलोड करें

आप फ़ाइल की सामग्री को क्लिपबोर्ड पर इस तरह से कॉपी कर सकते हैं

cat dtruss_login.txt | pbcopy

आप यहां एक उदाहरण देख सकते हैं: https://gist.github.com/wolframteetz/49c5188c9dfe68a3841fa18496679579

प्रत्येक पंक्ति में दूसरा पूर्णांक वह समय होता है जब कॉल लिया जाता है।

बेशक, यह बहुत अच्छा होगा यदि आप लॉगिन को लटकाए जाने पर इसे चला सकते हैं, लेकिन अगर मैं आपको सही पाता हूं, तो यह असंभव है .... शायद आप या किसी और को टर्मिनल लटकने पर 'ड्राउटस लॉगिन' करने का विचार हो। ?


आउच। ऐसा लगता है कि कुछ के लिए बहुत दर्द होता है जो लॉग शुरू होने के घंटों या दिनों के बाद होता है। क्या आप उस चीज़ dtrussको संकुचित कर सकते हैं जो कैप्चर और दिखा सकती है?
bmike

यदि लॉगिन एक सिस्टम कॉल में लटका हुआ है, जो काफी संभावित है, तो यह आपको दिखाएगा। यदि यह सिस्टम कॉल के बीच लटका रहता है, तो यह आपको किसके बीच दिखाएगा, और आपको इस बात का संकेत देगा कि वास्तव में क्या चल रहा है। उदाहरण के लिए, यदि यह सिस्टम कॉल द्वारा एक निश्चित कॉन्फ़िगरेशन फ़ाइल को पढ़ने के बाद हैंग हो जाता है, तो त्रुटि संभवतः उस कॉन्फ़िगरेशन को पार्स करने के दौरान होती है। आपको तब इस पर गहन विचार करने की जरूरत है। नेटवर्क से संबंधित भी हो सकता है ... जो आपको डिबग करने तक जानता है;)
user2707001

समस्या यह है कि मैं समस्या को मैन्युअल रूप से पुन: उत्पन्न नहीं कर सकता जब तक कि बहुत देर न हो जाए।
रोमियोवस

फिर कमांड को "हमेशा के लिए" लूप में निष्पादित करें और "2> dtruss_login.txt" के बजाय "dtruss_login.txt 2> & 1" करें। एक बार त्रुटि दिखाई देने पर, आप आउटपुट के अंत में देखेंगे।
user2707001

मैं आखिरकार एक dtruss लॉग प्राप्त करने में सक्षम था: gist.github.com/romeovs/6661ae0db77e57281b531676cc5dc007 लॉगिन हैंग होने के बाद से, यह कभी भी बाहर नहीं निकलता है, इसलिए लगभग 10s के बाद ctrl-C'ed।
रोमियो

1

loginआदेश स्रोत कोड एप्पल द्वारा प्रकाशित किया गया है। वेबसाइट macOS 10.13.3 सोर्स है । केवल आवश्यक डाउनलोड है system_cmds-790.30.1। एक बार डाउनलोड होने के बाद, प्रोजेक्ट को केवल loginकमांड बनाने के लिए आसानी से संशोधित किया जा सकता है । संशोधित प्रोजेक्ट और loginकमांड को GitHub में davidanderson61 / system_cmds-10.13.3 पर रखा गया है

loginकंसोल पर डिबग जानकारी लिखने के लिए संशोधित करने के लिए यहां विचार है । यह निर्धारित करने में मदद करेगा कि loginकमांड क्यों लटका हुआ है। संशोधनों में भाग लेने के इच्छुक किसी को भी बनाया जा सकता है। मैंने मान लिया कि यह मैं ही होता।

डिबग loginकमांड स्थापित करें ।

  1. वेबसाइट davidanderson61 / system_cmds-10.13.3 / विज्ञप्ति से नवीनतम रिलीज का चयन करें ।

  2. loginअपने Downloadsफ़ोल्डर में डीबग कमांड डाउनलोड करें । "एसेट्स" के तहत, राइट क्लिक करें loginऔर "डाउनलोड लिंक्ड फ़ाइल के रूप में" चुनें, फिर "सहेजें" चुनें।

  3. आंशिक रूप से, सिस्टम इंटीग्रिटी प्रोटेक्शन (SIP) को अक्षम करें। आदेश नीचे दिया गया है। कमांड दर्ज करने से पहले, आपको एक मैक विंडो, फिर एक टर्मिनल विंडो को बूट करना होगा

    csrutil  enable  --without  fs
  4. मूल loginकमांड को बचाने के लिए नीचे दी गई कमांड दर्ज करें । यदि login.orignalपहले से मौजूद है, तो आप इस चरण को छोड़ सकते हैं।

    sudo  mv  /usr/bin/login  /usr/bin/login.original
  5. डिबग loginकमांड को कॉपी करने और उचित अनुमतियों को सेट करने के लिए नीचे दिए गए कमांड दर्ज करें ।

    sudo  cp  ~/Downloads/login  /usr/bin/login
    sudo  chmod  104555  /usr/bin/login
  6. सिस्टम इंटीग्रिटी प्रोटेक्शन (SIP) सक्षम करें। निम्नलिखित कमांड दर्ज करें। बाद में, आपको पुनरारंभ करना चाहिए।

    sudo  csrutil  clear

कंसोल एप्लिकेशन को कॉन्फ़िगर करें

नीचे loginकमांड से केवल संदेश दिखाने के लिए कंसोल एप्लिकेशन को कॉन्फ़िगर करने के चरण हैं ।

  1. कंसोल एप्लिकेशन खोलें।
  2. एक PIDकॉलम जोड़ें , जैसा कि नीचे दिखाया गया है।

    G2

  3. loginखोज फ़ील्ड में दर्ज करें ।

    G3

    जबकि खोज फ़ील्ड में फ़ोकस है, returnकुंजी दबाएं। खोज फ़ील्ड को नीचे दिखाए गए में बदलना चाहिए।

    जी -8

  4. बदले Anyके लिए Process, जिन्हें आप नीचे।

    जी -4

  5. सूची बदलें Containsकरने के लिए Equals, जिन्हें आप नीचे।

    G5

  6. Saveबटन का चयन करें। "खोज इस रूप में सहेजें:" के लिए संकेत दिए जाने पर, दर्ज करें Login, फिर चुनें Save

    G6

परिणाम नीचे दिखाए गए अनुसार होना चाहिए। अगली बार जब आप कंसोल एप्लिकेशन खोलते हैं, तो आपको केवल "लॉगिन" बटन चुनना होगा।

जी 7

अनुबंध

GitHub रिपोजिटरी को कैसे बनाया गया था।

  1. system_cmds.xcodeprojXcode में खुले फाइल पर क्लिक करें ।
  2. मेनू बार से, सिलेक्ट करें Source Control->Create Git Repositories...
  3. मेनू बार से, सिलेक्ट करें Product->Scheme->New Scheme...। अगला, loginलक्ष्य और नाम के रूप में चुनें ।
  4. मेनू बार से, सिलेक्ट करें Project->Build
  5. एक्सकोड से बाहर निकलें।
  6. GitHub पर लॉगिन करें और एक नया भंडार बनाएं।
  7. अपने GitHub रिपॉजिटरी के त्वरित सेटअप पृष्ठ के शीर्ष पर, G1दूरस्थ रिपॉजिटरी URL की प्रतिलिपि बनाने के लिए क्लिक करें।
  8. टर्मिनल एप्लिकेशन विंडो के लिए, निम्न कमांड दर्ज करें। <remote repository URL>पिछले चरण में कॉपी किए गए URL से बदलें ।

    git  remote  add  origin  <remote repository URL>
  9. Xcode में प्रोजेक्ट खोलें और मेनू बार से, चुनें Source Control->Push...

पहली रिलीज़ कैसे हुई थी

  1. एक टर्मिनल एप्लिकेशन विंडो से, निम्न कमांड दर्ज करें।

    git  tag  -a  v1.0  -m  "Original source code"
    git  push  origin  v1.0
  2. loginअपने Downloadsफोल्डर में बिल्ट कमांड को कॉपी करें ।

  3. अपने GitHub खाते से, के रूप में एक नया रिलीज़ बनाएँ v1.0~/Downloads/loginबाइनरी के रूप में संलग्न करें ।


1

मुझे यह समस्या emacs में sbt कंसोल चलाते समय भी थी। जब भी मैं sbt कंसोल से बाहर निकलने के बजाय सिर्फ खिड़की को मारकर sbt कंसोल से बाहर निकलता हूं, सबसे पहले "अच्छी तरह से" बाहर निकलता हूं, तो इसने विंडो बंद होने के बाद भी एक जावा प्रक्रिया को लटका दिया, और किसी तरह नए टर्मिनल सत्रों को बनने से रोका। मैंने एक्टिविटी मॉनिटर से जावा प्रक्रिया को बलपूर्वक मार दिया, और फांसी टर्मिनल वास्तव में एमएसीएस के साथ-साथ एक नए टैब में शुरू हुआ।

अब, मैं बस कमांड exitया ctrl-d(या ctrl-c ctrl-demacs term/multi-term) का उपयोग करके अच्छी तरह से छोड़ना सुनिश्चित करता हूं , फिर खिड़की को मार दें।


0
  1. जाँच करें कि क्या आपकी प्रक्रिया के दौरान वास्तव में लटका हुआ है login
  2. गतिविधि मॉनिटर पर एक नज़र डालें और rootप्रक्रियाओं के लिए देखें (यानी नैनो, एमएसीएस, वीआईएम) जो आपने शुरू किया होगा और ठीक से नहीं छोड़ा होगा (क्रैश, बस टर्मिनल को मार दिया, आदि) और जो अभी भी चल रहे हैं।
  3. इस प्रक्रिया (तों) को मारें और लॉगिन तुरंत काम करना चाहिए।

0

केवल मेरे दो सेंट्स।

मैंने उप-पाठ के लिए टर्मिनस पैकेज स्थापित किया है, जो मुझे अपने पाठ संपादक के भीतर टर्मिनल चलाने की अनुमति देता है।

उपखंड पाठ को बंद करने से तुरंत मेरे टर्मिनल ने फिर से काम करना शुरू कर दिया।


मुझे नहीं लगता कि यह सवाल का जवाब देने में मदद करता है। क्या यह टर्मिनल को टर्मिनस के अंदर चलने से रोकने से रोकता है? यहां तक ​​कि अगर यह करता है, तो यह प्रतीत होता है कि आप यहां एक और समस्या हल कर रहे हैं।
हाइकम

सबलिम टेक्स्ट के साथ कुछ मुद्दों के कारण मेरा सामान्य टर्मिनल काम नहीं करेगा
बहुतायत

0

एफडब्ल्यूआईडब्ल्यू, मुझे यही समस्या थी। यह रिबूट के बाद हल होगा, लेकिन मैं दिन में कई बार ऐसा करने का समय बचाना चाहता था। यह एक विशेष नोडजेएस वातावरण का उपयोग करने के बाद शुरू हुआ, इसलिए मैंने गतिविधि की निगरानी में चला गया और एक नोड प्रक्रिया चालू देखी। उस उदाहरण को मारने से मेरे लिए समस्या हल हो गई है, इसलिए यदि किसी को भी यह अनुभव हो रहा है कि उसने हाल ही में स्थानीय स्तर पर नोड या एनपीएम के साथ काम करना शुरू किया है, तो यह आपकी समस्या हो सकती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.