zsh
그래서 , .xinitrc
, .xprofile
, 로 파일이 어떻게 .zprofile
열리는 지 정확한 순서를 알고 싶습니다 . 그래서 나는 strace
시스템 호출이 어떻게 호출되는지 확인하기 위해 해당 명령을 가지고 놀기로 결정했고 궁극적으로 이 파일을 로드하는 방법을 결정하고 주문할 수 있었습니다.zsh
grep
open
내 명령:
strace zsh | grep open
하지만 이 프로그램을 실행하면 계속 출력이 표시되고 zsh
작동 grep
하지 않습니다. 프로세스를 종료해도 ctrl+d
아무 일도 일어나지 않습니다 .
grep
그렇다면 이런 과정에서 그러한 결과를 얻을 수 있는 방법이 있을까요 ?
답변1
strace
기본적으로 출력을 stderr로 보냅니다.
여기에서 다음을 수행할 수 있습니다.
strace -o >(grep --color open >&2) zsh
이름, 매개변수 또는 런타임 시 반환 값의 zsh
모든 시스템 호출을 보거나 다음을 수행합니다.open
strace -e /open zsh
(의 약어 strace -e trace=/open zsh
) 또는:
이름에 포함된 시스템 호출을 살펴보세요 open
(예: open, openat, pidfd_open, mq_open, open_by_handle_at, perf_event_open. 목록은 시스템 및 버전에 따라 정확하지 않을 수 있습니다).
또는:
strace -e open,openat zsh
이 두 시스템 호출에만 적용됩니다.
이 출력은 쉘의 프롬프트 및 명령 출력과 함께 터미널로 전송됩니다. 나중에 검사할 수 있는 파일로 보내거나 별도의 터미널 또는 screen
/ tmux
창으로 보내는 것을 선호할 수도 있습니다.
strace -o >(grep --color open > strace.log) zsh
strace -e /open -o strace.log zsh
하위 프로세스 및 해당 하위 프로세스에서 실행되는 명령을 포함하여 하위 프로세스에서 수행된 호출을 추적하려면 이 -f
옵션이 필요합니다.
~/.xinitrc
따라서 시스템을 여는 요소 (그리고 그것과 아무 관련이 없음 zsh
)와 이를 사용할 수 있는 시기 audit
(시스템에 기본적으로 설치/활성화되지 않을 수 있음)를 살펴보십시오 .