Ich habe ein seltsames Problem auf meinem neuen MacBook Pro (Ende 2016, Touch Bar).
Es funktioniert gut und dann, nachdem es eine Weile benutzt wurde, funktioniert das Öffnen neuer Terminalfenster nicht, weil es login
hängt. Neustart behebt das Problem.
Dies scheint ein Problem zu sein, das einige andere Leute hatten, also habe ich bereits alle ihre Lösungen ausprobiert (von1 und [2] ):
~/Library/Preferences/com.apple.Terminal.plist
/bin/zsh
bis /bin/sh
oder /bin/bash
).profile
, .zprofile
, ... Dies funktioniert nicht und ich kann validieren, dass das Problem auftritt, bevor die Shell überhaupt aufgerufen wird, denn wenn ich echo HEY
als erste Zeile meiner .zshenv
this nicht einmal erreicht werde. Es muss login
die Probleme verursachen. Das Bearbeiten /etc/profile
zum Hinzufügen eines Echos oben zeigt ebenfalls nichts anRun command:
Einstellung in meiner Terminalkonfiguration in etwas wie echo foo
funktioniert auch nicht (es Run inside shell
aktiviert oder deaktiviert zu lassen, ändert nichts).ssh-add -K
Schlüssel zwischen Neustarts nicht beibehalten, etwas, mit dem ich vorher nie Probleme hatte.Terminal
Fensters scheint eine tty-Datei ( /dev/ttys<number>
) zu erstellen.brew install
und installiert brew cask install
).Das ist wirklich schwer zu debuggen, weil ich es nicht reproduzieren kann und oft kann ich nicht einmal ein neues Terminal öffnen, um herauszufinden, was los ist.
Hat jemand Tipps?
Mit iTerm konnte ich eine Shell abrufen, indem ich den Startbefehl auf /bin/bash
. In dieser Shell sudo
funktioniert das allerdings nicht. Es hängt (ohne die Eingabeaufforderung anzuzeigen) und ctrl-C
funktioniert ctrl-D
nicht, wenn es hängt.
Die Verwendung einiger anderer Programme funktioniert in dieser Shell auch nicht: node
oder /usr/local/bin/node
beide hängen. Soweit ich das beurteilen kann, sind es Programme, die in /usr/local/bin
.
brew list --full-name
Ergebnisse in diesen Paketen:
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
Diese Punkte stimmen mit der Antwort von @Monomeeth überein:
Wenn es passiert, wird ein login
Element im Aktivitätsmonitor angezeigt. (Force) Beim Beenden wird auch das hängende Terminalfenster geschlossen. Durch manuelles Schließen des Fensters verschwindet der login
Vorgang nicht im Aktivitätsmonitor.
Der Titel des Terminals ist Terminal — login — term big — ttys001 — 89x18 — ⌘1
, wobei term big
der Name der Einstellungen ist.
In der Aktivitätsanzeige wird kein sudo
Prozess angezeigt. Ich kann einen sudo
Prozess erstellen, indem ich iTerm.app (das Bash verwendet) öffne und sudo echo ok
dort ausführe. Es kann nicht beendet werden, aber Force Quit funktioniert und beendet es:
bash-3.2$ sudo echo ok Getötet: 9
Wenn es passiert, funktioniert das Ausführen vonlogin
einer Shell, die noch verfügbar ist , während die in neueren Shells zu hängen scheint.login
Ich habe kürzlich einen neuen Laptop (MacBook Pro 2017, keine Touch Bar) und das Problem besteht weiterhin.
Ich habe auch die Shells gewechselt: Ich verwende jetzt fish
eine hübsche Vanilla-Konfiguration. Ich denke, das schließt die Muschel als Schuldigen aus.
Das Betriebssystem wurde ebenfalls auf 10.13.3 (17D47) High Sierra aktualisiert.
Ich habe versucht, so wenig wie möglich auf dieser Maschine zu installieren:
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
Keine Ahnung was das jetzt sein kann. Die einzigen Apps, die mir einfallen, sind Divvy
oder Apptivate
da beide veraltet erscheinen. Dies ist die Schnittmenge dessen, was auf der alten vs. der neuen Maschine installiert wurde:
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
Meine Env sieht normalerweise so aus:
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
Wie Sie sicher wissen, ist die Fehlersuche ein Eliminierungsprozess und erfordert oft einiges an Geduld. Ich möchte ein paar Dinge ausprobieren, um der Sache für Sie auf den Grund zu gehen.
1. Bestätigen Sie, dass es während der Anmeldung hängt
Wenn sich der Prozess, an dem er hängt, wirklich während der Anmeldung befindet, bedeutet dies, dass der Prozess immer noch darauf wartet, eine Anmeldesitzung zu erstellen. Angenommen, dies ist der Fall, dann hätte es noch nicht versucht, die Shell zu starten.
Um dies zu bestätigen, starten Sie beim nächsten Auftreten dieses Problems den Aktivitätsmonitor, um zu überprüfen, ob die Shell ausgeführt wird oder ob Sie nur einen Anmeldevorgang sehen .
Sobald Sie die Gelegenheit hatten, dies zu tun, melden Sie sich mit dem, was Sie gefunden haben.
HINWEIS:- Wenn Sie zufällig andere Terminals geöffnet haben, stellen Sie sicher, dass Sie den entsprechenden Prozess überprüfen. Ich vermute, dass der hängende Prozess derjenige mit der höchsten Prozess-ID-Nummer (PID) ist.
2. Was ist der Titel des Terminals?
Wenn dieses Problem das nächste Mal auftritt, können Sie sich den Titel des Terminalfensters notieren und berichten?
3. Beenden Sie sudo
Sie geben an, dass ein Neustart Ihres MBP dieses Problem immer löst.
Wenn Sie dieses Problem jedoch das nächste Mal haben (vielleicht nachdem Sie das getan haben, was ich oben unter 1 beschrieben habe), möchte ich, dass Sie versuchen, sudo von Activity Monitor zu beenden.
Wenn Sie dies versucht haben, lassen Sie uns wissen, was passiert.
4. Versuchen Sie, Ihre .bash*-Dateien zu verschieben
Es ist möglich (aus verschiedenen Gründen), dass Sie eine .bash_profile-Datei in Ihrem Benutzerverzeichnis haben und dies zeitweise Probleme verursacht. Dies ist etwas, dessen Sie sich vielleicht nicht einmal bewusst sind, aber Sie können Automator verwenden, um ein Skript auszuführen, das alle .bash-Dateien findet und verschiebt.
Hier ist ein Beispielskript dafür:
cd ~
mkdir moved
for F in .bash*
do
mv $F moved
done
Dieses Skript verschiebt alle Dateien, die mit .bash beginnen, in Ihrem Home-Ordner in einen neu erstellten verschobenen Unterordner.
Nachdem Sie das Skript ausgeführt haben, überprüfen Sie diesen Ordner und teilen Sie uns mit, ob Sie tatsächlich Dateien darin haben.
HINWEIS:- Sie können den neuen Unterordner beliebig benennen. Ändern Sie dazu einfach die beiden Vorkommen von moved im Skript in die gewünschte Bezeichnung.
[AKTUALISIEREN]
Einige weitere Dinge zum Ausprobieren.
5. Versuchen Sie, die *.asl-Dateien zu löschen
Falls noch nicht geschehen, versuchen Sie, die *.asl-Dateien zu löschen. Verwenden Sie dazu Folgendes:
sudo rm -rf /private/var/log/asl/*.asl
HINWEIS:- Dies kann einige Zeit dauern, da eine neue Shell erstellt wird. Wenn Sie fertig sind, stellen Sie sicher, dass Sie das Terminal vollständig verlassen, damit die Änderungen wirksam werden.
6. Abgesicherter Modus
Bemerken Sie einen Unterschied im Verhalten, wenn Sie Ihr MBP im abgesicherten Modus starten? So booten Sie in den abgesicherten Modus:
7. Öffnen Sie das Verzeichnis
Dies trifft in Ihrem Fall wahrscheinlich nicht zu, da Sie es nicht erwähnen, aber wenn Sie mit einem Open Directory-Netzwerk verbunden sind, könnte dies auch Probleme verursachen. Normalerweise würde dies nur eine Wartezeit von etwa 10 bis 15 Sekunden bedeuten, aber ich habe Berichte von Terminal-Logins gesehen, die in dieser Situation fünf oder mehr Minuten dauern.
zsh
, und selbst bei einem leeren .zshrc
, .zprofile
, .profile
, usw. kommt die ID nicht vor, und das erklärt nicht, warum andere Programme /usr/local/bin
ebenfalls hängen, also denke ich, dass 4. nicht im Bilde ist. Ich werde mit der Antwort auf die anderen Fragen zurückkommen, sobald ich sie bekommen habe.login
scheint der Schuldige zu sein, erklärt aber immer noch nicht, warum es in iTerm mit bash
.Dies scheint eine perfekte Lösung für Sie zu sein, wenn Sie die maximalen Prozesse pro Benutzer (oder möglicherweise maximale Prozesse) überschreiten.
Bei einer standardmäßigen macOS-Installation erhalten Sie 709 pro Benutzer ( ulimit -u
) und maximal 1064 Prozesse ( sysctl -a | grep maxp
)
Eine einfache Möglichkeit, diese zu erhöhen, besteht darin, Server.app aus dem App Store zu installieren und dann neu zu starten. Sie können den Leistungsmodus auch für höhere Limits einstellen.
Da Sie Ihr Setup (OS-Version und Build) nicht beschrieben haben, hier einige Tipps – überprüfen Sie unbedingt, ob SIP Ihre Fähigkeit zum Ändern von Dateien einschränkt, wenn Sie einige der älteren Artikel zum Ändern der Limits lesen, ohne auf die Installation des Servers zurückzugreifen. Anwendung:
stat
(über ) würde (anscheinend) hängen bleiben ... Natürlich kann es mehrere Ursachen für ähnliche Symptome geben, daher kann dies immer noch nützlich sein Antwort, dachte nur, ich würde darauf hinweisen, was ich gesehen habe.
ls -l
/dev/ttys???
Das beobachte ich auch seit einigen Monaten. Extrem frustrierend. Das einzige, was es behebt, ist ein Neustart.
Manchmal kommt es nach der Interaktion mit tmux zum Hängen der Anmeldung.
Ich habe alle empfohlenen Ansätze erfolglos ausprobiert.
Nicht sicher, ob es damit zusammenhängt, aber a lsof -p LOGIN_PID
zeigt eine ziemlich umfangreiche Datei /private/var/db/dyld/dyld_shared_cache_x86_64h
für den hängenden Anmeldeprozess.
Aktualisierung vom 29.08.2017:
Habe das Problem immer noch. Manchmal, wenn der Computer in einen schlechten Zustand gerät, habe ich offene Terminalfenster, die bereits erfolgreich angemeldet sind und die ich zum Debuggen verwenden kann.
Viele Befehle werden nicht richtig ausgeführt, aber sie alle zeigen ein Muster von Schreibproblemen (zu stdout, denke ich). Wenn ich beispielsweise laufe ls -al
, sehe ich , dass ls: write error
es an stderr ausgegeben wird. Wenn ich laufe ls -al > /dev/null
, wird nichts auf stderr gedruckt.
Es ist wichtig, das eigentliche Problem zu behandeln und nicht nur das Symptom. Probieren Sie also die folgenden Vorschläge aus und aktualisieren Sie sie, sodass auf dieser Grundlage auch weitere Abhilfemaßnahmen vorgeschlagen werden können.
Welchem Benutzer gehört das Terminal? :
Meine erste Vermutung ist, dass dies mit der Einrichtung Ihres Kontos zusammenhängen kann. Wenn das Terminal versucht, auf die Ressourcen oder Verzeichnisse zuzugreifen, auf die nur der Administrator zugreifen kann (wenn Ihr Konto kein Administrator ist), kann dies zum Einfrieren des Zustands führen, sodass Sie nicht auf das Terminal zugreifen können. Machen Sie also weiter und stellen Sie sicher, dass beim Starten einer Terminalsitzung diese lokal für Ihren Benutzer und nicht für einen anderen Benutzer ist. Die Tatsache, dass Sie keinen Sudo-Prozess erstellen können, weist mich in diese Richtung.
Geben Sie Control-Z oder Command-Z ein:
Diese Steuertastenfolge hält ein Programm an, das möglicherweise ausgeführt wird, und gibt Ihnen einen Shell-Prompt. Jetzt können Sie den Befehl jobs eingeben, um den Namen des Programms zu finden, und dann das Programm mit fg neu starten oder mit kill beenden.
Drücken Sie Command-C :
Dies wird unterbrochen, wenn das Terminal versucht, ein Programm im Hintergrund auszuführen. Versuchen Sie es ein paar Mal. Beachten Sie, ob Sie eine Ausgabe sehen
Geben Sie Control-Q ein :
Wenn die Ausgabe mit Control-S gestoppt wurde, wird sie dadurch neu gestartet.
Holen Sie sich eine alternative Shell :
Wenn Sie für ein paar Tage eine andere Shell ausprobieren möchten, kann Ihnen deren Verhalten manchmal helfen, das Problem mit Terminal zu verstehen, wenn sie sich auf eine bestimmte Weise verhalten. Überprüfen Sie diese Links unten auf Alternativen
https://git-scm.com/downloads/guis
https://computers.tutsplus.com/tutorials/beyond-terminal-4-os-x-terminal-alternatives--mac-56217
Hilft, Folgendes zu wissen, falls noch nicht erwähnt:
Wie initiieren Sie die Terminalsitzung? Ist dies über Spotlight oder ein Desktop-Symbol oder auf andere Weise?
Was macht das Terminal, wenn es hängt? Ist es mitten in der Ausführung eines Befehls (immer derselbe Befehl, bevor es hängt) oder hängt es nur ab dem Moment, an dem Sie eine Terminalsitzung / Windows starten.
Wofür verwenden Sie Ihr Terminal normalerweise? Wenn ein Großteil Ihrer Verwendung nur für git-bezogene Befehle verwendet wird, würde ich vorschlagen, so etwas wie Github für Mac zu verwenden, da Sie normalerweise die meisten Dinge von dort aus erledigen können.
^Z
Strg-Z und Strg-C werden beide nur als und
auf dem Bildschirm angezeigt ^C
, Strg-Q macht nichts. Normalerweise öffne ich die Shell mit Command-N im Terminal. Ich bin ein Vollzeit-Programmierer, also benutze ich das Terminal im Grunde für alles. Das Terminal hängt, bevor irgendetwas ausgeführt wird (on login
).Ich würde versuchen, die SIP- und dtrace-Anmeldung zu deaktivieren, um die Ursache zu finden (um SIP zu deaktivieren und wieder zu aktivieren, siehe 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
Beim Versuch, Ihnen eine Beispielausgabe zu geben, habe ich gerade herausgefunden, dass die Dinge viel einfacher sind, als ich dachte. Sie müssen SIP nicht deaktivieren, kopieren Sie einfach die Anmeldung.
dtuss gibt die Systemaufrufe zurück und gibt möglicherweise einen Hinweis darauf, wo etwas schief geht.
cp /usr/bin/login .
sudo ls
geben Sie Ihr Passwort ein. Dann mach
sudo dtruss -d -e ./login 2> dtruss_login.txt
Geben Sie Ihren Benutzernamen ein und drücken Sie die Eingabetaste
Geben Sie Ihr Passwort ein und drücken Sie die Eingabetaste
Geben Sie „exit“ ein und drücken Sie die Eingabetaste
und schließlich dtruss_login.txt auf zB https://gist.github.com/ hochladen
Sie können den Inhalt der Datei so in die Zwischenablage kopieren
cat dtruss_login.txt | pbcopy
Einen Beispiel-Login finden Sie hier: https://gist.github.com/wolframteetz/49c5188c9dfe68a3841fa18496679579
Die zweite ganze Zahl in jeder Zeile ist die Zeit, die der Anruf gedauert hat.
Natürlich wäre es großartig, wenn Sie dies ausführen könnten, wenn das Login hängt, aber wenn ich Sie richtig verstehe, ist dies unmöglich .... vielleicht haben Sie oder jemand anderes eine Idee, wie man sich 'dtruss login', wenn das Terminal hängt ?
dtruss
erfasst und angezeigt werden könnte?Der login
Quellcode des Befehls wurde von Apple veröffentlicht. Die Website ist macOS 10.13.3 Source . Der einzige erforderliche Download ist system_cmds-790.30.1
. Nach dem Herunterladen kann das Projekt einfach geändert werden, um nur den login
Befehl zu erstellen. Das geänderte Projekt und login
der Befehl wurden in GitHub unter davidanderson61/system_cmds-10.13.3 abgelegt .
Die Idee hier ist, zu modifizieren login
, um Debug-Informationen in die Konsole zu schreiben. Dies würde helfen, festzustellen, warum der login
Befehl hängt. Die Änderungen können von jedem vorgenommen werden, der teilnehmen möchte. Ich nahm an, das wäre ich gewesen.
login
Befehl installieren.Wählen Sie die neueste Version von der Website davidanderson61/system_cmds-10.13.3/releases aus .
Laden Sie den Debug- login
Befehl in Ihren Downloads
Ordner herunter. Klicken Sie unter „Assets“ mit der rechten Maustaste login
und wählen Sie „Verknüpfte Datei herunterladen als“ und dann „Speichern“.
Deaktivieren Sie teilweise den Systemintegritätsschutz (SIP). Der Befehl ist unten angegeben. Bevor Sie den Befehl eingeben, müssen Sie zu einem macOS Recover und dann zu einem Terminalfenster booten.
csrutil enable --without fs
Geben Sie den unten angegebenen Befehl ein, um den ursprünglichen login
Befehl zu speichern. Falls login.orignal
bereits vorhanden, können Sie diesen Schritt überspringen.
sudo mv /usr/bin/login /usr/bin/login.original
Geben Sie die unten angegebenen Befehle ein, um den Debug login
-Befehl zu kopieren und die richtigen Berechtigungen festzulegen.
sudo cp ~/Downloads/login /usr/bin/login
sudo chmod 104555 /usr/bin/login
Aktivieren Sie den Systemintegritätsschutz (SIP). Geben Sie den folgenden Befehl ein. Danach sollten Sie neu starten.
sudo csrutil clear
Im Folgenden finden Sie die Schritte zum Konfigurieren der Konsolenanwendung, um nur Meldungen des login
Befehls anzuzeigen.
Fügen Sie eine PID
Spalte hinzu, wie unten gezeigt.
Geben Sie login
in das Suchfeld ein.
Während das Suchfeld den Fokus hat, drücken Sie die returnTaste . Das Suchfeld sollte sich wie unten gezeigt ändern.
Wechseln Sie Any
zu Process
, wie unten gezeigt.
Liste Wechseln Sie Contains
zu Equals
, wie unten gezeigt.
Wählen Sie die Save
Schaltfläche aus. Wenn Sie nach "Suche speichern unter:" gefragt werden, geben Sie ein Login
und wählen Sie dann Save
.
Die Ergebnisse sollten wie unten gezeigt aussehen. Wenn Sie die Konsolenanwendung das nächste Mal öffnen, müssen Sie nur die Schaltfläche „Anmelden“ auswählen.
system_cmds.xcodeproj
in Xcode geöffnete Datei.Source Control->Create Git Repositories...
.Product->Scheme->New Scheme...
. Als nächstes wählen Sie login
als Ziel und Name aus.Project->Build
.Geben Sie für ein Terminal-Anwendungsfenster den folgenden Befehl ein. <remote repository URL>
Durch die im vorherigen Schritt kopierte URL ersetzen .
git remote add origin <remote repository URL>
Öffnen Sie das Projekt in Xcode und wählen Sie in der Menüleiste Source Control->Push...
.
Geben Sie in einem Terminal-Anwendungsfenster die folgenden Befehle ein.
git tag -a v1.0 -m "Original source code"
git push origin v1.0
Kopieren Sie den erstellten login
Befehl in Ihren Downloads
Ordner.
Erstellen Sie in Ihrem GitHub-Konto eine neue Version als v1.0
. ~/Downloads/login
Als Binärdatei anhängen .
Ich hatte dieses Problem auch beim Ausführen der sbt-Konsole in emacs. Immer wenn ich die sbt-Konsole verließ, indem ich einfach das Fenster beendete, anstatt die sbt-Konsole zuerst "schön" zu verlassen, führte dies dazu, dass ein Java-Prozess auch nach dem Schließen des Fensters hängen blieb und irgendwie verhinderte, dass neue Terminalsitzungen erstellt wurden. Ich habe den Java-Prozess vom Aktivitätsmonitor aus zwangsweise beendet, und das hängende Terminal wurde tatsächlich gestartet, sowohl innerhalb von Emacs als auch in einem neuen Tab.
Jetzt vergewissere ich mich einfach, dass ich mit dem Befehl exit
or ctrl-d
(oder ctrl-c ctrl-d
in emacs term/multi-term
) sauber beende und dann das Fenster schließe.
login
root
Prozesse (z. B. nano, emacs, vim), die Sie möglicherweise gestartet und nicht richtig beendet haben (Absturz, gerade beendetes Terminal usw.) und die noch laufen.Nur meine zwei Cent.
Ich habe das Terminus-Paket für Sublime Text installiert, mit dem ich Terminal in meinem Texteditor ausführen kann.
Durch das Schließen von Sublime Text konnte mein Terminal sofort wieder arbeiten.
FWIW, ich hatte das gleiche Problem. Es würde nach dem Neustart behoben, aber ich wollte mir die Zeit sparen, dies mehrmals am Tag zu tun. Es begann nach der Verwendung einer bestimmten nodeJS-Umgebung, also ging ich in den Aktivitätsmonitor und bemerkte, dass ein Node-Prozess im Gange war. Das Beenden dieser Instanz hat das Problem für mich gelöst. Wenn also jemand, der dies erlebt, kürzlich begonnen hat, lokal mit node oder npm zu arbeiten, könnte das Ihr Problem sein.
Das Beenden einer streunenden nvim-Instanz hat dies für mich behoben. Ich nehme an, dies ist nicht spezifisch für nvim, aber etwas, das nvim in meinem Fall getan hat, hat Probleme verursacht. Ich würde im Aktivitätsmonitor nach einer fehl am Platz liegenden verwaisten Terminal-App suchen und diese beenden, wenn Sie eine finden.
In meinem Fall blieb das neue Terminalfenster nach der Anzeige hängen Last login: Tue Nov 24 18:31:39 on ttys001
und der Titel des Terminalfensters zeigte manpath
.
Es stellte sich heraus, dass dies geschah, weil ich meinen Xcode von 11.7 auf 12.2 aktualisiert hatte, aber die neuen Befehlszeilentools noch nicht installiert hatte. Nach dem Start von Xcode öffnete sich das Terminal ohne Probleme oder Verzögerungen.
NoahL
Romeovs
Chris Page
Chris Page
Romeovs
Romeovs
fish
mit einer hübschen Vanilla-Konfiguration), sodass ich wirklich nicht sagen kann, was es ist.David Anderson
julien_c
julien_c
linden
ps -ef
eine Reihe von Prozessen gedruckt werden, aber nur solche ohne zugewiesenes Terminal;cd /dev; echo tty*
funktionierte,ls -l tty*
würde aber hängen...ls -l ttys?
funktionierte,ls -l ttys???
würde hängen.linden
sudo
Prozesse in der Liste der nicht mit dem Terminal verbundenen Prozesse (??
in derps
Ausgabe) undnode
wurden verwendet. Ich erwähne dies, weil ich sowohlnode
als auchsudo
in der Frage sehe. Ich bin mir nicht sicher, ob dies etwas Relevantes oder nur Zufall ist, aber ich dachte, ich erwähne es.linden
ps -fp $$
von einer ansonsten funktionierenden Shell reagierte auch nicht. Ich habe es nicht mit einem benutzerdefinierten Formatps
versucht, aber estty
könnte interessant sein, einen zu versuchen, der das Feld ausschließt. Oh, und der Neustart hat (zumindest vorübergehend) das Problem auf dem Computer behoben, auf dem ich das gesehen habe. :-/