de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 Fernando
Fernando
Question

Bagaimana cara mempercepat Terminal baru tab waktu loading?

Bagaimana saya dapat mempercepat startup terminal di Singa?

I'm tidak mengacu pada startup dari aplikasi Terminal, tetapi untuk startup terminal windows, seperti ketika saya membuka tab baru.

Saya don't memiliki apa-apa pada saya .bash_profile file dan aku berlari rm -rf /private/var/log/asl/*.asl setiap 4 jam (yang jelas file-file yang biasanya membuat terminal lambat ).

Saat ini, ketika saya membuka tab baru, itu membutuhkan waktu 3-4 detik sampai aku bisa menjalankan sesuatu.

93 2012-02-25T19:01:58+00:00 10
 rogerdpack
rogerdpack
Pertanyaan edit 4 Februari 2015 в 8:48
Apple
macos
command-line
terminal
 Darren
Darren
18 November 2012 в 11:44
2012-11-18T11:44:58+00:00
Lebih
Sumber
Sunting
#14486686

Jawaban Singkat:

Masalah ini disebabkan oleh (berpotensi) mahal ASL sistem log lookup. Untuk melihat ini dalam tindakan, menjalankan sudo fs_usage | grep 'dpl.*login' di jendela Terminal, kemudian buka jendela Terminal baru.

Untuk memecahkan masalah ini, mengkonfigurasi Terminal untuk meluncurkan non-standar shell:

  1. Membuat symlink untuk pilihan anda shell. E. g.: sudo ln-s /bin/bash /usr/local/bin/bash
  2. Buka Terminal Preferences dan pilih "Umum" tab.
  3. Pilih "Kerang terbuka dengan: Perintah" dan memasukkan symlink anda buat di langkah 1. E. g. "/usr/local/bin/bash".

Catatan 1: Anda juga mungkin perlu untuk menambahkan bash dan -bash untuk proses daftar di "Terminal Preferensi > Profil > Shell > Meminta sebelum penutupan".

Catatan 2: /usr/local/bin ditulis di OS X 10.11 (El Capitan) mode Tanpa akar.

Untuk memverifikasi perbaikan:

  • Buka jendela Terminal baru.
  • "Terakhir Login:" harus tidak akan ditampilkan di bagian atas
  • Buka inspektur (Command + I) dan pilih tab Info.
  • Perintah harus membaca login-pfq username /usr/bin/bash atau login-pfql username ...

Penting: Jika login perintah tidak termasuk -q parameter, maka anda tidak memperbaiki masalah.

Anda juga dapat menggunakan sudo fs_usage | grep 'dpl.*login' untuk memverifikasi bahwa /var/log/asl tidak diakses ketika membuka jendela Terminal baru.

Rincian:

Ada sejumlah bug yang bermain di sini.

Sebenarnya penyebab kelambatan /usr/bin/login, yang secara default akan menampilkan tanggal terakhir anda login. Untuk mendapatkan ini tanggal login terakhir, ini pencarian ASL (Apple Log Sistem) database di /var/log/asl/. File log ini dapat menjadi sangat terfragmentasi dan's file ini fragmentasi yang menyebabkan delay ketika membuka jendela baru atau tab. (Bug 1)

Satu-satunya cara untuk menekan ASL pencarian untuk login terakhir adalah untuk lulus -q parameter /usr/bin/login. The .hushlogin file juga akan menekan "Login Terakhir" display, tetapi tidak menekan mahal ASL pencarian. (Bug 2)

Terminal selalu menggunakan /usr/bin/login untuk memulai setiap jendela baru/shell. Tidak ada pilihan untuk meluncurkan shell langsung juga tidak ada cara untuk secara langsung mengontrol parameter yang dilewatkan ke /usr/bin/login (Bug 3).

Ternyata, Terminal akan lulus -q parameter /usr/bin/login ketika dikonfigurasi untuk menggunakan non-standard shell. (Bug 4)

The -q parameter adalah apa yang kita butuhkan untuk menghindari masalah, oleh karena itu symlink ke /usr/local/bin/bash.

 Darren
Darren
Jawaban edit 21 Juni 2016 в 1:29
93
0
 butcheriftexas
butcheriftexas
11 Juli 2015 в 11:36
2015-07-11T11:36:14+00:00
Lebih
Sumber
Sunting
#14486690

Apa yang saya butuhkan adalah perubahan dari sebuah login shell dengan perintah /bin/bash -il di iTerm's Preferensi > Profil > Umum > Perintah.

Aku butuh opsi -l (Membuat bash bertindak seolah-olah telah dipanggil sebagai sebuah login shell) ditambahkan untuk mengatur variabel lingkungan dari ~/.bash_profile

Daniel Serodio
Daniel Serodio
Jawaban edit 8 Mei 2017 в 6:13
20
0
Graham Miln
Graham Miln
19 Juni 2012 в 3:12
2012-06-19T15:12:42+00:00
Lebih
Sumber
Sunting
#14486685

.hushlogin

Buat sebuah file kosong di home folder anda, yang disebut .hushlogin; hal ini akan secara signifikan mengurangi waktu yang dibutuhkan untuk Terminal.aplikasi tab untuk muncul.

Anda dapat membuat .hushlogin file di Terminal.aplikasi menggunakan perintah berikut:

touch ~/.hushlogin

File akan segera berlaku.

Anda dapat mempelajari lebih lanjut tentang .hushlogin file dan proses login secara umum di login manual.

Quietening proses login

Ketika anda membuat Terminal baru tab, anda akan melalui proses login. Proses ini melibatkan mengambil berbagai informasi tentang anda sebelumnya sesi login, pesan hari ini, dan sistem menampilkan pesan. Hal ini dapat menjadi sumber dari penundaan yang signifikan. Mencoba hushing pesan-pesan ini untuk melihat jika penundaan menghilang.

Graham Miln
Graham Miln
Jawaban edit 15 Oktober 2018 в 3:36
16
0
 rogerdpack
rogerdpack
6 Februari 2015 в 10:57
2015-02-06T22:57:59+00:00
Lebih
Sumber
Sunting
#14486687

OK saya memiliki kesimpulan yang sama Darren, meskipun sedikit berbeda mekanisme profiling (NB lambat login masih bisa terjadi di Yosemite).

Berikut ini's cara untuk memberitahu apa adalah benar-benar berjalan ketika anda mulai login window baru, menggunakan OS X sample profiler perintah.

Cari tahu apa perintah login normal executs

$ ps -ef | grep login

Anda'll melihat sesuatu seperti login-pfl username /bin/bash -c exec -la bash /bin/bash

Membuat script file name profile_login.sh dengan isi sebagai berikut dengan menambahkan

-c ","

untuk akhir ditemukan perintah untuk meminta bash segera kembali, dengan isi seperti ini:

login -pfl username /bin/bash -c exec -la bash /bin/bash -c "" &
sudo sample $! -mayDie # sample the above command

Membuatnya executable

$ chmod u+x profile_login.sh

dan menjalankannya dengan menggunakan sudo (contoh perintah yang memerlukan)

$ sudo ./profile_login.sh

OK jadi pergi ke depan dan menjalankan hal itu. Misalnya dengan melakukan pembersihan perintah pertama. Pada kotak saya, saya punya besar output grafik. Mencari "terbesar nomor cabang" (biasanya di bagian atas) saya melihat dua berikut terbesar pelanggar:

Salah satu dari sesuatu yang disebut pam_start yang muncul untuk membuka pam auth lib gambar

+   ! 1068 pam_start  (in libpam.2.dylib) + 132  [0x7fff97295ab0]
+   !    :   1066 openpam_dynamic  (in libpam.2.dylib) + 120  [0x7fff97293d14]
+   !    :   |   +   !   1042 coresymbolication_load_image(CSCppDyldSharedMemoryPage*, ImageLoader const*, unsigned long long)  (in dyld) + 143  [0x7fff66725411]
+   !    :   |   +   !   :     1042 mach_msg_trap  (in dyld) + 10  [0x7fff6674a472]

dan yang kadang-kadang diikuti oleh yang lain pelaku getlastlogxbyname

+   ! 583 getlastlogxbyname  (in libsystem_c.dylib) + 212  [0x7fff92b3ef7a]
+   !       : 566 asl_file_open_read  (in libsystem_asl.dylib) + 143  [0x7fff8c27030d]
+   !       : | 566 __open_nocancel  (in libsystem_kernel.dylib) + 10  [0x7fff97b39012]    +   !       : | 566 __open_nocancel  (in libsystem_kernel.dylib) + 10  [0x7fff97b39012]

Jadi pada dasarnya, ada dua pelaku. Salah satunya adalah pam (beberapa jenis sistem otentikasi) dan yang lain itu asl "mendeteksi terbaru anda login" hal. Jadi rupanya hanya menghapus /private/var/log/asl/*.asl file tidak cukup. Pam loading jauh lebih mahal di mesin saya, pokoknya [SSD]. Merasa bebas untuk menjalankan script di atas dan melihat apakah sistem yang sama. Menariknya, kode sumber untuk metode ini panggilan sepertinya juga akan tersedia secara online, misalnya openpam_dynamic

Jika saya mengikuti Darren's jawaban, dan menggantikan saya "kerang terbuka dengan" preferensi untuk sesuatu yang lain dari /bin/bash, saya kemudian melihat baris berikut yang digunakan untuk start new tab terminal:

 $ ps -ef | grep login
  ... login -pfql packrd /bin/bash -c exec -la bash /usr/bin/bash

Jadi jika sekarang saya sama-sama menggunakan sampel trik baru login perintah

login -pfql username /bin/bash -c exec -la bash /usr/bin/bash -c "" &
sudo sample $! -mayDie

jauh lebih kecil stacktrace dihasilkan, pelaku terbesar menjadi:

+         8 pam_end  (in libpam.2.dylib) + 190  [0x7fff97294ebb]
+             !           6 coresymbolication_unload_image(CSCppDyldSharedMemoryPage*, ImageLoader const*)  (in dyld) + 143  [0x7fff6e0f634f]

Saya pikir ini adalah karena login "-q" parameter ini sekarang sedang digunakan. Rupanya parameter ini melompat kedua memuat modul pam dan mencari login terakhir kali (kedua pelaku). Menurut dokumen dari login perintah, menyentuh ~/.hushlogin file harus melakukan hal yang sama, tapi rupanya ini tidak lagi bekerja [setidaknya bagi saya dengan 10.10].

Jadi, dalam ringkasan, menghapus /private/var/log/asl/*.asl tidak cukup (dalam percobaan saya, itu hanya menyumbang paling banyak 1/3 dari yang sebenarnya perlambatan, meskipun jika anda memiliki adat istiadat file yang ada itu bisa menjelaskan persentase yang lebih besar saya'm yakin).

Lagi pula menggunakan script serupa, anda harus dapat memberitahu apa yang's menyebabkan komputer lokal anda ke rawa, dan melihat jika di atas memperbaiki berlaku untuk anda. Merasa bebas untuk komentar di sini.

UPDATE: tampaknya bahwa coresymbolication_load_image masih dapat mengambil banyak waktu, bahkan ketika login-pfql dipanggil (mungkin beberapa modul pam authentication atau lainnya harus "dial out" ke central login server atau aneh, sehingga harus menunggu respon dari pihak ke-3). Jadi satu-satunya nyata solusi yang saya temukan adalah dengan menggunakan iTerm2, dan mengubah preferensi -> profil -> umum -> Perintah untuk /bin/bash sebagai gantinya.

 rogerdpack
rogerdpack
Jawaban edit 4 Maret 2016 в 12:00
8
0
 ismail
ismail
26 Februari 2012 в 12:48
2012-02-26T00:48:37+00:00
Lebih
Sumber
Sunting
#14486683

Ini adalah semua tentang menyelidiki penyebabnya. Anda dapat melihat apa yang's sedang dilakukan saat proses dimulai dengan penginputan bash -x yang akan mencetak proses dari awal sampai shell.

Secara pribadi, saya hanya pemberitahuan penundaan antara aktivasi dan de-aktivasi aplikasi dan di tab pertama yang dibuat setelah periode aktivitas. Itu selalu membuat saya berpikir bahwa itu adalah tentang halaman memori yang dipindahkan.

3
0
David Moles
David Moles
26 Agustus 2015 в 10:33
2015-08-26T22:33:10+00:00
Lebih
Sumber
Sunting
#14486691

Dalam kasus saya, setelah mencoba atas pada mesin bekerja tanpa hasil, saya menemukan bahwa pelakunya adalah Active Directory. Perbaikan itu untuk pergi ke Direktori Utilitas dan menyunting pengaturan layanan (double-klik pada "Active Directory") untuk mengaktifkan "Buat akun ponsel di login":

screenshot dari Direktori aplikasi Utilitas w/Active Directory pengaturan buka

Ini rupanya penyebab IKLAN mandat untuk menjadi cache lokal, sehingga sistem tidak lagi memiliki untuk pergi ke server setiap kali mencoba untuk memvalidasi password anda.

Anda bisa mendapatkan ke Direktori Utilitas dengan Sorotan atau melalui "Pilihan Login" bagian dari System Preferences / Pengguna & Kelompok (pilih "Edit..." tombol di samping untuk "Akun Jaringan Server"):

Users & Kelompok panel yang menunjukkan "Pilihan Login" dan "Edit..."

 Community
Community
Jawaban edit 13 April 2017 в 12:45
2
0
 bmike
bmike
8 April 2012 в 4:23
2012-04-08T04:23:38+00:00
Lebih
Sumber
Sunting
#14486684

Mengurangi sejarah anda untuk sesuatu antara 4 dan 10 ribu baris dan mungkin mencoba berhenti dan membuang semua diselamatkan windows. Saya telah melihat kedua membuat perbedaan lebih lambat pada mesin - terutama orang-orang tanpa SSD untuk penyimpanan.

2
0
 user2707671
user2707671
30 Januari 2017 в 10:37
2017-01-30T10:37:10+00:00
Lebih
Sumber
Sunting
#14486692

Masalahnya bagi saya adalah bahwa domain active directory server tidak valid.

Perubahan itu kemudian reboot mac tetap itu.

0
0
 kenorb
kenorb
26 Maret 2015 в 12:57
2015-03-26T12:57:12+00:00
Lebih
Sumber
Sunting
#14486688

Hanya menjalankan:

sudo creatbyproc.d
sudo newproc.d

di terminal yang terpisah dan terbuka baru terbuka untuk melihat apa yang sedang dijalankan selama waktu itu.

Jika tidak ada yang jelas, coba yang berikut ini:

sudo dtruss -an Terminal

Ini akan menampilkan semua rincian yang terjadi di tab waktu loading.

0
0
 davidcondrey
davidcondrey
23 Juni 2015 в 1:07
2015-06-23T01:07:18+00:00
Lebih
Sumber
Sunting
#14486689

Open /etc/profile dan tambahkan baris PATH="" sehingga terlihat seperti ini:

if [ -x /usr/libexec/path_helper ]; then
    PATH=""
    eval `/usr/libexec/path_helper -s`
fi
0
0
Related communities 1
macOS Indonesia Channel
macOS Indonesia Channel
553 pengguna
macOS Group @macOS_ID Windows Group @WinTenGroup
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Asilbek Qadamboyev
Terdaftar 1 hari yang lalu
2
Akshit Mehta
Terdaftar 4 hari yang lalu
3
me you
Terdaftar 1 minggu yang lalu
4
Никита иванов
Terdaftar 1 minggu yang lalu
5
Alex1976G_06
Terdaftar 1 minggu yang lalu
ID
KO
RU
© de-vraag 2022
Sumber
apple.stackexchange.com
di bawah lisensi cc by-sa 3.0 dengan atribusi