我在脚本上收到“权限被拒绝”错误。我已经检查了所有常见的嫌疑犯:
x
权限rwx
属于所有者,也就是我正在使用的用户。#!/bin/sh
我可以很好地执行脚本shebang行。但这无关紧要,因为它甚至从未被解析过。-x
在我当前的bash会话上进行设置将不会显示除尝试执行脚本以外的任何其他信息。
我得到的错误是:
$ path/script
bash: path/script: Permission denied
$ _
编辑:如果我通过脚本作为参数,它可以正常工作
$ /bin/sh -x path/script
...script executes...
通过深入研究内核调用来获取更多信息。如果您具有C和内核API的知识,它将对您有所帮助。man
页面是您的朋友。
看看是否有一个名为strace
try的程序which strace
。在各种UNIX上都有类似的程序(例如truss
在某些Sun上,dtruss
在OS X上),但是strace
是最常见的程序。如果找不到一个,则无论您使用什么UNIX,都可以使用Google之类的“ strace for ....”之类的Google。
strace -o strace.out -f /bin/sh path/script
-o strace.out
表示跟踪文件strace.out
-使用编辑器查看文件
-f
表示遵循子进程。
/bin/sh path/script
是您正在跟踪的程序。
您将获得很多输出,有时值得一头再往后推。
在Linux上,也ltrace
可以跟踪库调用。
如果您要跟踪的程序已在运行,则该-p
选项pid
以及该过程的可能非常方便。
当然,说了这么多,在这种情况下外壳很有可能会报告内核告诉它的所有消息。可能没有进一步的信息可提供。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句