GUI에서 작업을 수행할 때 어떤 명령이 실행되었는지 어떻게 알 수 있나요?

GUI에서 작업을 수행할 때 어떤 명령이 실행되었는지 어떻게 알 수 있나요?

이는 학문적 목적을 위한 것입니다. 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디렉터리 이름 입력과 같은 작업에는 수천 또는 수만 개의 시스템 호출이 포함될 수 있습니다. 마우스 이동, 포커스 변경 등을 처리하는 것은 디렉터리를 만드는 것보다 이 수준에서 훨씬 더 복잡합니다.

straceoptions 를 전달하여 출력에 기록되는 시스템 호출을 선택할 수 있습니다 -e. 예를 들어 read, writeselect:을 생략합니다.

strace -e \!read,write,select …

통화 만 녹음 mkdir:

strace -e mkdir …

, 거의 모든 것입니다. 공유 메모리에는 초기 설정을 위한 시스템 호출만 포함됩니다.

관련 정보