如何通过终端查看系统命令内部是否使用了特定的系统调用?

如何通过终端查看系统命令内部是否使用了特定的系统调用?

我是linux新手。我想知道如何通过终端找出是否有任何系统命令在内部使用特定的系统调用?假设要执行硬链接。因此“ln”命令在内部使用 link() 系统调用。同样,rm 命令使用 unlink() 系统调用。

答案1

您可以使用 来跟踪程序使用的系统调用strace。例如

strace -f ls

有很多选项,请参阅man strace您的系统或在线的了解详细信息,包括过滤其输出以仅显示选定的系统调用、输入/输出等的能力。

请注意,如果您使用stracesetuid/setgid 程序,例如/usr/bin/passwd(setuid root),则目标应用程序的权限将在跟踪期间被丢弃。

相关内容