터미널을 통해 시스템 명령 내에서 특정 시스템 호출이 사용되는지 확인하는 방법은 무엇입니까?

터미널을 통해 시스템 명령 내에서 특정 시스템 호출이 사용되는지 확인하는 방법은 무엇입니까?

저는 리눅스를 처음 접했습니다. 시스템 명령이 내부적으로 특정 시스템 호출을 사용하는지 터미널을 통해 확인하는 방법을 알고 싶습니다. 하드 링크를 수행한다고 가정해 보겠습니다. 따라서 "ln" 명령은 내부적으로 link() 시스템 호출을 사용합니다. 마찬가지로 rm 명령은 unlink() 시스템 호출을 사용합니다.

답변1

프로그램에서 사용하는 시스템 호출을 추적하는 데 사용할 수 있습니다 strace. 예를 들어

strace -f ls

다양한 옵션이 있습니다. man strace시스템 을 참조하거나온라인선택한 시스템 호출, 입력/출력 등만 표시하도록 출력을 필터링하는 기능을 포함하여 자세히 알아보세요.

strace(setuid root) 와 같은 setuid/setgid 프로그램을 사용하는 경우 /usr/bin/passwd추적 중에 대상 응용 프로그램의 권한이 삭제됩니다.

관련 정보