Đăng nhập thiết bị đầu cuối bị treo


27

Tôi gặp sự cố lạ trên MacBook Pro mới (cuối năm 2016, thanh cảm ứng).

Nó hoạt động tốt và sau đó, sau khi sử dụng một thời gian, mở các cửa sổ Terminal mới không hoạt động vì loginbị treo. Khởi động lại khắc phục sự cố.

Đây dường như là một vấn đề mà một số người khác đã gặp phải vì vậy tôi đã thử tất cả các giải pháp của họ rồi (từ 1[2] ):

  1. Loại bỏ ~/Library/Preferences/com.apple.Terminal.plist
  2. Đặt shell mặc định của tôi sang shell khác (từ /bin/zshđến /bin/shhoặc /bin/bash)
  3. Xóa hoặc làm sạch của tôi .profile, .zprofile... Điều này không hoạt động và tôi có thể xác nhận rằng sự cố xảy ra trước khi trình bao thậm chí được gọi, bởi vì nếu tôi echo HEYlà dòng đầu tiên của tôi .zshenvthì điều này thậm chí không đạt được. Nó phải logingây ra những rắc rối. Chỉnh sửa /etc/profileđể thêm tiếng vang ở đầu cũng không hiển thị gì cả
  4. Thay đổi Run command:cài đặt trong cấu hình Terminal của tôi thành một cái gì đó giống như echo foocũng không hoạt động (để lại Run inside shellkiểm tra hoặc không được kiểm tra sẽ không thay đổi bất cứ điều gì).

Ghi chú khác:

  • Giống như [2] , ssh-add -Kkhông duy trì các khóa giữa các lần khởi động lại, điều mà trước đây tôi chưa bao giờ gặp rắc rối.
  • Bảng điều khiển không hiển thị bất kỳ lỗi hoặc cảnh báo đáng ngờ.
  • Mở một Terminalcửa sổ mới dường như tạo tập tin tty ( /dev/ttys<number>).
  • Khi điều này xảy ra, tôi sử dụng Terminal.app hoặc iTerm.app không thành vấn đề
  • Tôi có một bản cài đặt khá sạch (vừa có máy tính xách tay, không khôi phục bất kỳ bản sao lưu nào, chỉ cài đặt một số ứng dụng brew installbrew cask install).

Điều này thực sự khó gỡ lỗi vì tôi không thể sao chép nó và thường tôi không thể mở một thiết bị đầu cuối mới để thậm chí cố gắng tìm hiểu những gì đang xảy ra.

Có ai có bất cứ lời khuyên?

Cập nhật:

Sử dụng iTerm, tôi có thể lấy shell bằng cách đặt lệnh start thành /bin/bash. Trong vỏ này, tuy nhiên, sudokhông hoạt động. Nó bị treo (không hiển thị dấu nhắc) và ctrl-Cctrl-Dkhông làm việc khi nó bị treo.

Sử dụng một số chương trình khác cũng không hoạt động trong trình bao này: nodehoặc /usr/local/bin/nodecả hai bị treo. Theo như tôi có thể nói, đó là các chương trình /usr/local/bin.

Cập nhật 2:

brew list --full-name kết quả trong các gói này:

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

Cập nhật 3:

Những điểm này tương ứng với câu trả lời của @ Monomeeth:

  1. Khi nó xảy ra, một loginmục sẽ hiển thị trong màn hình hoạt động. (Buộc) Thoát nó cũng đóng cửa sổ Terminal đang treo. Đóng cửa sổ theo cách thủ công không làm cho loginquá trình biến mất trong Trình giám sát hoạt động.

  2. Tiêu đề thiết bị đầu cuối là Terminal — login — term big — ttys001 — 89x18 — ⌘1, term bigtên cài đặt ở đâu.

  3. Không có sudoquá trình hiển thị trong Trình giám sát hoạt động. Tôi có thể tạo một sudoquy trình bằng cách mở iTerm.app (sử dụng bash) và chạy sudo echo okở đó. Nó không thể là Thoát, nhưng Force Quit hoạt động và giết chết nó:

    bash-3.2 $ sudo echo ok Bị giết: 9

Cập nhật 4:

Khi nó xảy ra, chạy logintừ một lớp vỏ đó là vẫn còn có sẵn không làm việc, trong khi logintrong vỏ mới dường như để treo.

Cập nhật 5:

Gần đây tôi đã có một máy tính xách tay mới (MacBook Pro 2017, không có Touch Bar) và vấn đề vẫn còn.

Tôi cũng đã chuyển đổi shell: Tôi hiện đang sử dụng fishvới một cấu hình vanilla đẹp. Tôi nghĩ rằng quy tắc ra khỏi vỏ là thủ phạm.

HĐH cũng đã được cập nhật lên High Sierra 10.13.3 (17D47).

Tôi đã cố gắng cài đặt ít nhất có thể trên máy này:

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

Không chắc chắn những gì có thể bây giờ. Các ứng dụng duy nhất mà tôi có thể nghĩ đến là Divvyhoặc Apptivatevì cả hai đều có vẻ lỗi thời. Đây là giao điểm của những gì đã được cài đặt trên máy cũ và máy mới:

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

Cập nhật 6:

Ngoài ra, đây là một ảnh chụp màn hình: ảnh chụp màn hình

Cập nhật 7:

Env của tôi thường trông như thế này:

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
Đây có thể là một gợi ý khập khiễng, nhưng bạn đã thử liên hệ với bộ phận Hỗ trợ khách hàng của Apple chưa? Câu hỏi của bạn đã không nhận được nhiều sự chú ý kể từ khi bạn đăng nó và nhân viên hỗ trợ của họ có thể đã nghe về vấn đề này. Đề nghị khác của tôi sẽ là cài đặt lại MacOS. Tuy nhiên, vì máy Mac của bạn quá mới, tôi không biết điều này có hoạt động không.

@klanomath đã xong!
romeovs

Để tìm hiểu xem đăng nhập đang làm gì, chọn nó trong Trình giám sát hoạt động và chọn Quy trình mẫu. Điều tương tự cũng xảy ra với các quá trình khác được treo. Tuy nhiên, mức độ gỡ lỗi này có thể không phù hợp với Hỏi & Đáp về StackExchange. Có thể tốt hơn để gửi báo cáo lỗi với Apple bao gồm tệp mẫu hoặc tìm ai đó có thể cung cấp hỗ trợ để chẩn đoán sự cố ở cấp độ này. Xem developer.apple.com/orms-reporting
Trang Chris

Nó treo bao lâu? Bạn đã thử để nó chạy trong mười phút? Máy của bạn có bị ràng buộc với mạng Thư mục mở không? Cụ thể, đăng nhập phải tìm nạp thông tin người dùng của bạn và nếu bạn đang sử dụng mạng OD với máy chủ thư mục bận / không phản hồi, có thể mất vài phút để phản hồi; các chương trình khác cũng lấy thông tin người dùng và có thể bị vấn đề này.
Chris Trang

Không cố chờ đợi lâu hơn, sẽ thử lại lần sau. Tôi không bị ràng buộc với mạng Thư mục mở, những lỗi này cũng xảy ra khi tôi không ở trên bất kỳ mạng nào.
romeovs

Câu trả lời:


13

Như tôi chắc chắn bạn biết, xử lý sự cố là một quá trình loại bỏ và thường đòi hỏi một chút kiên nhẫn. Tôi muốn thử một vài điều để thử và đi đến tận cùng của điều này cho bạn.

1. Xác nhận nó bị treo trong khi đăng nhập

Nếu quá trình nó bị treo thực sự trong quá trình đăng nhập , điều này có nghĩa là quá trình này vẫn đang chờ để tạo một phiên đăng nhập. Giả sử đây là trường hợp, thì nó sẽ không thử khởi động vỏ.

Để xác nhận điều này, lần tới khi bạn gặp sự cố này, hãy khởi chạy Activity Monitor để kiểm tra xem shell có chạy hay không hoặc bạn chỉ thấy quá trình đăng nhập .

Khi bạn đã có cơ hội để làm điều này, hãy báo cáo lại với những gì bạn tìm thấy.

LƯU Ý: - Nếu bạn tình cờ mở các thiết bị đầu cuối khác, hãy đảm bảo bạn đang kiểm tra quy trình tương ứng. Tôi đoán là quy trình treo là quy trình có số ID tiến trình (PID) cao nhất.

2. Tiêu đề thiết bị đầu cuối là gì?

Lần tới khi bạn gặp vấn đề này, bạn có thể ghi chú lại tiêu đề của cửa sổ Terminal là gì và báo cáo lại không?

3. Giết sudo

Bạn nói rằng việc khởi động lại MBP của bạn luôn giải quyết vấn đề này.

Tuy nhiên, lần tới khi bạn gặp vấn đề này (có thể sau khi thực hiện những gì tôi đã mô tả ở 1 ở trên), tôi muốn bạn thử giết sudo từ Activity Monitor.

Khi bạn đã thử điều này, hãy cho chúng tôi biết điều gì xảy ra.

4. Thử di chuyển tệp .bash * của bạn

Có thể (vì nhiều lý do) bạn có thể có tệp .bash_profile trong thư mục người dùng của mình và điều này gây ra sự cố không liên tục. Đây là điều bạn thậm chí có thể không biết, nhưng bạn có thể sử dụng Automator để chạy tập lệnh tìm và di chuyển bất kỳ tệp .bash nào.

Đây là một kịch bản ví dụ để làm điều này:

cd ~

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

Tập lệnh này di chuyển tất cả các tệp bắt đầu bằng .bash trong thư mục nhà của bạn sang thư mục con được di chuyển mới được tạo .

Sau khi chạy tập lệnh, hãy kiểm tra thư mục này và cho chúng tôi biết nếu trên thực tế bạn có bất kỳ tệp nào trong đó không.

LƯU Ý: - Bạn có thể gắn nhãn thư mục con mới bất cứ điều gì bạn muốn. Để làm như vậy, chỉ cần thay đổi hai lần xuất hiện của chuyển trong kịch bản để bất cứ điều gì nhãn bạn muốn sử dụng.

[CẬP NHẬT]

Một số điều nữa để thử.

5. Thử xóa các tệp * .asl

Nếu bạn chưa có, hãy thử xóa các tệp * .asl. Để làm điều này sử dụng như sau:

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

LƯU Ý: - Điều này có thể mất một thời gian vì nó tạo ra một lớp vỏ mới. Khi hoàn tất, hãy đảm bảo bạn thoát hoàn toàn Terminal để các thay đổi có hiệu lực.

6. Chế độ an toàn

Bạn có nhận thấy sự khác biệt nào trong hành vi khi bạn khởi động MBP ở Chế độ an toàn không? Để khởi động vào Chế độ an toàn:

  1. Tắt hoàn toàn máy Mac của bạn
  2. Khởi động lại máy Mac của bạn
  3. Ngay lập tức nhấn Shiftphím và giữ nó xuống
  4. Buông Shiftchìa khóa khi bạn thấy cửa sổ đăng nhập (LƯU Ý: Nếu bạn đã bật FileVault, bạn có thể cần phải đăng nhập hai lần).
  5. Khi MBP của bạn khởi động, hãy thử sử dụng Terminal và xem liệu bạn vẫn có thể sao chép vấn đề không?
  6. Khi kết thúc, bạn có thể thoát Chế độ an toàn bằng cách khởi động lại MBP như bình thường

7. Mở thư mục

Điều này có thể không áp dụng trong trường hợp của bạn vì bạn không đề cập đến nó, nhưng nếu bạn kết nối với mạng Thư mục mở thì điều này cũng có thể gây ra sự cố cho bạn. Thông thường, điều này chỉ đòi hỏi phải chờ khoảng 10 - 15 giây, nhưng tôi đã thấy các báo cáo về đăng nhập thiết bị đầu cuối mất năm phút trở lên để hoàn thành trong tình huống này.


Cảm ơn! Tôi đang sử dụng zsh, và ngay cả với một sản phẩm nào .zshrc, .zprofile, .profile, vv id không xảy ra, cộng với điều đó không giải thích tại sao các chương trình khác trong /usr/local/bincũng treo, vì vậy tôi nghĩ 4. nằm ngoài bức tranh. Tôi sẽ trở lại với câu trả lời cho các câu hỏi khác khi tôi nhận được chúng.
romeovs

Đã thêm một bản cập nhật với câu trả lời cho những câu hỏi này. logindường như là thủ phạm, nhưng nó vẫn không giải thích được tại sao nó hoạt động trong iTerm bash.
romeovs

Tôi đã cập nhật câu trả lời của mình. Tuy nhiên, tôi mới nhận ra rằng bạn chưa cho biết bạn đã cố đợi bao lâu để đăng nhập Terminal hoàn tất? Sẽ là tốt để biết nếu cuối cùng nó đăng nhập, hoặc liệu nó chỉ bị treo vô thời hạn.
Monomeeth

@romeovs Chỉ cần tự hỏi, bạn đã bao giờ giải quyết vấn đề này?
Monomeeth

Không :( vẫn đang làm việc với nó. Nó đã bắt đầu xảy ra ít hơn nhiều.
romeovs

6

Điều này có vẻ như phù hợp hoàn hảo cho bạn vượt quá các quy trình tối đa cho mỗi người dùng (hoặc có thể là các quy trình tối đa).

Khi cài đặt macOS stock, bạn nhận được 709 mỗi người dùng ( ulimit -u) và 1064 quy trình tối đa ( sysctl -a | grep maxp)

Một cách dễ dàng để nâng cấp chúng là cài đặt Server.app từ App Store và sau đó khởi động lại. Bạn cũng có thể đặt chế độ hiệu suất cho các giới hạn cao hơn.

Vì bạn không mô tả thiết lập của mình (phiên bản hệ điều hành và bản dựng), đây là một số mẹo - hãy chắc chắn kiểm tra SIP hạn chế khả năng thay đổi tệp của bạn nếu bạn đọc một số bài viết cũ hơn về việc thay đổi giới hạn mà không cần dùng đến cài đặt máy chủ. ứng dụng:


Điểm tuyệt vời! Tôi thậm chí đã không xem xét điều này. :)
Monomeeth

@Monomeeth câu trả lời của bạn là tuyệt vời. Rất nhiều điều tuyệt vời trong đó.
bmike

@bmike Có cách nào để tôi có thể kiểm tra tổng số quy trình để kiểm tra xem đây có phải là trường hợp không? Có lẽ tôi thậm chí có thể tái tạo nó bằng cách tạo 709 quy trình sau đó?
romeovs

5

Tôi cũng đã nhìn thấy điều này trong vài tháng nay. Vô cùng bực bội. Chỉ có điều sửa nó là khởi động lại.

  • Giữa 2015 MBP (không có thanh cảm ứng)
  • MacOS 10.12.6 beta

Đôi khi việc đăng nhập bị treo sau khi tương tác với tmux.

Tôi đã không thành công thử tất cả các phương pháp được đề nghị.

Không chắc nó có liên quan hay không, nhưng một lsof -p LOGIN_PIDtệp hiển thị một tệp khá lớn /private/var/db/dyld/dyld_shared_cache_x86_64hcho quá trình đăng nhập treo.

Cập nhật ngày 29/8/2017:

Vẫn có vấn đề. Đôi khi khi máy ở trạng thái xấu, tôi có các cửa sổ đầu cuối mở đã đăng nhập thành công mà tôi có thể sử dụng để gỡ lỗi.

Nhiều lệnh không chạy đúng, nhưng tất cả chúng đều thể hiện một mô hình gặp khó khăn khi viết (đối với thiết bị xuất chuẩn, tôi đang nghĩ). Ví dụ, khi tôi chạy ls -al, tôi thấy ls: write errorphát ra stderr. Khi tôi chạy ls -al > /dev/null, không có gì được in ra stderr.


Bất kỳ may mắn trên để tìm ra điều này?
romeovs

Vấn đề được giải quyết cho tôi kể từ khi cập nhật HĐH. Nó đã được sửa cho một vài phiên bản nhỏ và tôi hiện đang chạy 10.13.3 (17D47).
Zack

Tôi cũng đang chạy 10.13.3 (17D47)! Nó đã trở thành les thường xuyên, nhưng đôi khi vẫn xảy ra.
romeovs

4

Điều quan trọng là phải điều trị vấn đề thực sự chứ không chỉ là triệu chứng. Vì vậy, hãy thử các đề xuất và cập nhật sau đây để có thể đề xuất các biện pháp khắc phục khác.

  1. Người dùng nào sở hữu thiết bị đầu cuối? :
    Linh cảm đầu tiên của tôi là điều này có thể liên quan đến cách tài khoản của bạn được thiết lập. Nếu thiết bị đầu cuối đang cố truy cập các tài nguyên hoặc thư mục mà chỉ người dùng quản trị viên mới có thể (nếu tài khoản của bạn không phải là tài khoản quản trị viên), thì điều đó có thể dẫn đến trạng thái đóng băng - không cho phép bạn truy cập thiết bị đầu cuối. Vì vậy, hãy tiếp tục và đảm bảo khi bạn bắt đầu một phiên cuối, nó là cục bộ cho người dùng của bạn chứ không phải người dùng khác. Thực tế là bạn không thể tạo ra một quy trình sudo, đang chỉ cho tôi hướng này.

  2. Loại Control-Z hoặc Command-Z:
    Chuỗi phím điều khiển này tạm dừng một chương trình có thể đang chạy và cung cấp cho bạn một dấu nhắc shell. Bây giờ bạn có thể nhập lệnh jobs để tìm tên chương trình, sau đó khởi động lại chương trình bằng fg hoặc chấm dứt bằng lệnh kill.

  3. Nhấn Command-C :
    Điều này sẽ làm gián đoạn nếu thiết bị đầu cuối đang cố chạy một chương trình trong nền. Hãy thử một vài lần. Lưu ý nếu bạn thấy bất kỳ đầu ra

  4. Loại Control-Q :
    Nếu đầu ra đã bị dừng với Control-S, điều này sẽ khởi động lại nó.

  5. Nhận một vỏ thay thế :
    Nếu bạn muốn thử một vỏ khác trong vài ngày, hành vi của chúng đôi khi có thể giúp bạn hiểu vấn đề với Terminal được đưa ra nếu chúng hành động theo một cách nhất định. Kiểm tra các liên kết dưới đây để thay thế

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

Sẽ giúp biết những điều sau, nếu chưa được đề cập:

  • Làm thế nào bạn bắt đầu phiên cuối? Đây có phải thông qua spotlight hoặc một biểu tượng máy tính để bàn hoặc một số cách khác?

  • Thiết bị đầu cuối đang làm gì khi nó bị treo? Có phải nó đang ở giữa khi thực hiện một lệnh (Lệnh tương tự mỗi lần trước khi bị treo) hoặc nó chỉ bị treo từ thời điểm bạn bắt đầu một phiên / cửa sổ đầu cuối.

  • Bạn thường sử dụng thiết bị đầu cuối của bạn để làm gì? Nếu phần lớn việc sử dụng của bạn chỉ dành cho các lệnh liên quan đến git, tôi sẽ khuyên bạn nên sử dụng Something như Github cho Mac vì bạn thường có thể thực hiện hầu hết mọi việc từ đó.


Ctrl-Z và Ctrl-C đều chỉ hiển thị trên màn hình ^Z^C, Ctrl-Q không làm gì cả. Tôi thường mở shell bằng Command-N trong Terminal. Tôi là một lập trình viên toàn thời gian, vì vậy tôi sử dụng thiết bị đầu cuối cho mọi thứ về cơ bản. Thiết bị đầu cuối bị treo trước khi mọi thứ được thực thi (bật login).
romeovs

@romeovs Điều gì về Con trỏ 1 về loại người dùng của bạn là gì? Một ảnh chụp màn hình với các vấn đề cũng sẽ giúp đỡ. Cảm ơn
pal4life

Tôi là người dùng và quản trị viên mặc định trên macbook của tôi.
romeovs

4

Tôi sẽ cố gắng vô hiệu hóa đăng nhập SIP và dtrace để tìm nguyên nhân gốc (Để tắt và bật lại SIP, hãy xem 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

Cố gắng cung cấp cho bạn một đầu ra ví dụ, tôi chỉ phát hiện ra rằng mọi thứ đơn giản hơn nhiều so với tôi nghĩ. Không cần phải tắt SIP, chỉ cần sao chép đăng nhập.

dtuss sẽ trả lại các cuộc gọi hệ thống và nó có thể đưa ra gợi ý về nơi mà mọi thứ không ổn.

cp /usr/bin/login .
sudo ls

cho mật khẩu của bạn Sau đó làm

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

nhập tên người dùng của bạn, nhấn enter

nhập mật khẩu của bạn, nhấn enter

nhập 'thoát', nhấn enter

và cuối cùng tải lên dtruss_login.txt lên ví dụ https://gist.github.com/

Bạn có thể sao chép nội dung của tệp vào bảng tạm như thế này

cat dtruss_login.txt | pbcopy

Bạn có thể tìm thấy một ví dụ đăng nhập tại đây: https://gist.github.com/wolframteetz/49c5188c9dfe68a3841fa18496679579

Số nguyên thứ hai trong mỗi dòng là thời gian cuộc gọi thực hiện.

Tất nhiên, sẽ thật tuyệt nếu bạn có thể chạy cái này khi đăng nhập bị treo, nhưng nếu tôi hiểu đúng, điều này là không thể .... có thể bạn hoặc ai đó có ý tưởng về cách 'đăng nhập' khi thiết bị đầu cuối bị treo ?


Ôi. Điều này có vẻ như rất đau đớn cho một cái gì đó xảy ra hàng giờ hoặc vài ngày sau khi đăng nhập bắt đầu. Bạn có thể thu hẹp những gì dtrusscó thể chụp và hiển thị?
bmike

Nếu đăng nhập bị treo trong một cuộc gọi hệ thống, rất có thể xảy ra, nó sẽ hiển thị cho bạn. Nếu nó bị treo giữa các cuộc gọi hệ thống, nó sẽ hiển thị cho bạn giữa đó và cho bạn một gợi ý về những gì đang thực sự xảy ra. ví dụ: nếu nó bị treo sau khi nó đọc một tệp cấu hình nhất định bằng một cuộc gọi hệ thống, lỗi có thể xảy ra trong quá trình phân tích cấu hình đó. Bạn cần phải xem xét kỹ về nó sau đó. Cũng có thể liên quan đến mạng ... ai biết cho đến khi bạn gỡ lỗi;)
user2707001

Vấn đề là tôi không thể tự tái tạo vấn đề cho đến khi quá muộn.
romeovs

Sau đó thực hiện lệnh trong một vòng lặp "mãi mãi" và thực hiện ">> dtruss_login.txt 2> & 1" thay vì "2> dtruss_login.txt". Khi lỗi xuất hiện, bạn sẽ thấy ở cuối đầu ra.
user2707001

Cuối cùng tôi đã có thể nhận được một bản ghi dtruss: gist.github.com/romeovs/6661ae0db77e57281b531676cc5dc007 Kể từ khi đăng nhập bị treo, điều này không bao giờ thoát, vì vậy tôi ctrl-C'ed sau khoảng 10 giây.
romeovs

1

Các loginmã nguồn lệnh đã được xuất bản bởi Apple. Trang web này là nguồn macOS 10.13.3 . Tải về yêu cầu duy nhất là system_cmds-790.30.1. Sau khi tải về, dự án có thể dễ dàng sửa đổi để chỉ xây dựng loginlệnh. Dự án và loginlệnh đã được sửa đổi đã được đặt trong GitHub tại davidanderson61 / system_cmds-10.13.3 .

Ý tưởng ở đây là sửa đổi loginđể ghi thông tin gỡ lỗi vào Bảng điều khiển. Điều này sẽ giúp xác định lý do tại sao loginlệnh treo. Các sửa đổi có thể được thực hiện bất cứ ai muốn tham gia. Tôi cho rằng đây sẽ là tôi.

Cài đặt loginlệnh gỡ lỗi .

  1. Chọn bản phát hành mới nhất từ ​​trang web davidanderson61 / system_cmds-10.13.3 / bản phát hành .

  2. Tải xuống loginlệnh gỡ lỗi vào Downloadsthư mục của bạn . Trong "Tài sản", nhấp chuột phải loginvà chọn "Tải xuống tệp được liên kết dưới dạng", sau đó chọn "Lưu".

  3. Một phần, vô hiệu hóa Bảo vệ toàn vẹn hệ thống (SIP). Lệnh được đưa ra dưới đây. Trước khi nhập lệnh, bạn sẽ cần phải khởi động vào macOS Recover , sau đó là cửa sổ Terminal.

    csrutil  enable  --without  fs
  4. Nhập lệnh được đưa ra dưới đây để lưu loginlệnh gốc . Nếu login.orignalđã tồn tại, bạn có thể bỏ qua bước này.

    sudo  mv  /usr/bin/login  /usr/bin/login.original
  5. Nhập các lệnh được đưa ra dưới đây để sao chép loginlệnh gỡ lỗi và đặt quyền thích hợp.

    sudo  cp  ~/Downloads/login  /usr/bin/login
    sudo  chmod  104555  /usr/bin/login
  6. Kích hoạt bảo vệ tính toàn vẹn hệ thống (SIP). Nhập lệnh sau. Sau đó, bạn nên khởi động lại.

    sudo  csrutil  clear

Cấu hình ứng dụng Console

Dưới đây là các bước để định cấu hình ứng dụng Console để chỉ hiển thị các thông báo từ loginlệnh.

  1. Mở ứng dụng Console.
  2. Thêm một PIDcột, như hiển thị dưới đây.

    g2

  3. Nhập loginvào trường Tìm kiếm.

    g3

    Trong khi trường Tìm kiếm có tiêu điểm, bấm returnphím. Trường Tìm kiếm sẽ thay đổi thành những gì được hiển thị bên dưới.

    g8

  4. Thay đổi Anythành Process, như hiển thị bên dưới.

    g4

  5. Danh sách Thay đổi Containsthành Equals, như hiển thị bên dưới.

    g5

  6. Chọn Savenút. Khi được nhắc "Lưu Tìm kiếm dưới dạng:", hãy nhập Login, sau đó chọn Save.

    g6

Các kết quả sẽ xuất hiện như hình dưới đây. Lần tới khi bạn mở ứng dụng Console, bạn sẽ chỉ phải chọn nút "Đăng nhập".

g7

ruột thừa

Cách lưu trữ GitHub được tạo.

  1. Nhấp vào system_cmds.xcodeprojtệp mở trong Xcode.
  2. Từ thanh menu, chọn Source Control->Create Git Repositories....
  3. Từ thanh menu, chọn Product->Scheme->New Scheme.... Tiếp theo, chọn loginlàm mục tiêu và tên.
  4. Từ thanh menu, chọn Project->Build.
  5. Thoát Xcode.
  6. Đăng nhập tại GitHub và tạo một kho lưu trữ mới.
  7. Ở đầu trang Cài đặt nhanh của kho lưu trữ GitHub của bạn, nhấp g1để sao chép URL kho lưu trữ từ xa.
  8. Đối với cửa sổ ứng dụng Terminal, nhập lệnh sau. Thay thế <remote repository URL>bằng URL được sao chép ở bước trước.

    git  remote  add  origin  <remote repository URL>
  9. Mở dự án trong Xcode và từ thanh menu, chọn Source Control->Push....

Bản phát hành đầu tiên được tạo ra như thế nào

  1. Từ cửa sổ ứng dụng Terminal, nhập các lệnh sau.

    git  tag  -a  v1.0  -m  "Original source code"
    git  push  origin  v1.0
  2. Sao chép loginlệnh được xây dựng vào Downloadsthư mục của bạn .

  3. Từ tài khoản GitHub của bạn, tạo một bản phát hành mới dưới dạng v1.0. Đính kèm ~/Downloads/logindưới dạng nhị phân.


1

Tôi cũng gặp vấn đề này khi chạy sbt console trong emacs. Bất cứ khi nào tôi thoát khỏi bảng điều khiển sbt bằng cách giết chết cửa sổ thay vì thoát khỏi bảng điều khiển sbt "độc đáo" trước tiên, nó đã khiến một quy trình java bị treo ngay cả sau khi cửa sổ bị đóng và bằng cách nào đó đã ngăn các phiên cuối mới được tạo. Tôi đã giết chết quá trình java từ trình giám sát hoạt động và thiết bị đầu cuối treo thực sự bắt đầu, từ bên trong emacs cũng như trong một tab mới.

Bây giờ, tôi chỉ cần đảm bảo thoát khỏi độc đáo bằng cách sử dụng lệnh exithoặc ctrl-d(hoặc ctrl-c ctrl-dtrong emacs term/multi-term), sau đó tắt cửa sổ.


0
  1. Kiểm tra nếu quá trình của bạn bị treo thực sự trong login
  2. Hãy xem Trình giám sát hoạt động và coi chừng root quy trình (ví dụ nano, emacs, vim) mà bạn có thể đã khởi tạo và không thoát đúng cách (sự cố, chỉ giết thiết bị đầu cuối, v.v.) và vẫn đang chạy.
  3. Giết quá trình này và đăng nhập sẽ hoạt động ngay lập tức.

0

Chỉ hai xu của tôi.

Tôi đã cài đặt Gói Terminus cho Văn bản tuyệt vời, cho phép tôi chạy thiết bị đầu cuối trong trình soạn thảo văn bản của mình.

Đóng văn bản tuyệt vời ngay lập tức cho phép thiết bị đầu cuối của tôi bắt đầu hoạt động trở lại.


Tôi không nghĩ rằng điều này sẽ giúp trả lời câu hỏi. Điều này có ngăn thiết bị đầu cuối treo bằng cách chạy bên trong Terminus không? Ngay cả nếu có, có vẻ như bạn đang giải quyết một vấn đề khác ở đây.
haykam

Thiết bị đầu cuối bình thường của tôi sẽ không hoạt động do một số vấn đề với Văn bản tuyệt vời
Sự phong phú

0

FWIW, tôi đã có vấn đề tương tự. Nó sẽ giải quyết sau khi khởi động lại, nhưng tôi muốn tiết kiệm thời gian thực hiện nhiều lần trong ngày. Nó bắt đầu sau khi sử dụng một môi trường nodeJS cụ thể, vì vậy tôi đã đi vào giám sát hoạt động và nhận thấy một quá trình nút đang diễn ra. Giết cá thể đó đã giải quyết vấn đề cho tôi, vì vậy nếu bất kỳ ai gặp phải vấn đề này gần đây đã bắt đầu làm việc với nút hoặc npm cục bộ, đó có thể là vấn đề của bạn.


Là một quá trình "java" đi lạc trong trường hợp của tôi nhưng việc giết nó trong Activity Monitor đã khiến thiết bị đầu cuối bị treo!
Adam B

0

Giết một ví dụ nvim đi lạc đã sửa lỗi này cho tôi. Tôi cho rằng điều này không cụ thể đối với nvim nhưng có gì đó nvim trong trường hợp của tôi đang làm điều đó gây ra vấn đề. Tôi sẽ tìm kiếm một ứng dụng thiết bị đầu cuối mồ côi ngoài giám sát hoạt động và giết nó nếu bạn tìm thấy.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.