Terminal giriş kilitleniyor


27

Yeni MacBook Pro'mla ilgili garip bir sorunum var (2016 sonu, dokunmatik çubuk).

İyi çalışıyor ve bir süre kullandıktan sonra yeni Terminal pencerelerinin açılması çalışmıyor çünkü loginkilitleniyor. Yeniden başlatma işlemi sorunu düzeltir.

Bu, başkalarının yaşadığı bir sorun gibi gözüktüğü için tüm çözümlerini çoktan denedim. 1 ve [2] ):

  1. Çıkarma ~/Library/Preferences/com.apple.Terminal.plist
  2. (Başka bir kabuk benim varsayılan kabuk ayarlama /bin/zshiçin /bin/shya /bin/bash)
  3. Çıkarma veya temizleme benim .profile, .zprofile... Bu işe yaramazsa ve ben çünkü eğer ben, kabuk bile çağrılmadan önce sorun doğrulayabilmeniz echo HEYbenim ilk satırı olarak .zshenvbu bile ulaşmış değil. loginSorunlara sebep olmalı . Tepeye /etc/profileeko eklemek için yapılan düzenleme de hiçbir şey göstermiyor
  4. Run command:Terminal konfigürasyonumdaki ayarları değiştirmek gibi bir şeyle echo foode çalışmaz ( Run inside shellişaretli veya işaretsiz bırakmak hiçbir şeyi değiştirmez).

Diğer notlar:

  • Gibi [2] , ssh-add -Kben daha önce hiç problemler yaşadı şey yeniden başlatma arasındaki tuşları kalıcı değil.
  • Konsol, şüpheli herhangi bir hata veya uyarı göstermez.
  • Yeni bir Terminalpencere açmak, tty dosyası ( /dev/ttys<number>) yaratıyor gibi görünüyor .
  • Bu olduğunda, Terminal.app veya iTerm.app kullanmamın bir önemi yok.
  • Oldukça temiz bir kurulumum var (sadece dizüstü bilgisayarımı aldım, herhangi bir yedeklemeyi geri almadım, sadece bazı uygulamaları yükledik brew installve brew cask install).

Bu hata ayıklamak gerçekten zor çünkü onu yeniden üretemiyorum ve çoğu zaman neler olup bittiğini öğrenmeye çalışmak için yeni bir terminal açamıyorum.

Herhangi bir ipucu olan var mı?

Güncelleştirme:

İTerm kullanarak start komutunu ayarlayarak bir kabuk elde ettim /bin/bash. Ancak bu kabukta sudoçalışmaz. O (istemi göstermeden) askıda kalıyor ve ctrl-Cve ctrl-Dne zaman kilitleniyor hiçbir işi yapmak.

Diğer bazı programları kullanmak da bu kabukta çalışmaz: nodeya da /usr/local/bin/nodeher ikisi de askıda kalır. Söyleyebileceğim kadarıyla, içinde olan programlar /usr/local/bin.

Güncelleme 2:

brew list --full-name bu paketlerdeki sonuçlar:

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

Güncelleme 3:

Bu noktalar @ Monomeeth'in cevabına karşılık geliyor:

  1. Bu olduğunda, loginetkinlik izleyicide bir öğe beliriyor. (Zorla) Bırakma da asılı olan Terminal penceresini kapatır. Pencerenin manuel olarak kapatılması, loginişlemin Aktivite İzleyicisi'nde kaybolmasına neden olmaz .

  2. Terminal başlığı Terminal — login — term big — ttys001 — 89x18 — ⌘1nerede, term bigayarlar adıdır.

  3. sudoEtkinlik İzleyicisi'nde hiçbir işlem görünmüyor. sudoİTerm.app dosyasını (bash kullanan) açıp sudo echo okorada çalıştırarak bir işlem oluşturabilirim . Quit olamaz, ancak Force Quit çalışır ve onu öldürür:

    bash-3.2 $ sudo echo ok Öldürüldü: 9

Güncelleme 4:

O durumda, çalışan loginhala edinilebilen bir kabuktan yapar iken, işi logindaha yeni kabuklarda askıda gibi görünüyor.

Güncelleme 5:

Geçenlerde yeni bir dizüstü bilgisayar aldım (MacBook Pro 2017, Touch Bar yok) ve sorun devam ediyor.

Ben de kabuklarını değiştirdim: Şimdi fishgüzel bir vanilya yapılandırması ile kullanıyorum . Sanırım suçlu olarak kabuğunu dışladı.

İşletim sistemi ayrıca 10.13.3 (17D47) High Sierra olarak güncellendi.

Bu makineye mümkün olduğunca az yüklemeye çalıştım:

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

Bunun ne olabileceğinden emin değilim. Düşünebileceğim tek uygulamalar Divvyya Apptivateda ikisi de modası geçmiş gibi görünüyor. Bu, eski makineye karşı yeni makineye kurulanın kesişme noktasıdır:

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

Güncelleme 6:

Ayrıca, burada bir ekran görüntüsü: ekran görüntüsü

Güncelleme 7:

Env'im tipik olarak şöyle görünür:

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
Bu bir öneri olabilir, ancak Apple Müşteri Desteği ile iletişim kurmayı denediniz mi? Sorunuzu gönderdiğinizden bu yana çok fazla dikkat çekmedi ve destek personeli bu sorunu duymuş olabilir. Tek önerim MacOS'u yeniden yüklemek olacak. Ancak, Mac'iniz çok yeni olduğundan, bunun işe yarayıp yaramayacağını bilmiyorum.
NoahL

@klanomath bitti!
romeovs

Oturum açma işleminin ne olduğunu anlamak için, Aktivite İzleyicisi'nden seçin ve Örnek İşlem'i seçin. Aynı şey asılan diğer işlemler için de geçerlidir. Bununla birlikte, bu hata ayıklama düzeyi bir StackExchange Q&A için uygun olmayabilir. Örnek dosya da dahil olmak üzere Apple ile bir hata raporu yayınlamak ya da sorunu bu seviyede teşhis etmek için destek sunabilecek birini bulmak daha iyi olabilir. Bkz developer.apple.com/bug-reporting
Chris Page

Ne kadar süre dayanıyor? On dakika boyunca çalışır halde bırakmayı denedin mi? Makineniz bir Açık Dizin ağına bağlı mı? Özellikle, oturum açma kullanıcı bilgilerinizi almak zorundadır ve meşgul / yanıt vermeyen bir dizin sunucusuna sahip bir OD ağındaysanız, yanıt vermesi birkaç dakika sürebilir; diğer programlar da kullanıcı bilgilerini alır ve bu sorundan muzdarip olabilir.
Chris Page

Daha fazla beklemeyi denemedim, bir dahaki sefere deneyecek. Bir Açık Dizin ağına bağlı değilim, bu hatalar hiçbir ağda olmadığım zaman da meydana geliyor.
romeovs

Yanıtlar:


13

Bildiğiniz gibi, sorun giderme bir eleme sürecidir ve genellikle biraz sabır gerektirir. Denemek ve bunun altına almak için birkaç şey denemek isterim.

1. Giriş sırasında kilitlendiğini onaylayın

Takıldığı işlem gerçekten oturum açma sırasında ise , bu işlemin hala bir oturum açma oturumu oluşturmayı beklediğini gösterir. Durumun böyle olduğunu varsayarsak, henüz kabuğunu çalıştırmaya çalışmadı.

Bunu onaylamak için, bu sorunu bir sonraki deneyimlediğinizde, kabuğun çalışıp çalışmadığını veya yalnızca bir giriş işlemi görüp görmediğinizi kontrol etmek için Aktivite İzleyicisi'ni başlatın .

Bunu yapma şansınız olduğunda, bulduklarınızı tekrar bildirin.

NOT: - Diğer terminalleri açık duruma getirirseniz, ilgili işlemi kontrol ettiğinizden emin olun. Tahminim, asılma işleminin en yüksek İşlem Kimliği (PID) sayısına sahip olan işlem olduğu yönünde.

2. Terminal başlığı nedir?

Bir dahaki sefere bu sorunu var Terminal penceresinin başlığının ne olduğunu not edip geri rapor edebilir misiniz?

3. sudo öldür

MBP'nizi yeniden başlatmanın her zaman bu sorunu çözdüğünü belirtirsiniz.

Bununla birlikte, bir dahaki sefere bu sorunu bir daha gördüğünüzde (belki yukarıda anlattığım şeyi yaptıktan sonra), Etkinlik İzleyicisi'nden sudo öldürmeyi denemenizi isterim.

Bunu denedikten sonra, ne olduğunu bize bildirin.

4. .bash * dosyalarınızı taşımayı deneyin

Olası (çeşitli nedenlerle) kullanıcı dizininizde bir .bash_profile dosyası olabilir ve bu zaman zaman sorunlara neden olabilir. Bu, farkında bile olmadığınız bir şeydir, ancak herhangi bir .bash dosyasını bulan ve taşıyan bir betiği çalıştırmak için Automator'ı kullanabilirsiniz.

İşte bunu yapmak için örnek bir komut dosyası:

cd ~

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

Bu komut dosyası, ev klasörünüzdeki .bash ile başlayan tüm dosyaları yeni oluşturulan bir taşınan alt klasöre taşır .

Komut dosyasını çalıştırdıktan sonra bu klasörü kontrol edin ve içinde herhangi bir dosya olup olmadığını bize bildirin.

NOT: - Yeni alt klasörü istediğiniz herhangi bir şeyi etiketleyebilirsiniz. Bunu yapmak için, komut dosyasında taşınan iki örneği yalnızca kullanmak istediğiniz etiketi değiştirin.

[GÜNCELLEŞTİRME]

Denenecek başka şeyler var.

5. * .asl dosyalarını silmeyi deneyin

Henüz yapmadıysanız, * .asl dosyalarını silmeyi deneyin. Bunu yapmak için aşağıdakileri kullanın:

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

NOT: - Yeni bir kabuk oluşturması biraz zaman alabilir. Tamamlandığında, değişikliklerin geçerli olması için Terminal'den tamamen çıktığınızdan emin olun.

6. Güvenli Mod

MBP'nizi Güvenli Mod'da başlattığınızda davranışlarda herhangi bir fark olduğunu fark ettiniz mi? Güvenli Mod'da başlatmak için:

  1. Mac'inizi tamamen kapatın
  2. Mac'inizi yeniden başlatın
  3. Hemen tuşuna basın Shiftve basılı tutun
  4. Bırak Shift(: FileVault iki kez giriş yapmanız gerekebilir etkin varsa NOT) Eğer giriş penceresini gördüğünüzde tuşu.
  5. MBP'niz başladığında Terminal'i kullanmayı deneyin ve sorunu hala kopyalayıp kopyalayamadığınızı görün
  6. Tamamlandığında, MBP'nizi normal şekilde yeniden başlatarak Güvenli Mod'dan çıkabilirsiniz.

7. Dizini Aç

Bu muhtemelen sizin bahsetmediğiniz için geçerli değildir, ancak bir Açık Dizin ağına bağlıysanız, bu da size sorunlara neden olabilir. Genellikle bu sadece 10 - 15 saniye beklemeyi gerektirir, ancak bu durumda tamamlamak için beş veya daha fazla dakika süren terminal girişleri raporları gördüm.


Teşekkürler! Ben kullanıyorum zshve hatta boş olan .zshrc, .zprofile, .profilevb id oluşmaz, artı diğer programlar neden açıklamıyor /usr/local/binda asmak sanırım bu yüzden, 4. resmin dışında olduğunu. Onları aldıktan sonra diğer soruların cevabını geri alacağım.
romeovs

Bu soruların cevaplarını içeren bir güncelleme eklendi. loginSuçlu gibi görünüyor, ancak hala iTerm'de neden çalıştığını açıklamıyor bash.
romeovs

Cevabımı güncelledim. Ancak, Terminal oturum açma işleminin tamamlanmasını beklemeye ne kadar zaman çalıştığınızı belirtmediğinizi fark ettim. Sonunda giriş yapıp yapmadığını ya da sadece süresiz asılı olup olmadığını bilmek iyi olurdu.
Monomeeth

@romeovs Merak ediyorum, bu sorunu hiç çözdünüz mü?
Monomeeth

Hayır :( hala üzerinde çalışıyorum.Ama rağmen çok daha az oluşmaya başladı.
romeovs

6

Bu, kullanıcı başına maksimum işlemleri (veya muhtemelen maksimum işlemleri) aşmanız için mükemmel bir seçim gibi görünüyor.

Bir stok macOS kurulumunda kullanıcı başına 709 ( ulimit -u) ve maksimum 1064 işlem ( sysctl -a | grep maxp) alırsınız

Bunları hızlandırmanın kolay bir yolu, Server.app'ı App Store'dan yüklemek ve ardından yeniden başlatmaktır. Performans modunu daha yüksek sınırlar için de ayarlayabilirsiniz.

Kurulumunuzu açıklamadığınızdan (işletim sistemi sürümü ve derleme), işte bazı ipuçları - Sunucuyu yüklemeye başvurmadan sınırları değiştirmeyle ilgili eski makalelerin bazılarını okuduysanız, dosyaları değiştirme yeteneğinizi kısıtlayan SIP'yi kontrol ettiğinizden emin olun. uygulaması:


Mükemmel nokta! Bunu düşünmedim bile. :)
Monomeeth

@ Mononeth cevabınız harika. İçinde bir sürü harika şey var.
bmike

@bmike Durumun böyle olduğunu kontrol etmek için toplam işlem sayısını kontrol etmenin bir yolu var mı? Belki o zaman 709 işlem oluşturarak bile çoğaltabilirim?
romeovs

5

Ben de bunu birkaç aydır görüyorum. Son derece sinir bozucu. Onu düzelten tek şey yeniden başlat.

  • 2015 ortası MBP (dokunmatik çubuk yok)
  • MacOS 10.12.6 beta

Bazen oturum açma, tmux ile etkileşime girdikten sonra gerçekleşiyor

Önerilen tüm yaklaşımları başarısızlıkla denedim.

Bağlantılı olup olmadığından emin değilim, ancak asılan oturum açma işlemi için lsof -p LOGIN_PIDoldukça büyük bir dosya var /private/var/db/dyld/dyld_shared_cache_x86_64h.

29.08.2017 Güncelleme:

Hala sorun var. Bazen makine kötü duruma geçtiğinde, hata ayıklamak için kullanabildiğim başarılı bir şekilde oturum açmış terminal pencerelerim var.

Birçok komut düzgün çalışmıyor, ancak hepsi yazma zorluğu gösteren bir kalıp gösteriyor (stdout'a düşünüyorum). Örneğin, koşarken ls -al, ls: write errorstderr'e yayılmış olarak görüyorum . Ben çalıştırdığınızda ls -al > /dev/null, hiçbir şey stderr'e basılır.


Bunu çözme şansın var mı?
romeovs

İşletim sistemimi güncellediğim için sorun benim için çözüldü. Birkaç küçük sürüm için düzeltildi ve şu anda 10.13.3 (17D47) kullanıyorum.
Zack,

Ben de 10.13.3 (17D47) kullanıyorum! Les sıklaştı, ama bazen de oluyor.
romeovs

4

Sadece semptomu değil asıl konuyu tedavi etmek önemlidir. Bu yüzden aşağıdaki önerileri deneyin ve buna bağlı olarak daha fazla çözüm önerebilir.

  1. Terminalin sahibi hangi kullanıcı? :
    İlk ipucum, bunun hesabınızın nasıl kurulduğuyla ilgili olabileceğidir. Terminal, yalnızca yönetici kullanıcısının erişebileceği kaynaklara veya dizinlere erişmeye çalışıyorsa (sizin hesabınız yönetici değilse), bu durumda donma durumuna neden olabilir - terminale erişmenize izin vermeyebilir. Öyleyse devam edin ve bir terminal oturumuna ne zaman başladığınızı, başka bir kullanıcı değil, kullanıcının yerel olduğunu doğrulayın. Suçlu bir süreç yaratamayacağın gerçeği, beni bu yöne işaret ediyor.

  2. Control-Z veya Command-Z Türü :
    Bu kontrol tuşu dizisi çalışmakta olan bir programı askıya alır ve size bir kabuk istemi verir. Artık programın adını bulmak için jobs komutuna girebilir, ardından programı fg ile yeniden başlatabilir veya kill ile sonlandırabilirsiniz.

  3. Command-C tuşlarına basın :
    Terminal arka planda bir program çalıştırmaya çalışıyorsa bu kesilecektir. Birkaç kez dene. Herhangi bir çıktı görürseniz not alın

  4. Control-Q Tipi :
    Çıkış Control-S ile durdurulmuşsa, bu yeniden başlatılır.

  5. Alternatif bir kabuk edinin :
    Birkaç gün boyunca farklı bir kabuk denemek istiyorsanız, davranışları bazen Terminal'in belirli bir şekilde hareket etmesi durumunda verilen sorunu anlamanıza yardımcı olabilir. Alternatifler için aşağıdaki bağlantıları kontrol edin

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

Daha önce bahsedilmediyse, aşağıdakileri bilmek yardımcı olacaktır:

  • Terminal oturumunu nasıl başlatıyorsunuz? Bu, spot ışığı ya da masaüstü simgesiyle mi yoksa başka bir yolla mı?

  • Terminal kilitlendiğinde ne yapıyor? Bir komut çalıştırmanın ortasında mı (her kilitlenmeden önce aynı komut) veya terminal oturumuna / pencerelerine başladığınız andan itibaren kilitleniyor.

  • Terminalini genellikle ne için kullanırsın? Kullanımınızın çoğu yalnızca git ile ilgili komutlar içinse , genellikle oradaki işlerin çoğunu yapabileceğiniz için Mac için Github gibi bir şey kullanmanızı öneririm .


Ctrl-Z ve Ctrl-C her ikisi de sadece ekranda görünürler ^Zve ^CCtrl-Q hiçbir şey yapmaz. Genellikle kabuğu Terminal'de Command-N kullanarak açarım. Ben tam zamanlı bir programcıyım, bu yüzden terminali temelde her şey için kullanıyorum. Terminal herhangi bir şey yapılmadan önce kilitleniyor (açık login).
romeovs

@romeovs Pointer 1 hakkında ne düşünüyorsunuz kullanıcı tipiniz? Konuyla ilgili bir ekran görüntüsü de yardımcı olabilir. Thanks
pal4life

MacBook'umdaki varsayılan kullanıcı ve yönetici benim.
romeovs

4

Kök nedenini bulmak için SIP'yi devre dışı bırakıp dtrace girişini yapmaya çalışacağım (SIP'yi devre dışı bırakmak ve yeniden etkinleştirmek için bkz. Http://osxdaily.com/2015/10/05/disable-rootless-system-integrity-protection-mac -os-x / )

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

Size bir örnek çıktı vermeye çalışıyorum, sadece düşündüğümden daha basit şeyler olduğunu öğrendim. SIP'yi devre dışı bırakmanıza gerek yok, sadece giriş bilgilerini kopyalayın.

dtuss sistem çağrılarını döndürür ve işlerin yanlış gittiği yerlere dair bir ipucu verebilir.

cp /usr/bin/login .
sudo ls

şifrenizi verin. O zaman yapmak

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

kullanıcı adınızı girin, enter tuşuna basın

şifrenizi girin, enter tuşuna basın

'exit' yazıp enter tuşuna basın

ve son olarak dtruss_login.txt dosyasını örneğin https://gist.github.com/ adresine yükleyin.

Dosyanın içeriğini bu şekilde panoya kopyalayabilirsiniz.

cat dtruss_login.txt | pbcopy

Burada örnek bir giriş bulabilirsiniz: https://gist.github.com/wolframteetz/49c5188c9dfe68a3841fa18496679579

Her satırdaki ikinci tamsayı aramanın geçtiği zamandır.

Tabii ki, giriş kilitlendiğinde bunu çalıştırabilirseniz çok iyi olur, ama sizi doğru yaparsam bu imkansızdır… belki siz veya bir başkasının terminal kilitlendiğinde 'oturum açma' hakkında bir fikri vardır ?


Ahh. Bu oturum açtıktan birkaç saat veya gün sonra olan bir şey için çok acı gibi görünüyor. Neyi dtrussyakalayıp gösterebileceğini daraltabilir misin ?
bmike

Oturum açma oldukça muhtemel olan bir sistem çağrısında kilitlenirse, size gösterecektir. Sistem çağrıları arasında asılı kalırsa, hangisini göstereceğini gösterir ve gerçekte neler olup bittiğiyle ilgili ipucu verir. Örneğin, sistem çağrısı tarafından belirli bir yapılandırma dosyasını okuduktan sonra kilitlenirse, büyük olasılıkla bu yapılandırma ayrıştırılırken hata oluşur. O zaman yakından bakmalısın. Şebeke ile ilgili de olabilir ... siz onu
ayıklatana

Sorun şu ki, sorun çok geç olmadan el ile yeniden oluşturamam.
romeovs

Ardından komutu "forever" döngüsünde yürütün ve "2> dtruss_login.txt" yerine ">> dtruss_login.txt 2> & 1" yapın. Hata göründüğünde, çıktının sonunda göreceksiniz.
user2707001

Sonunda bir dtruss günlüğü alabildim: gist.github.com/romeovs/6661ae0db77e57281b531676cc5dc007 Girişim kilitlendiğinden beri, bu asla bitmiyor, bu yüzden yaklaşık 10s sonra ctrl-C'ed.
romeovs

1

loginKomut kaynak kodu Apple tarafından yayınlanmıştır. Web sitesi macOS 10.13.3'tür. Kaynak . Gerekli olan tek indirme system_cmds-790.30.1. Bir kere indirildikten sonra, proje yalnızca loginkomutu oluşturmak için kolayca değiştirilebilir . Değiştirilen proje velogin komut Gitvi'de davidanderson61 / system_cmds-10.13.3'te yer almaktadır .

Buradaki fikir değiştirmektir login hata ayıklama bilgilerini yazacak . Bu, loginkomutun neden kilitlendiğini belirlemeye yardımcı olur . Değişiklikler katılmak isteyen herkes yapılabilir. Bunun ben olduğumu düşündüm.

Hata ayıklama loginkomutunu yükleyin .

  1. Web sitesinden en son sürümü seçin davidanderson61 / system_cmds-10.13.3 / releases .

  2. Hata ayıklama loginkomutunu Downloadsklasörünüze indirin . "Varlıklar" altında, sağ tıklayın loginve "Bağlantılı Dosyayı Farklı İndir" i seçin, ardından "Kaydet" i seçin.

  3. Kısmen, Sistem Bütünlüğü Korumasını (SIP) devre dışı bırakın. Komut aşağıda verilmiştir. Komuta girmeden önce bir MacOS Recover'a ve ardından bir Terminal penceresine önyüklemeniz gerekecektir .

    csrutil  enable  --without  fs
  4. Orijinal loginkomutu kaydetmek için aşağıda verilen komutu girin . Eğer login.orignalzaten var, bu adımı atlayabilirsiniz.

    sudo  mv  /usr/bin/login  /usr/bin/login.original
  5. Hata ayıklama loginkomutunu kopyalamak ve uygun izinleri ayarlamak için aşağıda verilen komutları girin .

    sudo  cp  ~/Downloads/login  /usr/bin/login
    sudo  chmod  104555  /usr/bin/login
  6. Sistem Bütünlüğü Korumasını (SIP) etkinleştirin. Aşağıdaki komutu girin. Daha sonra yeniden başlatmalısınız.

    sudo  csrutil  clear

Konsol Uygulamasını Yapılandırma

Konsol uygulamasını, yalnızca loginkomuttan gelen mesajları gösterecek şekilde yapılandırma adımları aşağıdadır .

  1. Konsol uygulamasını açın.
  2. PIDAşağıda gösterildiği gibi bir sütun ekleyin .

    g2

  3. loginArama alanına girin .

    g3

    Arama alanı odaklandığında, tuşuna basın return. Arama alanı aşağıda gösterileni değiştirmelidir.

    g8

  4. Değişim Anyiçin Processaşağıda gösterildiği gibi.

    g4

  5. Liste Değişikliği Containsiçin Equalsaşağıda gösterildiği gibi.

    g5

  6. SaveDüğmesini seçin . "Aramayı Farklı Kaydet:" istendiğinde girip Loginseçin Save.

    g6

Sonuçlar aşağıda gösterildiği gibi görünmelidir. Konsol uygulamasını bir sonraki açışınızda, yalnızca "Giriş" düğmesini seçmeniz gerekir.

g7

apandis

GitHub Deposu Nasıl Oluşturuldu?

  1. Tıkla system_cmds.xcodeprojXcode'da açik dosyaya .
  2. Menü çubuğundan seçim yapın Source Control->Create Git Repositories....
  3. Menü çubuğundan seçim yapın Product->Scheme->New Scheme.... Ardından, loginHedef ve Ad olarak seçin .
  4. Menü çubuğundan seçim yapın Project->Build.
  5. Xcode'dan çıkın.
  6. GitHub'da oturum açın ve yeni bir havuz oluşturun.
  7. GitHub deponuzun Hızlı Kurulum sayfasının en üstünde g1, uzak havuz URL’sini kopyalamak için tıklayın .
  8. Bir Terminal uygulaması penceresi için aşağıdaki komutu girin. <remote repository URL>Önceki adımda kopyalanan URL ile değiştirin .

    git  remote  add  origin  <remote repository URL>
  9. Projeyi Xcode'da açın ve menü çubuğundan seçim yapın Source Control->Push....

İlk Sürüm Nasıl Oluşturuldu?

  1. Bir Terminal uygulaması penceresinden aşağıdaki komutları girin.

    git  tag  -a  v1.0  -m  "Original source code"
    git  push  origin  v1.0
  2. Yerleşik loginkomutu Downloadsklasörünüze kopyalayın.

  3. GitHub hesabınızdan, olarak yeni bir sürüm oluşturun v1.0. ~/Downloads/loginİkili dosya olarak ekleyin .


1

Ben de bu sorunu emacs sbt konsolu çalıştırırken yaşadım. Her ne zaman sbt konsolundan "güzelce" ilk önce sbt konsolundan çıkmak yerine sadece pencereyi öldürerek çıktım, pencerenin kapatılmasından sonra bile bir java işleminin askıya alınmasına neden oldu ve bir şekilde yeni terminal oturumlarının oluşturulmasını engelledi. Java işlemini aktivite izleyiciden zorla öldürdüm ve asılı terminal gerçekte, emacların içinden ve yeni bir sekmede başladı.

Şimdi, ben sadece komutunu kullanarak güzel çıkmak için emin olun exitveya ctrl-d(veya ctrl-c ctrl-demacs'taki term/multi-term), sonra pencereyi öldürür.


0
  1. İşleminizin gerçekten askıda kaldığını kontrol edin login
  2. Etkinlik İzleyicisine bir göz atın ve dikkat edin root başlattığınız ve düzgün bir şekilde bırakamadığınız (çarpışma, sadece terminali öldürdü, vb.) Ve hala devam etmekte olan işlemlere (örn. Nano, emacs, vim) dikkat edin.
  3. Bu işlemleri öldür ve giriş hemen çalışmalıdır.

0

Sadece iki sentim.

Metin düzenleyicimde terminal çalıştırmamı sağlayan Terminus Sublime Text Paketini kurdum.

Sublime Text'in hemen kapatılması terminalimin tekrar çalışmaya başlamasına izin verdi.


Bunun soruyu cevaplamaya yardımcı olacağını sanmıyorum. Bu, terminalin Terminus içinde çalıştırarak takılmasını önler mi? Olsa bile, burada başka bir problemi çözdüğünüz anlaşılıyor.
haykam

Normal terminalim Sublime Text ile ilgili bazı sorunlar yüzünden işe yaramayacak
Bolluk

0

FWIW, Ben de aynı problem vardı. Yeniden başlatmanın ardından çözülecek, ancak bunu günde birkaç kez yapma zamanından tasarruf etmek istedim. Belirli bir nodeJS ortamı kullandıktan sonra başladı, bu yüzden aktivite izleyicisine gittim ve devam eden bir node işlemi olduğunu fark ettim. Bu örneği öldürmek benim için sorunu çözdü, bu nedenle bunu yaşayan biri yerel olarak node ya da npm ile çalışmaya başlamışsa, bu sizin sorununuz olabilir.


Benim durumumda başıboş bir "java" süreci oldu ama Aktivite Monitöründe öldürülmesi terminalin durmasını engelledi!
Adam B,

0

Bir sokak nvim örneğini öldürmek bunu benim için düzeltti. Bunun nvim'e özgü olmadığını, ancak benim durumumda sorun yaratan bir nvim olduğunu düşünüyorum. Etkinlik izlemesinde yersiz bir terminal uygulaması aramak ve bir tane bulursanız onu öldürmek isterim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.