我如何找出linux命令的确切功能?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了我如何找出linux命令的确切功能?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1818字,纯文字阅读大概需要3分钟。
内容图文
![我如何找出linux命令的确切功能?](/upload/InfoBanner/zyjiaocheng/954/d57a14acb52045cda2681fccc55280d2.jpg)
当我运行python file.py之类的东西时,系统(我认为)以file.py作为参数执行一些文件.如何确切地找出它正在执行的文件或至少是目录?
是否有Linux命令可以让您找到其他命令的目标?
解决方法:
“命令的作用”没有明确定义,是一个含糊不清的句子.所有这些都有side-effects(至少,燃烧的CPU周期正在加热你的处理器).
我假设你的命令不是恶意的或敌意的,你的operating system是一些Linux ……
通常,命令有一些文档.所以对于命令foo尝试aproposfoo和manfoo,经常foo – help(GNU coding standard要求)或者STFW.如果命令打包在您的发行版中,它可能有一个单独的文档包(例如GCC在我的Debian / Sid上打包为gcc-5,g-5,gccgo-5等…但是还有一个gcc- 5-doc包等…我建议安装你正在使用的软件的大多数文档包…以及与Debian相关的发行版的manpages& manpages-dev& manpages-posix& manpages-posix-dev).
每个process都在做一些system calls(这是最常见的方法来做可观察的副作用,例如输入和输出).可能的Linux系统调用在syscalls(2)中列出.您可以使用strace(1)找到命令或进程的动态执行系统调用的序列(少数“系统调用”如time(2)通常不是内核完成的真正系统调用,有关详细信息,请参阅vdso(7)) .
尝试一个简单的例子:
strace pwd
你会发现它正在进行大约70次系统调用,特别是在我的Debian / PC上:
getcwd("/home/basile", 4096) = 13
fstat(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0x7f61aac5a000
write(1, "/home/basile\n", 13) = 13
另请参见ltrace(1),它跟踪对共享库中函数的调用.
最后,大多数Linux命令都是free software,因此您可以下载和学习他们的source code,甚至可以改进它.
正如其他人所回答的那样,你的shell正在搜索$PATH中的executable(你可以用echo $PATH查询),你可以使用whichfoo和whereisfoo以及typefoo来查找关于foo的更多信息.当然,shell有一些内置命令,比如cd(这使得shell本身可以执行chdir(2)系统调用,因此cd命令不能有任何ELF可执行文件,必须是内置命令),并且大多数shell都允许您定义壳functions和aliases.
PS.即使对于理解恶意命令,strace也非常有用.
内容总结
以上是互联网集市为您收集整理的我如何找出linux命令的确切功能?全部内容,希望文章能够帮你解决我如何找出linux命令的确切功能?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。