터미널 로그인이 멈춤


27

새 MacBook Pro (late-2016, touch bar)에 이상한 문제가 있습니다.

제대로 작동 한 다음 잠시 동안 사용한 후에는 새 터미널 창을 여는 것이 작동하지 않아 작동하지 않습니다 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을 사용하여 start 명령을로 설정하여 쉘을 얻을 수있었습니다 /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 :

이 요점은 @Monomeeth의 답변과 일치합니다.

  1. 발생하면 login항목이 활동 모니터에 표시됩니다. (강제) 종료하면 걸려 있던 터미널 창이 닫힙니다. 창을 수동으로 닫아도 login활동 모니터에서 프로세스가 사라지지는 않습니다 .

  2. 터미널 제목은입니다 Terminal — login — term big — ttys001 — 89x18 — ⌘1. 여기서 term big설정 이름입니다.

  3. sudo활동 모니터에 프로세스가 표시 되지 않습니다 . sudobash를 사용하는 iTerm.app를 열고 실행 하여 프로세스를 만들 수 있습니다 sudo echo ok. 종료 할 수는 없지만 강제 종료가 작동하여 종료합니다.

    bash-3.2 $ sudo echo ok 종료 : 9

업데이트 4 :

가 발생하면 실행 login을 계속 사용할 수있어 쉘에서하는 수행 그동안 작업을 login새로운 껍질에 멈춘 것 같다.

업데이트 5 :

최근에 새로운 랩탑 (MacBook Pro 2017, Touch Bar 없음)이 있는데 문제가 지속됩니다.

쉘도 바꿨습니다. 이제 fish예쁜 바닐라 설정을 사용 하고 있습니다. 나는 그것이 껍질을 범인으로 배제한다고 생각합니다.

OS는 10.13.3 (17D47) High Sierra로 업데이트되었습니다.

이 컴퓨터에 가능한 한 적게 설치하려고했습니다.

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를 다시 설치하는 것입니다. 그러나 Mac이 매우 새롭기 때문에 이것이 작동하는지 모르겠습니다.
NoahL

@klanomath 완료!
romeovs

로그인이 무엇인지 파악하려면 활동 모니터에서 해당 로그인을 선택하고 샘플 프로세스를 선택하십시오. 중단 된 다른 프로세스도 마찬가지입니다. 그러나이 수준의 디버깅은 StackExchange Q & A에 적합하지 않을 수 있습니다. 샘플 파일을 포함하여 Apple에 버그 보고서를 제출하거나이 수준에서 문제 진단을 지원할 수있는 사람을 찾는 것이 좋습니다. 참조 developer.apple.com/bug-reporting
크리스 페이지

얼마나 걸려요? 10 분 동안 그대로 두었습니까? 컴퓨터가 Open Directory 네트워크에 연결되어 있습니까? 특히, 로그인은 사용자 정보를 가져와야하며 사용 중이거나 응답이없는 디렉토리 서버가있는 OD 네트워크에있는 경우 응답하는 데 몇 분이 걸릴 수 있습니다. 다른 프로그램도 사용자 정보를 가져 오며이 문제로 어려움을 겪을 수 있습니다.
Chris 페이지

더 이상 기다리지 않고 다음에 시도합니다. Open Directory 네트워크에 바인딩되어 있지 않습니다. 네트워크에 연결되어 있지 않을 때도 이러한 오류가 발생합니다.
romeovs

답변:


13

잘 아시다시피, 문제 해결은 제거 과정이며 종종 상당한 인내심이 필요합니다. 나는 당신을 위해 이것의 바닥에 도달하려고 몇 가지를 시도하고 싶습니다.

1. 로그인 중에 멈춤 확인

걸려있는 프로세스가 실제로 login 인 경우 프로세스가 여전히 로그인 세션을 작성하기 위해 대기 중임을 의미합니다. 이것이 사실이라고 가정하면 아직 쉘을 시작하려고 시도하지 않았을 것입니다.

이를 확인하려면 다음에이 문제가 발생하면 Activity Monitor를 시작하여 셸이 실행 중인지 또는 로그인 프로세스 만 보이는지 확인하십시오 .

이 작업을 수행 한 후에는 찾은 내용을 다시보고하십시오.

참고 :- 다른 터미널이 열려있는 경우 해당 프로세스를 확인하십시오. 내 생각에 교수형 프로세스는 프로세스 ID (PID) 번호가 가장 높은 프로세스입니다.

2. 터미널 제목은 무엇입니까?

다음에이 문제가 발생하면 터미널 창의 제목을 기록하고 다시보고 할 수 있습니까?

3. sudo를 죽여라

MBP를 재부팅하면 항상이 문제가 해결됩니다.

그러나 다음에이 문제가 발생하면 (위의 1에서 설명한 것을 수행 한 후) Activity Monitor에서 sudo를 죽이려고합니다.

시도한 후에는 어떻게되는지 알려주십시오.

.bash * 파일을 이동해보십시오.

여러 가지 이유로 사용자 디렉토리에 .bash_profile 파일이있을 수 있으며 이로 인해 간헐적 인 문제가 발생합니다. 이것은 알지도 못할 수도 있지만 Automator를 사용하여 .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. 안전 모드

안전 모드에서 MBP를 시작할 때 동작에 차이가 있습니까? 안전 모드로 부팅하려면

  1. Mac을 완전히 종료
  2. Mac을 재시동하십시오
  3. 즉시 Shift키를 누르고 아래로 유지
  4. Shift로그인 윈도우가 표시되면 키를 놓아 두십시오 (참고 : FileVault를 활성화 한 경우 두 번 로그인해야 할 수도 있습니다).
  5. MBP가 시작되면 터미널을 사용하여 문제를 계속 복제 할 수 있는지 확인하십시오.
  6. 완료되면 정상적으로 MBP를 다시 시작하여 안전 모드를 종료 할 수 있습니다

7. 디렉토리 열기

언급하지 않았기 때문에 귀하의 경우에는 적용되지 않지만 Open Directory 네트워크에 연결되어 있으면 문제가 발생할 수도 있습니다. 일반적으로 약 10-15 초 동안 대기하는 것이 수반되지만이 상황에서 터미널 로그인이 완료되는 데 5 분 이상이 걸린다는보고가있었습니다.


감사! 내가 사용하고 zsh, 그리고 심지어는 빈과 .zshrc, .zprofile, .profile, 등 ID가 발생하지 않습니다 플러스에서 다른 프로그램 이유는 설명하지 않습니다 /usr/local/bin또한이 중단 제가 생각하기 때문에, 4. 그림 밖으로이다. 다른 질문에 대한 답변을 받으면 다시 답변하겠습니다.
romeovs

이 질문에 대한 답변으로 업데이트를 추가했습니다. login는 범인 인 것처럼 보이지만 여전히 iTerm이 (가) iTerm에서 작동하는 이유를 설명하지는 않습니다 bash.
romeovs 2012 년

내 답변을 업데이트했습니다. 그러나 터미널 로그인이 완료되기를 얼마나 오래 시도했는지 표시하지 않았다는 것을 알게되었습니다. 결국 로그인하는지 또는 무기한으로 정지하는지 여부를 아는 것이 좋습니다.
Monomeeth

@romeovs 궁금해서,이 문제를 해결 한 적이 있습니까?
Monomeeth

nope :( 아직 작업 중입니다. 훨씬 덜 발생하기 시작했습니다.
romeovs

6

이는 사용자 당 최대 프로세스 수 (또는 최대 프로세스 수)를 초과하는 데 적합합니다.

주식 맥 OS 설치에 당신은 사용자 (당 709 수 ulimit -u()와 1064 개 최대 프로세스 sysctl -a | grep maxp)

이 문제를 해결하는 쉬운 방법은 App Store에서 Server.app를 설치 한 다음 재부팅하는 것입니다. 더 높은 한계를 위해 성능 모드를 설정할 수도 있습니다.

설정 (OS 버전 및 빌드)에 대해 설명하지 않았으므로 여기에 몇 가지 팁이 있습니다. 서버 설치에 의존하지 않고 한계를 변경하는 것에 대한 이전 기사 중 일부를 읽으면 SIP가 파일 변경 기능을 제한하는지 확인하십시오. 앱:


훌륭한 포인트! 나는 이것을 고려하지 않았다. :)
Monomeeth

@Monomeeth 당신의 대답은 굉장합니다. 그 안에 많은 좋은 것들.
bmike

@bmike 총 프로세스 수를 확인하여 이것이 사실인지 확인할 수있는 방법이 있습니까? 709 개의 프로세스를 만들어서 재현 할 수도 있을까요?
romeovs

5

나는 또한 몇 달 동안 이것을 보았습니다. 매우 실망스러운. 그것을 고치는 것은 재부팅입니다.

  • 2015 년 중반 MBP (터치 바 없음)
  • MacOS 10.12.6 베타

때때로 tmux와 상호 작용 한 후 로그인이 중단됩니다.

모든 권장 방법을 성공적으로 시도하지 못했습니다.

관련이 있는지 확실하지 않지만 a lsof -p LOGIN_PID/private/var/db/dyld/dyld_shared_cache_x86_64h정지 된 로그인 프로세스에 대한 매우 큰 파일 을 보여줍니다 .

2017 년 8 월 29 일 업데이트 :

여전히 문제가 있습니다. 때로는 컴퓨터가 나쁜 상태에있을 때 디버깅에 사용할 수 있도록 이미 로그인 한 터미널 창을 열었습니다.

많은 명령이 제대로 실행되지 않지만 모두 쓰기에 문제가있는 패턴을 보여줍니다 (stdout에 대해서는 생각 중입니다). 예 를 들어을 실행 하면 stderr로 방출되는 ls -al것을 볼 수 ls: write error있습니다. 내가 실행하면 ls -al > /dev/nullstderr에 아무것도 인쇄되지 않습니다.


이것을 알아 낸 행운이 있습니까?
romeovs

OS를 업데이트 한 후이 문제가 해결되었습니다. 몇 가지 부 버전으로 수정되었으며 현재 10.13.3 (17D47)을 실행 중입니다.

10.13.3 (17D47)도 실행 중입니다! 그것은 자주 병에 걸리지 만 때로는 때때로 발생합니다.
romeovs

4

증상뿐만 아니라 실제 문제를 다루는 것이 중요합니다. 따라서 다음 제안을 시도하고 그에 따라 추가 조치를 제안 할 수 있도록 업데이트하십시오.

  1. 터미널을 소유 한 사용자는 누구입니까? :
    첫 번째 직감은 계정 설정 방법과 관련이 있다는 것입니다. 터미널이 관리자 사용자 만 할 수있는 리소스 나 디렉토리에 액세스하려고하면 (사용자가 아닌 관리자 계정 인 경우) 터미널이 액세스 할 수없는 정지 상태가 될 수 있습니다. 계속해서 터미널 세션을 시작할 때 다른 사용자가 아닌 사용자에게 로컬 세션인지 확인하십시오. sudo 프로세스를 만들 수 없다는 사실은이 방향을 가리키고 있습니다.

  2. Control-Z 또는 Command-Z 유형 :
    이 제어 키 시퀀스는 실행중인 프로그램을 일시 중단하고 셸 프롬프트를 표시합니다. 이제 jobs 명령을 입력하여 프로그램 이름을 찾은 다음 fg로 프로그램을 다시 시작하거나 kill로 종료하십시오.

  3. Press Command-C :
    터미널이 백그라운드에서 프로그램을 실행하려고하면 중단됩니다. 몇 번 시도하십시오. 출력이 보이면 참고하십시오.

  4. Control-Q Type :
    Control-S로 출력이 중지되면 다시 시작됩니다.

  5. 대체 쉘 얻기 :
    며칠 동안 다른 쉘을 시험 해보고 싶다면, 특정 방식으로 행동 할 때 터미널의 문제를 이해하는 데 도움이 될 수 있습니다. 대안에 대해서는 아래 링크를 확인하십시오

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

아직 언급하지 않은 경우 다음을 아는 데 도움이됩니다.

  • 터미널 세션은 어떻게 시작합니까? 스포트라이트 나 바탕 화면 아이콘 또는 다른 방법으로 표시됩니까?

  • 단말기가 멈췄을 때 무엇을하고 있습니까? 명령을 실행하는 중간에 있습니까 (매번 멈출 때마다 동일한 명령) 또는 터미널 세션 / 창을 시작하는 순간부터 중단됩니다.

  • 당신은 보통 무엇을 위해 터미널을 사용합니까? 대부분의 경우 git 관련 명령에만 사용하는 경우 일반적으로 거기에서 대부분의 작업을 수행 할 수 있으므로 Mac 용 Github 와 같은 것을 사용하는 것이 좋습니다 .


Ctrl 키-Z와 Ctrl-C를 모두 바로 화면에 표시 ^Z하고 ^C, CTRL-Q는 아무것도하지 않습니다. 나는 보통 터미널에서 Command-N을 사용하여 쉘을 엽니 다. 나는 풀 타임 프로그래머이므로 기본적으로 모든 것을 위해 터미널을 사용합니다. 실행하기 전에 터미널이 정지됩니다 (on login).
romeovs 2012 년

@romeovs 사용자 유형에 대한 포인터 1은 어떻습니까? 문제가있는 스크린 샷도 도움이 될 것입니다. 감사합니다
pal4life 2016 년

내 맥북의 기본 사용자 및 관리자입니다.
romeovs

4

SIP 및 dtrace 로그인을 비활성화하여 근본 원인을 찾으려고합니다 (SIP를 비활성화하고 다시 활성화하려면 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

예제 출력을 제공하려고 시도한 결과 방금 생각했던 것보다 훨씬 간단하다는 것을 알았습니다. SIP를 비활성화 할 필요없이 로그인 만 복사하면됩니다.

dtuss는 시스템 호출을 리턴하며 문제가 발생한 위치에 대한 힌트를 제공 할 수 있습니다.

cp /usr/bin/login .
sudo ls

비밀번호를 입력하십시오. 그런 다음

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

사용자 이름을 입력하고 Enter 키를 누릅니다

비밀번호를 입력하고 Enter 키를 누릅니다

'종료'를 입력하고 Enter 키를 누릅니다

마지막으로 dtruss_login.txt를 https://gist.github.com/에 업로드 하십시오.

파일의 내용을 다음과 같이 클립 보드에 복사 할 수 있습니다

cat dtruss_login.txt | pbcopy

여기에서 로그인 예를 찾을 수 있습니다 : https://gist.github.com/wolframteetz/49c5188c9dfe68a3841fa18496679579

각 줄의 두 번째 정수는 호출에 걸린 시간입니다.

물론, 로그인이 멈췄을 때 이것을 실행할 수 있다면 좋을 것입니다. 그러나 내가 당신을 올바르게 얻는다면, 이것은 불가능합니다 .... 어쩌면 당신이나 누군가가 터미널이 멈췄을 때 'dtruss login'에 대한 아이디어를 가지고있을 것입니다 ?


아야. 이것은 로그인이 시작된 후 몇 시간 또는 며칠 동안 발생하는 많은 고통처럼 보입니다. dtruss캡처하고 보여줄 수있는 것을 좁힐 수 있습니까 ?
bmike

로그인이 시스템 호출에서 정지하면 상당히 가능성이 높습니다. 시스템 호출 사이에 응답하지 않으면 시스템 호출 사이에 표시되며 실제로 진행중인 작업에 대한 힌트를 제공합니다. 예를 들어, 시스템 호출로 특정 구성 파일을 읽은 후 중단되면 오류는 해당 구성을 구문 분석하는 동안 발생합니다. 그때 자세히 살펴 봐야합니다. 또한 네트워크와 관련이있을 수 있습니다. 디버그 할 때까지 아는 사람;)
user2707001

문제는 너무 늦을 때까지 수동으로 문제를 재현 할 수 없다는 것입니다.
romeovs

그런 다음 "forever"루프에서 명령을 실행하고 "2> dtruss_login.txt"대신 ">> dtruss_login.txt 2> & 1"을 수행하십시오. 오류가 나타나면 출력이 끝날 때 나타납니다.
user2707001

: 나는 마침내 dtruss 로그 얻을 수있었습니다 gist.github.com/romeovs/6661ae0db77e57281b531676cc5dc007를 10 초에 대한 후 CTRL-C'ed 나는 그래서, 로그인 중단하기 때문에이 결코 종료합니다.
romeovs

1

login명령 소스 코드는 애플이 출판되었습니다. 웹 사이트는 macOS 10.13.3 Source 입니다. 필요한 다운로드는 system_cmds-790.30.1입니다. 다운로드 한 후에는 login명령 만 작성하도록 프로젝트를 쉽게 수정할 수 있습니다 . 수정 된 프로젝트와 login명령은 GitHub의 davidanderson61 / system_cmds-10.13.3에 있습니다.

여기서 아이디어 login는 콘솔에 디버그 정보를 쓰 도록 수정 하는 것입니다. 이것은 login명령이 정지 된 이유를 판별하는 데 도움 이됩니다. 참여하고자하는 사람이라면 누구나 수정할 수 있습니다. 나는 이것이 나일 것이라고 생각했다.

디버그 login명령을 설치하십시오 .

  1. davidanderson61 / system_cmds-10.13.3 / releases 웹 사이트에서 최신 릴리스를 선택하십시오 .

  2. 폴더에 디버그 login명령을 다운로드 하십시오 Downloads. "자산"에서 마우스 오른쪽 단추를 클릭 login하고 "다른 이름으로 링크 된 파일 다운로드"를 선택한 다음 "저장"을 선택하십시오.

  3. 부분적으로 SIP (System Integrity Protection)를 비활성화하십시오. 명령은 다음과 같습니다. 명령을 입력하기 전에 macOS Recover 로 부팅 한 다음 터미널 창 으로 부팅해야합니다 .

    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 (System Integrity Protection)를 활성화하십시오. 다음 명령을 입력하십시오. 나중에 다시 시작해야합니다.

    sudo  csrutil  clear

콘솔 응용 프로그램 구성

다음은 login명령의 메시지 만 표시하도록 콘솔 응용 프로그램을 구성하는 단계 입니다.

  1. 콘솔 응용 프로그램을 엽니 다.
  2. PID아래와 같이 열을 추가하십시오 .

    g2

  3. login검색 필드에 입력하십시오 .

    g3

    검색 필드에 포커스가있는 동안 return키를 누릅니다. 검색 필드가 아래와 같이 변경됩니다.

    g8

  4. 변경 AnyProcess다음과 같이.

    g4

  5. 목록 변경 ContainsEquals아래와 같이.

    g5

  6. Save버튼을 선택하십시오 . "다른 이름으로 검색 저장 :"을 묻는 메시지가 나타나면를 입력 Login한 다음을 선택하십시오 Save.

    g6

결과는 아래와 같이 나타납니다. 다음에 콘솔 응용 프로그램을 열면 "로그인"버튼 만 선택하면됩니다.

g7

충수

GitHub 리포지토리 생성 방법

  1. system_cmds.xcodeprojXcode에서 열린 파일을 클릭하십시오 .
  2. 메뉴 표시 줄에서을 선택하십시오 Source Control->Create Git Repositories....
  3. 메뉴 표시 줄에서을 선택하십시오 Product->Scheme->New Scheme.... 그런 다음 login대상 및 이름으로 선택하십시오 .
  4. 메뉴 표시 줄에서을 선택하십시오 Project->Build.
  5. Xcode를 종료하십시오.
  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 콘솔을 종료 할 때마다 창을 닫은 후에도 Java 프로세스가 중단되어 새로운 터미널 세션이 생성되는 것을 막았습니다. 나는 활동 모니터에서 Java 프로세스를 강제 종료했으며 교수형 터미널은 실제로 emacs 및 새 탭에서 시작되었습니다.

이제 명령 exit또는 ctrl-d(또는 ctrl-c ctrl-demacs에서 term/multi-term) 명령을 사용하여 멋지게 종료 한 다음 창 을 종료하십시오 .


0
  1. 프로세스가 실제로 중단되는지 확인 login
  2. 활동 모니터를보고 조심하십시오 root 시작하여 제대로 종료되지 않았거나 (충돌, 터미널 종료 등) 프로세스가 계속 실행중인 프로세스 (예 : 나노, 이맥스, vim)를 살펴보십시오.
  3. 이 프로세스를 종료하면 로그인이 즉시 작동합니다.

0

내 두 센트.

Sublime Text 용 Terminus Package를 설치하여 텍스트 편집기 내에서 터미널을 실행할 수 있습니다.

Sublime Text를 닫으면 터미널이 다시 작동하기 시작했습니다.


나는 이것이 질문에 대답하는 데 도움이되지 않는다고 생각합니다. 이렇게하면 터미널이 터미널 내에서 실행되어 끊어지지 않습니까? 그래도 여기서 다른 문제를 해결하고있는 것 같습니다.
haykam

Sublime Text
Abundance

0

FWIW, 나는이 같은 문제가 있었다. 재부팅 후 해결되지만 하루에 여러 번 그렇게하는 시간을 절약하고 싶었습니다. 특정 nodeJS 환경을 사용한 후 시작되었으므로 활동 모니터로 이동하여 노드 프로세스가 진행 중임을 알았습니다. 해당 인스턴스를 종료하면 문제가 해결되었으므로 최근에 노드 또는 npm을 로컬로 사용하기 시작한 사람이 있으면 문제가 될 수 있습니다.


내 경우에는 길잃은 "자바"프로세스 였지만 Activity Monitor에서 프로세스를 종료하면 터미널이 중지되었습니다!
Adam B

0

길잃은 nvim 인스턴스를 죽이면이 문제가 해결되었습니다. 나는 이것이 nvim에만 국한된 것이 아니라고 생각하지만 내 경우에는 nvim이 문제를 일으켰습니다. 활동 모니터에서 고아 터미널 응용 프로그램을 찾아서 찾을 수 없다면 죽일 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.