Login terminal hang


21

Saya memiliki masalah aneh pada MacBook Pro baru saya (akhir 2016, touch bar).

Ini berfungsi dengan baik dan kemudian, setelah menggunakannya sebentar, membuka jendela Terminal baru tidak berhasil karena login hang. Reboot memperbaiki masalah.

Ini tampaknya menjadi masalah yang dimiliki beberapa orang sehingga saya sudah mencoba semua solusi mereka (dari 1 dan [2] ):

  1. Menghapus ~/Library/Preferences/com.apple.Terminal.plist
  2. Mengatur shell default saya ke shell lain (dari /bin/zsh untuk /bin/sh atau /bin/bash )
  3. Menghapus atau membersihkan my .profile, .zprofile, ... Ini tidak berfungsi dan saya dapat memvalidasi bahwa masalah terjadi sebelum shell bahkan dipanggil, karena jika saya echo HEY sebagai baris pertama dari saya .zshenv ini bahkan tidak tercapai. Pasti begitu login menyebabkan masalah. Editing /etc/profile untuk menambahkan gema di bagian atas juga tidak menunjukkan apa-apa
  4. Mengubah Run command: pengaturan di Terminal saya mengkonfigurasi sesuatu seperti echo foo juga tidak bekerja (pergi Run inside shell dicentang atau tidak dicentang tidak mengubah apa pun).

Catatan lain:

  • Seperti [2] , ssh-add -K tidak bertahan kunci antara reboot, sesuatu yang saya tidak pernah punya masalah dengan sebelumnya.
  • Konsol tidak menunjukkan kesalahan atau peringatan yang mencurigakan.
  • Membuka yang baru Terminal Jendela sepertinya membuat file tty ( /dev/ttys<number> ).
  • Ketika ini terjadi, tidak masalah jika saya menggunakan Terminal.app atau iTerm.app
  • Saya memiliki instalasi yang cukup bersih (baru saja mendapatkan laptop saya, tidak mengembalikan cadangan apa pun, hanya menginstal beberapa aplikasi dengan brew install dan brew cask install ).

Ini sangat sulit untuk di-debug karena saya tidak dapat mereproduksinya dan seringkali saya tidak dapat membuka terminal baru untuk mencoba mencari tahu apa yang terjadi.

Adakah yang punya tips?

Memperbarui:

Menggunakan iTerm, saya bisa mendapatkan shell dengan mengatur perintah mulai /bin/bash. Namun dalam shell ini, sudo tidak bekerja. Itu hang (tanpa menampilkan prompt) dan ctrl-C dan ctrl-D jangan bekerja ketika hang.

Menggunakan beberapa program lain juga tidak berfungsi di shell ini: node atau /usr/local/bin/node keduanya menggantung. Sejauh yang saya tahu, itu adalah program yang masuk /usr/local/bin.

Pembaruan 2:

brew list --full-name hasil dalam paket ini:

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

Pembaruan 3:

Poin-poin ini sesuai dengan jawaban @ Monomeeth:

  1. Ketika itu terjadi, a login barang muncul di monitor aktivitas. (Force) Berhenti juga menutup jendela Terminal yang menggantung. Menutup jendela secara manual tidak membuat login proses hilang di Monitor Aktivitas.

  2. Judul terminal adalah Terminal — login — term big — ttys001 — 89x18 — ⌘1dimana term big adalah nama pengaturan.

  3. Tidak ada sudo proses muncul di Monitor Aktivitas. Saya dapat membuat sudo proses dengan membuka iTerm.app (yang menggunakan bash) dan menjalankan sudo echo ok sana. Itu tidak bisa berhenti, tetapi Force Quit bekerja dan membunuhnya:

    bash-3,2 $ sudo echo ok Dibunuh: 9

Pembaruan 4:

Ketika itu terjadi, berlari login dari shell yang masih tersedia tidak bekerja, sedangkan login di kerang yang lebih baru tampaknya menggantung.

Pembaruan 5:

Baru-baru ini saya mendapatkan laptop baru (MacBook Pro 2017, no Touch Bar) dan masalahnya masih ada.

Saya telah mengganti kerang: Saya sekarang menggunakan fish dengan konfigurasi vanilla yang cantik. Saya pikir itu mengesampingkan shell sebagai pelakunya.

OS ini juga telah diperbarui ke 10.13.3 (17D47) High Sierra.

Saya sudah mencoba menginstal sesedikit mungkin pada mesin ini:

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

Tidak yakin apa ini sekarang. Satu-satunya aplikasi yang dapat saya pikirkan adalah Divvy atau Apptivate karena mereka berdua tampak ketinggalan jaman. Ini adalah persimpangan dari apa yang dipasang di mesin lama vs mesin baru:

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

Perbarui 6:

Juga, inilah tangkapan layar: screenshot

Pembaruan 7:

Env saya biasanya terlihat seperti ini:

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
Ini mungkin saran yang lemah, tetapi apakah Anda sudah mencoba menghubungi Dukungan Pelanggan Apple? Pertanyaan Anda belum mendapat banyak perhatian sejak Anda mempostingnya, dan staf dukungan mereka mungkin telah mendengar tentang masalah ini. Satu-satunya saran saya adalah menginstal ulang MacOS. Namun, karena Mac Anda sangat baru, saya tidak tahu apakah ini akan berhasil.
NoahL

@lanomath selesai!
romeovs

Untuk mengetahui apa yang sedang dilakukan login, pilih itu di Activity Monitor dan pilih Sample Process. Hal yang sama berlaku untuk proses lain yang digantung. Namun, level debugging ini mungkin tidak sesuai untuk StackExchange T & amp; A. Mungkin lebih baik mengajukan laporan bug dengan Apple termasuk file sampel, atau menemukan seseorang yang dapat menawarkan dukungan untuk mendiagnosis masalah pada tingkat ini. Lihat developer.apple.com/bug-reporting
Chris Page

Berapa lama itu bertahan? Sudahkah Anda mencoba menjalankannya selama sepuluh menit? Apakah mesin Anda terikat ke jaringan Open Directory? Secara khusus, login harus mengambil informasi pengguna Anda, dan jika Anda berada di jaringan OD dengan server direktori yang sibuk / tidak responsif, dibutuhkan beberapa menit untuk merespons; program lain juga mengambil informasi pengguna dan dapat menderita masalah ini.
Chris Page

Belum mencoba menunggu lebih lama, akan mencobanya lain kali. Saya tidak terikat pada jaringan Open Directory, kesalahan ini terjadi juga ketika saya tidak berada di jaringan apa pun.
romeovs

Jawaban:


11

Seperti yang saya yakin Anda tahu, pemecahan masalah adalah proses eliminasi dan sering membutuhkan sedikit kesabaran. Saya ingin mencoba beberapa hal untuk mencoba dan menyelesaikan ini untuk Anda.

1. Konfirmasikan hang saat login

Jika proses itu tergantung benar-benar selama masuk , ini menyiratkan bahwa proses masih menunggu untuk membuat sesi login. Dengan asumsi ini adalah masalahnya, maka itu tidak akan mencoba untuk memulai shell.

Untuk mengonfirmasi ini, saat berikutnya Anda mengalami masalah ini luncurkan Activity Monitor untuk memeriksa apakah shell sedang berjalan atau apakah Anda hanya melihat a masuk proses.

Setelah Anda memiliki kesempatan untuk melakukan ini, laporkan kembali dengan apa yang Anda temukan.

CATATAN:- Jika Anda memiliki terminal lain yang terbuka, pastikan Anda memeriksa proses yang sesuai. Dugaan saya adalah bahwa gantung proses adalah proses dengan nomor ID Proses (PID) tertinggi.

2. Apa judul Terminal?

Lain kali Anda memiliki masalah ini, dapatkah Anda mencatat judul jendela Terminal dan melaporkannya kembali?

3. Bunuh sudo

Anda menyatakan bahwa me-reboot MBP Anda selalu menyelesaikan masalah ini.

Namun, lain kali Anda mengalami masalah ini (mungkin setelah melakukan apa yang saya jelaskan pada 1 di atas), saya ingin Anda mencoba membunuh sudo dari Activity Monitor.

Setelah Anda mencoba ini, beri tahu kami apa yang terjadi.

4. Coba pindahkan file .bash * Anda

Mungkin (karena berbagai alasan) Anda mungkin memiliki file .bash_profile di direktori pengguna Anda dan ini menyebabkan masalah yang terputus-putus. Ini adalah sesuatu yang bahkan mungkin tidak Anda sadari, tetapi Anda dapat menggunakan Automator untuk menjalankan skrip yang menemukan dan memindahkan file .bash apa pun.

Berikut ini contoh skrip untuk melakukan ini:

cd ~

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

Script ini memindahkan semua file mulai dengan .bash di folder rumah Anda ke yang baru dibuat terharu subfolder.

Setelah menjalankan skrip, periksa folder ini dan beri tahu kami jika sebenarnya Anda memiliki file di dalamnya.

CATATAN:- Anda dapat memberi label subfolder baru apa pun yang Anda inginkan. Untuk melakukannya, cukup ubah dua kemunculan terharu dalam skrip untuk label apa pun yang ingin Anda gunakan.

[MEMPERBARUI]

Beberapa hal lagi untuk dicoba.

5. Coba hapus file * .asl

Jika Anda belum melakukannya, coba hapus file * .asl. Untuk melakukan ini gunakan yang berikut ini:

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

CATATAN:- Ini mungkin memakan waktu karena membuat shell baru. Saat selesai, pastikan Anda sepenuhnya keluar dari Terminal agar perubahan dapat terjadi.

6. Mode Aman

Apakah Anda melihat ada perbedaan dalam perilaku ketika Anda memulai MBP dalam Safe Mode? Untuk mem-boot ke Safe Mode:

  1. Matikan Mac Anda sepenuhnya
  2. Mulai ulang Mac Anda
  3. Segera tekan tombol Bergeser kunci dan tetap tenang
  4. Lepaskan Bergeser ketika Anda melihat jendela login (CATATAN: Jika FileVault Anda diaktifkan, Anda mungkin harus masuk dua kali).
  5. Setelah MBP Anda mulai coba gunakan Terminal dan lihat apakah Anda masih dapat mereplikasi masalah?
  6. Setelah selesai, Anda dapat keluar dari Safe Mode dengan memulai kembali MBP Anda seperti biasa

7. Buka Direktori

Ini mungkin tidak berlaku dalam kasus Anda karena Anda tidak menyebutkannya, tetapi jika Anda terhubung ke jaringan Open Directory, ini juga dapat menyebabkan masalah bagi Anda. Biasanya ini hanya memerlukan menunggu sekitar 10 - 15 detik, tetapi saya telah melihat laporan terminal login membutuhkan waktu lima menit atau lebih untuk menyelesaikan dalam situasi ini.


Terima kasih! saya menggunakan zsh, dan bahkan dengan kosong .zshrc, .zprofile, .profile, dll id tidak terjadi, plus itu tidak menjelaskan mengapa program lain masuk /usr/local/bin juga menggantung, jadi saya pikir 4. keluar dari gambar. Saya akan kembali dengan jawaban untuk pertanyaan-pertanyaan lain begitu saya mendapatkannya.
romeovs

Menambahkan pembaruan dengan jawaban atas pertanyaan-pertanyaan ini. login tampaknya menjadi pelakunya, tetapi masih tidak menjelaskan mengapa ia bekerja dengan ITerm bash.
romeovs

Saya telah memperbarui jawaban saya. Namun, saya baru menyadari bahwa Anda belum mengindikasikan berapa lama Anda sudah mencoba menunggu untuk masuknya Terminal? Akan lebih baik untuk mengetahui apakah itu akhirnya login, atau apakah itu hang tanpa batas.
Monomeeth

@romeovs Hanya ingin tahu, apakah Anda pernah menyelesaikan masalah ini?
Monomeeth

nggak :( masih mengerjakannya. Ini sudah mulai terjadi jauh lebih sedikit.
romeovs

7

Ini sepertinya sangat cocok untuk Anda melebihi proses maksimum per pengguna (atau mungkin proses maks).

Pada instalasi macOS stok Anda mendapatkan 709 per pengguna ( ulimit -u ) dan 1064 proses maks ( sysctl -a | grep maxp )

Cara mudah untuk meningkatkannya adalah dengan menginstal Server.app dari App Store dan kemudian reboot. Anda juga dapat mengatur mode kinerja untuk batas yang lebih tinggi.

Karena Anda tidak mendeskripsikan pengaturan Anda (versi OS dan build), berikut adalah beberapa tips - pastikan untuk memeriksa SIP yang membatasi kemampuan Anda untuk mengubah file jika Anda membaca beberapa artikel lama tentang mengubah batas tanpa menggunakan server menginstal. aplikasi:


Poin luar biasa! Aku bahkan belum mempertimbangkan ini. :)
Monomeeth

@Monomeeth jawaban Anda luar biasa. Banyak hal hebat di dalamnya.
bmike

@bmike Apakah ada cara saya dapat memeriksa jumlah total proses untuk memeriksa apakah ini masalahnya? Mungkin saya bahkan dapat mereproduksinya dengan membuat 709 proses?
romeovs

5

Sangat penting untuk mengobati masalah sebenarnya dan bukan hanya gejalanya. Jadi cobalah saran berikut dan perbarui berdasarkan itu yang dapat menyarankan solusi lebih lanjut juga.

  1. Pengguna mana yang memiliki terminal? :
    Firasat pertama saya adalah bahwa ini dapat dikaitkan dengan bagaimana akun Anda disiapkan. Jika terminal mencoba mengakses sumber daya atau direktori yang hanya dapat dilakukan oleh pengguna admin (jika akun Anda bukan admin), maka hal itu dapat menyebabkan kondisi beku - tidak memungkinkan Anda untuk mengakses terminal. Jadi, teruskan dan pastikan ketika Anda memulai sesi terminal, itu adalah lokal untuk pengguna Anda dan bukan pengguna lain. Fakta bahwa Anda tidak dapat membuat proses sudo, mengarahkan saya ke arah ini.

  2. Ketik Kontrol-Z atau Command-Z:
    Urutan tombol kontrol ini menunda program yang mungkin sedang berjalan dan memberi Anda prompt shell. Sekarang Anda dapat memasukkan perintah pekerjaan untuk menemukan nama program, lalu mulai kembali program dengan fg atau akhiri dengan kill.

  3. Tekan Command-C :
    Ini akan mengganggu jika terminal mencoba menjalankan program di latar belakang. Cobalah beberapa kali. Catatan jika Anda melihat output apa pun

  4. Ketik Control-Q :
    Jika output telah dihentikan dengan Control-S, ini akan memulai kembali.

  5. Dapatkan shell Alternatif :
    Jika Anda ingin mencoba shell yang berbeda selama beberapa hari, perilaku mereka kadang-kadang dapat membantu Anda memahami masalah dengan Terminal yang diberikan jika mereka bertindak dengan cara tertentu. Periksa tautan di bawah ini untuk alternatif

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

Akan membantu untuk mengetahui hal-hal berikut, jika belum disebutkan:

  • Bagaimana Anda memulai sesi terminal? Apakah ini melalui sorotan atau ikon desktop atau dengan cara lain?

  • Apa yang terminal lakukan ketika hang? Apakah itu di tengah menjalankan perintah (Perintah yang sama setiap kali sebelum hang) atau hanya hang dari saat Anda memulai sesi terminal / windows.

  • Untuk apa Anda biasanya menggunakan terminal? Jika sebagian besar penggunaan Anda hanya untuk perintah terkait git, saya sarankan menggunakan Sesuatu seperti Github untuk Mac karena Anda biasanya dapat melakukan sebagian besar hal dari sana.


Ctrl-Z dan Ctrl-C keduanya hanya muncul di layar sebagai ^Z dan ^C, Ctrl-Q tidak melakukan apa pun. Saya biasanya membuka shell menggunakan Command-N di Terminal. Saya seorang programmer penuh waktu, jadi saya menggunakan terminal untuk semuanya pada dasarnya. Terminal hang sebelum sesuatu dieksekusi (on login ).
romeovs

@romeovs Bagaimana dengan Pointer 1 tentang apa tipe pengguna Anda? Tangkapan layar dengan masalah ini akan membantu juga. Terima kasih
pal4life

Saya pengguna default dan admin di macbook saya.
romeovs

4

Saya akan mencoba untuk menonaktifkan login SIP dan dtrace untuk menemukan penyebab root (Untuk menonaktifkan dan mengaktifkan kembali SIP, lihat http://osxdaily.com/2015/10/10/disable-rootless-system-integrity-protection-mac-os-x/ )

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

Mencoba memberi Anda contoh output, saya baru tahu bahwa banyak hal yang lebih sederhana daripada yang saya kira. Tidak perlu menonaktifkan SIP, cukup salin login.

dtuss akan mengembalikan panggilan sistem dan itu mungkin memberikan petunjuk di mana ada masalah.

cp /usr/bin/login .
sudo ls

berikan kata sandi anda. Lalu lakukan

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

masukkan nama pengguna Anda, tekan enter

masukkan kata sandi Anda, tekan enter

masukkan 'keluar', tekan enter

dan akhirnya unggah dtruss_login.txt ke mis. https://gist.github.com/

Anda dapat menyalin konten file ke clipboard seperti ini

cat dtruss_login.txt | pbcopy

Anda dapat menemukan contoh login di sini: https://gist.github.com/wolframteetz/49c5188c9dfe68a3841fa18496679579

Bilangan bulat kedua di setiap baris adalah waktu panggilan.

Tentu saja, akan lebih bagus jika Anda bisa menjalankan ini ketika login hang, tetapi jika saya mengerti, ini tidak mungkin .... mungkin Anda atau orang lain memiliki ide tentang bagaimana 'login dtruss' ketika terminal hang ?


Aduh. Ini seperti banyak rasa sakit untuk sesuatu yang terjadi berjam-jam atau berhari-hari setelah masuk. Bisakah Anda mempersempit apa dtruss mungkin menangkap dan menunjukkan?
bmike

Jika login hang dalam panggilan sistem, yang kemungkinan besar, itu akan menunjukkan kepada Anda. Jika tergantung di antara panggilan sistem, itu akan menunjukkan kepada Anda di antaranya, dan memberi Anda petunjuk tentang apa yang sebenarnya terjadi. misalnya jika hang setelah membaca file konfigurasi tertentu oleh panggilan sistem, kesalahan paling mungkin terjadi selama parsing konfigurasi itu. Anda harus melihatnya dari dekat. Mungkin juga terkait jaringan ... siapa yang tahu sampai Anda men-debug-nya;)
user2707001

Masalahnya adalah saya tidak bisa mereproduksi masalah secara manual sampai terlambat.
romeovs

Kemudian jalankan perintah dalam satu lingkaran "selamanya" dan lakukan "& gt; & gt; dtruss_login.txt 2 & gt; & amp; 1" alih-alih "2 & gt; dtruss_login.txt". Setelah kesalahan muncul, Anda akan melihat di akhir output.
user2707001

Saya akhirnya bisa mendapatkan log dtruss: gist.github.com/romeovs/6661ae0db77e57281b531676cc5dc007 Sejak login hang, ini tidak pernah keluar, jadi saya ctrl-C'ed setelah sekitar 10-an.
romeovs

4

Saya juga telah melihat ini selama beberapa bulan sekarang. Sangat membuat frustrasi. Satu-satunya hal yang memperbaikinya adalah reboot.

  • Pertengahan 2015 MBP (tanpa panel sentuh)
  • MacOS 10.12.6 beta

Terkadang login hang terjadi setelah berinteraksi dengan tmux.

Saya gagal mencoba semua pendekatan yang direkomendasikan.

Tidak yakin apakah itu terkait, tetapi a lsof -p LOGIN_PID menunjukkan file yang cukup besar /private/var/db/dyld/dyld_shared_cache_x86_64h untuk proses login yang digantung.

Pembaruan 8/29/2017:

Masih memiliki masalah. Kadang-kadang ketika mesin dalam keadaan buruk, saya memiliki terminal windows terbuka yang sudah berhasil login yang dapat saya gunakan untuk debug.

Banyak perintah tidak berjalan dengan baik, tetapi semuanya menunjukkan pola kesulitan menulis (untuk stdout, saya berpikir). Misalnya, ketika saya berlari ls -al, Saya melihat ls: write error dipancarkan ke stderr. Ketika saya berlari ls -al > /dev/null, tidak ada yang dicetak untuk stderr.


Adakah keberuntungan dalam mencari tahu hal ini?
romeovs

Masalah ini teratasi untuk saya sejak memperbarui OS saya. Itu telah diperbaiki untuk beberapa versi minor, dan saya saat ini menjalankan 10.13.3 (17D47).
Zack

Saya menjalankan 10.13.3 (17D47) juga! Sudah menjadi les sering, tetapi kadang-kadang masih terjadi.
romeovs

1

Itu login kode sumber perintah telah diterbitkan oleh Apple. Situs web adalah macOS 10.13.3 Sumber . Satu-satunya unduhan yang diperlukan adalah system_cmds-790.30.1. Setelah diunduh, proyek dapat dengan mudah dimodifikasi untuk hanya membangun login perintah. Proyek yang dimodifikasi dan login perintah telah ditempatkan di GitHub di davidanderson61 / system_cmds-10.13.3 .

Idenya di sini adalah untuk memodifikasi login untuk menulis informasi debug ke Konsol. Ini akan membantu menentukan mengapa login perintah hang. Modifikasi dapat dilakukan siapa saja yang ingin berpartisipasi. Saya berasumsi ini adalah saya.

Instal Debug login Perintah.

  1. Pilih rilis terbaru dari situs web davidanderson61 / system_cmds-10.13.3 / rilis .

  2. Unduh debug login perintah untuk Anda Downloads map. Di bawah "Aset", klik kanan login dan pilih "Unduh Linked File As", lalu pilih "Simpan".

  3. Secara parsial, nonaktifkan Perlindungan Integritas Sistem (SIP). Perintah diberikan di bawah ini. Sebelum memasukkan perintah, Anda harus boot ke a pemulihan macOS , lalu jendela Terminal.

    csrutil  enable  --without  fs
    
  4. Masukkan perintah yang diberikan di bawah ini untuk menyimpan yang asli login perintah. Jika login.orignal sudah ada, Anda bisa menghilangkan langkah ini.

    sudo  mv  /usr/bin/login  /usr/bin/login.original
    
  5. Masukkan perintah yang diberikan di bawah ini untuk menyalin debug login memerintahkan dan mengatur izin yang tepat.

    sudo  cp  ~/Downloads/login  /usr/bin/login
    sudo  chmod  104555  /usr/bin/login
    
  6. Aktifkan Perlindungan Integritas Sistem (SIP). Masukkan perintah berikut. Setelah itu, Anda harus memulai ulang.

    sudo  csrutil  clear
    

Konfigurasikan Aplikasi Konsol

Berikut adalah langkah-langkah untuk mengonfigurasi aplikasi Konsol untuk hanya menampilkan pesan dari login perintah.

  1. Buka aplikasi Konsol.
  2. Tambah sebuah PID kolom, seperti yang ditunjukkan di bawah ini.

    g2

  3. Memasukkan login di bidang Pencarian.

    g3

    Saat bidang Pencarian memiliki fokus, tekan tombol kembali kunci. Bidang Pencarian harus berubah ke apa yang ditunjukkan di bawah ini.

    g8

  4. Perubahan Any untuk Process, seperti yang ditunjukkan di bawah ini.

    g4

  5. Daftar Perubahan Contains untuk Equals, seperti yang ditunjukkan di bawah ini.

    g5

  6. Pilih menu Save tombol. Ketika diminta untuk "Simpan Pencarian Sebagai:", masukkan Login, lalu pilih Save.

    g6

Hasilnya akan muncul seperti yang ditunjukkan di bawah ini. Lain kali Anda membuka aplikasi Konsol, Anda hanya perlu memilih tombol "Login".

g7

Lampiran

Bagaimana Repositori GitHub Dibuat.

  1. Klik pada system_cmds.xcodeproj file terbuka di Xcode.
  2. Dari bilah menu, pilih Source Control->Create Git Repositories....
  3. Dari bilah menu, pilih Product->Scheme->New Scheme.... Selanjutnya, Pilih login sebagai Target dan Nama.
  4. Dari bilah menu, pilih Project->Build.
  5. Keluar dari Xcode.
  6. Login di GitHub dan buat repositori baru.
  7. Di bagian atas halaman Pengaturan Cepat repositori GitHub Anda, klik g1 untuk menyalin URL repositori jarak jauh.
  8. Untuk jendela aplikasi Terminal, masukkan perintah berikut. Menggantikan <remote repository URL> dengan URL yang disalin pada langkah sebelumnya.

    git  remote  add  origin  <remote repository URL>
    
  9. Buka proyek dalam Xcode dan dari bilah menu, pilih Source Control->Push....

Bagaimana Rilis Pertama Diciptakan

  1. Dari jendela aplikasi Terminal, masukkan perintah berikut.

    git  tag  -a  v1.0  -m  "Original source code"
    git  push  origin  v1.0
    
  2. Salin yang dibangun login perintah untuk Anda Downloads map.

  3. Dari akun GitHub Anda, buat rilis baru sebagai v1.0. Melampirkan ~/Downloads/login sebagai biner.


0

Saya punya masalah ini juga saat menjalankan sbt console di emacs. Setiap kali saya keluar dari konsol sbt dengan hanya membunuh jendela alih-alih keluar dari sbt konsol "dengan baik" terlebih dahulu, itu menyebabkan proses java untuk menggantung bahkan setelah jendela ditutup, dan entah bagaimana mencegah sesi terminal baru dibuat. Saya secara paksa membunuh proses java dari monitor aktivitas, dan terminal gantung benar-benar dimulai, dari dalam emacs juga di tab baru.

Sekarang, saya pastikan untuk berhenti dengan baik menggunakan perintah exit atau ctrl-d (atau ctrl-c ctrl-d di emacs term/multi-term ), lalu bunuh jendelanya.


0
  1. Periksa apakah proses Anda benar-benar hang selama login
  2. Lihat ke Monitor Aktivitas dan perhatikan root proses (mis. nano, emacs, vim) Anda mungkin telah memulai dan tidak berhenti dengan benar (crash, baru saja membunuh terminal, dll.) dan yang masih berjalan.
  3. Matikan proses ini dan proses masuknya harus segera bekerja.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.