이는 학문적 목적을 위한 것입니다. GUI에서 특정 작업(예: 폴더 생성)을 수행할 때 어떤 명령이 실행되는지 알고 싶습니다. 나는 GUI의 mkdir
쉘 명령과 옵션이 모두 동일한 작업을 수행한다는 것을 보여주고 싶습니다 .create folder
답변1
프로세스가 수행되는 작업을 관찰할 수 있습니다.스트레스주문하다. 스트레스 쇼시스템 호출프로세스에 의해 실행됩니다. 해당 환경의 프로세스에 영향을 미치는 모든 작업은 시스템 호출을 통해 수행됩니다. 예를 들어 디렉터리 생성은 최종 호출을 통해서만 수행할 수 있습니다.mkdir
시스템 호출. 이것mkdir
쉘 명령동일한 이름의 시스템 호출을 둘러싼 얇은 래퍼입니다.
mkdir
무슨 일이 일어나고 있는지 보려면 다음을 실행하세요.
strace mkdir foo
mkdir
(내 시스템에서 성공적으로 실행된 총 76개) 이외의 많은 호출을 볼 수 있습니다 mkdir
.execve
프로세스 바이너리 이미지를 로드한 다음 프로그램에서 사용하는 라이브러리와 데이터 파일을 로드하기 위해 호출하고, 메모리를 할당하기 위해 호출하고, 시스템 상태를 관찰하기 위해 호출하고, 마지막으로 명령이 호출되고 다음 mkdir
으로 끝납니다.exit_group
.
GUI 프로그램이 수행하는 작업을 관찰하려면 해당 프로그램을 시작하고 작업 중에만 관찰하십시오. ( ps x
또는 htop
다른 프로세스 뷰어를 사용하여) 프로그램의 프로세스 ID를 찾아 실행하십시오.
strace -o file_manager.mkdir.strace -p1234
그러면 프로세스 1234의 추적이 파일에 저장됩니다 file_manager.mkdir.strace
. 프로그램을 중지하지 않고 Ctrl+ C중지를 누릅니다 . strace
디렉터리 이름 입력과 같은 작업에는 수천 또는 수만 개의 시스템 호출이 포함될 수 있습니다. 마우스 이동, 포커스 변경 등을 처리하는 것은 디렉터리를 만드는 것보다 이 수준에서 훨씬 더 복잡합니다.
strace
options 를 전달하여 출력에 기록되는 시스템 호출을 선택할 수 있습니다 -e
. 예를 들어 read
, write
및 select
:을 생략합니다.
strace -e \!read,write,select …
통화 만 녹음 mkdir
:
strace -e mkdir …
음 , 거의 모든 것입니다. 공유 메모리에는 초기 설정을 위한 시스템 호출만 포함됩니다.