Lion에서 터미널 시작 속도를 높이려면 어떻게해야합니까?
터미널 응용 프로그램의 시작을 말하는 것이 아니라 새 탭을 열 때와 같은 시작 터미널 창을 말합니다.
.bash_profile 파일에 아무것도 없으며 rm -rf /private/var/log/asl/*.asl
4 시간마다 실행 됩니다 (일반적으로 터미널 속도를 늦추는 파일을 지 웁니다).
현재 새 탭을 열면 무언가를 실행할 수있을 때까지 3-4 초가 걸립니다.
Lion에서 터미널 시작 속도를 높이려면 어떻게해야합니까?
터미널 응용 프로그램의 시작을 말하는 것이 아니라 새 탭을 열 때와 같은 시작 터미널 창을 말합니다.
.bash_profile 파일에 아무것도 없으며 rm -rf /private/var/log/asl/*.asl
4 시간마다 실행 됩니다 (일반적으로 터미널 속도를 늦추는 파일을 지 웁니다).
현재 새 탭을 열면 무언가를 실행할 수있을 때까지 3-4 초가 걸립니다.
답변:
짧은 답변:
이 문제는 (잠재적으로) 값 비싼 ASL 시스템 로그 조회로 인해 발생합니다. 이 동작을 보려면 sudo fs_usage | grep 'asl.*login'
터미널 창에서 실행 한 다음 새 터미널 창을여십시오.
이 문제를 해결하려면 비표준 쉘을 시작하도록 터미널을 구성하십시오.
sudo ln -s /bin/bash /usr/local/bin/bash
참고 1 : "터미널 기본 설정> 프로필> 셸> 닫기 전에 확인"에서 프로세스 목록 을 추가 bash
하고 -bash
프로세스 목록에 추가해야 할 수도 있습니다 .
참고 2 : /usr/local/bin
OS X 10.11 (El Capitan) Rootless 모드에서 쓸 수 있습니다.
수정 사항을 확인하려면 다음을 수행하십시오.
login -pfq username /usr/bin/bash
또는login -pfql username ...
중요 사항 : login 명령에 -q
매개 변수 가 포함되어 있지 않으면 문제점을 수정하지 않은 것입니다.
새 터미널 창을 열 때 액세스하지 않았는지 sudo fs_usage | grep 'asl.*login'
확인할 수도 있습니다 /var/log/asl
.
세부:
여기에 많은 버그가 있습니다.
속도 저하의 실제 원인은입니다. /usr/bin/login
기본적으로 마지막 로그인 날짜가 표시됩니다. 이 마지막 로그인 날짜를 얻으려면에서 ASL (Apple System Log) 데이터베이스를 검색합니다 /var/log/asl/
. 이러한 로그 파일은 매우 조각화 될 수 있으며이 파일 조각화로 인해 새 창이나 탭을 열 때 지연이 발생합니다. (버그 1)
마지막 로그인에 대한 ASL 검색을 억제하는 유일한 방법은에 -q
매개 변수를 전달하는 것 /usr/bin/login
입니다. .hushlogin
파일에는 "마지막 로그인"디스플레이가 표시되지 않습니다,하지만 비싼 ASL 검색을 억제하지 않습니다. (버그 2)
터미널은 항상 /usr/bin/login
각각의 새 창 / 쉘을 시작 하는 데 사용 합니다. 쉘을 직접 시작하는 옵션도없고 /usr/bin/login
(버그 3)에 전달 된 매개 변수를 직접 제어 할 수있는 방법도 없습니다 .
결과적으로 터미널은 비표준 쉘 을 사용하도록 구성된 경우 -q
매개 변수를 전달합니다 . (버그 4)/usr/bin/login
-q
매개 변수는 우리가 문제를 방지하기에 따라서 심볼릭 링크를해야 할 것입니다 /usr/local/bin/bash
.
/bin/bash
되면 기본 로그인 쉘이 선택된 것처럼 동작합니다. 이외의 명령 /bin/bash
은 올바르게 작동하므로 / usr / bin / bash를 사용하는 것이 해결 방법 일뿐입니다. Snow Leopard에는이 버그가 없습니다.
내가 필요한 것은 /bin/bash -il
iTerm의 환경 설정> 프로파일> 일반> 명령 에서 로그인 쉘에서 명령으로 변경하는 것이 었습니다 .
나는 옵션을 필요 -l
( 이 로그인 쉘로 호출 된 것처럼 bash는 행위를 확인 에서 환경 변수를 설정하기 위해 추가)~/.bash_profile
홈 폴더에 .hushlogin
; 라는 빈 파일을 만듭니다 . 이렇게하면 Terminal.app 탭이 표시되는 데 걸리는 시간이 크게 줄어 듭니다.
.hushlogin
다음 명령을 사용하여 Terminal.app 에서 파일을 만들 수 있습니다 .
touch ~/.hushlogin
파일이 즉시 적용됩니다.
.hushlogin
파일 및 로그인 프로세스에 대한 자세한 내용은 일반적으로 로그인 매뉴얼을 참조하십시오 .
새 터미널 탭을 만들면 로그인 프로세스가 진행됩니다. 이 프로세스에는 이전 로그인 세션, 오늘의 메시지 및 시스템 메시지 표시에 대한 다양한 정보를 가져옵니다. 이것은 상당한 지연의 원인이 될 수 있습니다. 이 메시지를 숨겨 지연이 사라지는 지 확인하십시오.
opensnoop
. 아래 답변을 참조하십시오.
확인 프로파일 링 메커니즘이 약간 다르지만 Darren과 비슷한 결론을 내 렸습니다 (NB 느린 로그인은 여전히 요세미티에서 발생할 수 있음).
여기서 알 수있는 방법 은 무엇 당신이 OS X의 사용, 새 로그인 창을 시작할 때 실제로 실행되는 샘플 프로파일 명령.
일반 로그인 실행이 어떤 명령인지 확인
$ ps -ef | grep login
당신은 같은 것을 보게 될 것입니다 login -pfl username /bin/bash -c exec -la bash /bin/bash
profile_login.sh
다음 내용을 추가하여 스크립트 파일 이름 을 작성하십시오 .
-c ""
bash가 다음과 같은 내용으로 즉시 리턴을 요청하도록 발견 된 명령의 끝까지 :
login -pfl username /bin/bash -c exec -la bash /bin/bash -c "" &
sudo sample $! -mayDie # sample the above command
그것을 실행 가능하게 만드십시오
$ chmod u+x profile_login.sh
sudo를 사용하여 실행하십시오 ( sample
명령 필요)
$ sudo ./profile_login.sh
알았어 계속해서 실행 해 예를 들어 purge
먼저 명령 을 실행합니다 . 상자에 큰 출력 그래프가 있습니다. "가장 큰 숫자의 가지"(일반적으로 맨 위)를 찾고 다음 두 가지 가장 큰 범죄자를 보았습니다 .
pam_start
pam auth lib 이미지를 여는 것처럼 보이는 것 중 하나
+ ! 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]
그리고 때로는 다른 범죄자가 따라옵니다 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]
기본적으로 두 명의 범죄자가 있습니다. 하나는 pam
(일부 유형의 인증 시스템) 다른 하나는 asl
"최신 로그인 감지"항목입니다. 따라서 파일을 삭제하는 것만으로/private/var/log/asl/*.asl
는 충분하지 않습니다. pam 로딩은 어쨌든 [SSD] 내 컴퓨터에서 훨씬 비쌉니다. 위의 스크립트를 실행하여 시스템이 동일한 지 확인하십시오. 흥미롭게도 이러한 메소드 호출의 소스 코드는 온라인에서도 사용할 수 있습니다 (예 : openpam_dynamic).
Darren의 대답에 따라 "bins open"을 / bin / bash 이외의 다른 환경으로 바꾸면 다음 터미널이 새 터미널 탭을 시작하는 데 사용됩니다.
$ ps -ef | grep login
... login -pfql packrd /bin/bash -c exec -la bash /usr/bin/bash
sample
새 로그인 명령에 동일한 트릭을 사용하면
login -pfql username /bin/bash -c exec -la bash /usr/bin/bash -c "" &
sudo sample $! -mayDie
훨씬 더 작은 스택 추적이 생성되며 가장 큰 문제는 다음과 같습니다.
+ 8 pam_end (in libpam.2.dylib) + 190 [0x7fff97294ebb]
+ ! 6 coresymbolication_unload_image(CSCppDyldSharedMemoryPage*, ImageLoader const*) (in dyld) + 143 [0x7fff6e0f634f]
로그인 "-q"매개 변수가 사용 중이기 때문이라고 생각합니다. 분명히이 매개 변수는 모두 PAM 모듈을로드 생략 하고 마지막 로그인 시간 (모두 범죄자를) 찾고입니다. login
명령 의 문서에 따르면 ~/.hushlogin
파일을 터치하면 동일한 작업을 수행해야하지만 분명히 더 이상 작동하지 않습니다 (적어도 10.10의 경우).
따라서 요약하면 /private/var/log/asl/*.asl을 제거하는 것만으로는 충분하지 않습니다 (실험에서 실제 속도의 최대 1/3 만 차지했지만 더 많은 파일이 있으면 계정을 만들 수 있습니다) 더 큰 비율을 확신합니다).
어쨌든 비슷한 스크립트를 사용하면 로컬 컴퓨터가 다운되는 원인을 알려주고 위의 수정 사항이 적용되는지 확인할 수 있습니다. 여기에 의견을 주시기 바랍니다.
업데이트 : 호출 된 coresymbolication_load_image
경우에도 여전히 많은 시간이 걸릴 수 있습니다 login -pfql
(아마도 일부 pam 인증 모듈 또는 기타는 중앙 로그인 서버에 "다이얼 아웃"해야하거나 이상한 것이므로 타사의 응답을 기다려야합니다 ). 그래서 유일한 실제 > 프로파일 - -> 일반 -> 명령에 내가 찾은 해결 방법은 iTerm2를 사용하고 기본 설정을 변경하는 /bin/bash
대신.
필자의 경우, 내 작업 시스템 에서 위의 시도 를 성공하지 못한 채 범인이 Active Directory라는 것을 알았습니다. 수정은 디렉토리 유틸리티 로 이동 하여 AD 서비스 설정 ( "Active Directory"를 두 번 클릭)을 편집하여 "로그인시 모바일 계정 작성"을 활성화하는 것입니다.
이로 인해 AD 자격 증명이 로컬로 캐시되므로 암호를 확인하려고 할 때마다 시스템이 더 이상 서버로 나가지 않아도됩니다.
Spotlight를 사용하거나 시스템 환경 설정 / 사용자 및 그룹의 "로그인 옵션"섹션을 통해 디렉토리 유틸리티로 이동할 수 있습니다 ( "네트워크 계정 서버"옆의 "편집…"버튼 선택).
.bash_profile
(또한 확인하십시오~/.profile
). 또한 : bash 가로 드되는 동안 입력을 시작할 수 있으며 일반적으로 입력 한 내용은 준비가되면 명령 프롬프트에 복사됩니다.