2015-09-04 104 views
-5

我试着在UNIX中执行一个文件。它显示以下错误:退出状态205是什么意思?

ERROR: Unable to execute 002Sanity: Permission denied 
Failed to exec() 
Exit Status: 205 

如何解决此问题?

+0

'权限被拒绝exec()失败**可能**您的脚本或一些下标 - '002Sanity' - 由该脚本调用时缺少执行权限。或者你的文件系统安装了'noexec'选项。 – anishsane

回答

5

请阅读特定软件的说明文件,其中提供了代码205 exit(2)。没有关于它的通用约定(除了EXIT_SUCCESS是0,并且EXIT_FAILURE是1)。

FreeBSD有sysexits.h,但205没有在那里列出。

它看起来像execve(2)失败EACCESSENOEXECerrno。您可以使用strace(1)进行调查。还请查看日志文件(可能最近修改的文件在/var/log/下)。

确保您正在执行的脚本(或executable文件)确实可执行。尝试到chmod u+rx它(见chmod(1))。

1

退出状态仅适用于退出程序的情况。在这种情况下,它可能是bash(基于你问题上的标签),它有一些特殊的退出状态处理。首先,它被记录为在信号终止的信号编号上加128。在这种情况下,exec()文件的尝试失败,所以人们可能会猜测它与errno相关。查看/usr/include/asm-generic/errno.h显示没有错误高达205,所以猜测它有另一个数字添加。该数字可能是192(128 + 64,或八位字节的两个最高位)。这留下13,这是EACCES(权限被拒绝),一个执行后最可能的错误找不到;事实上,这将确认我们的错误消息,其中已经说过“权限被拒绝”。您尝试执行的文件很可能不是可执行文件(使用chmod + x进行设置),可能会挂载它的文件系统而不允许任何执行(标志noexec)。

+1

205代表192 + EACCES的想法看起来好像是猜测。你有没有实际使用这个约定的程序的例子? – chepner

+0

你是对的,这是猜测。不幸的是,即使在数据源中挖掘了几分钟也没有揭示它在bash中的表现。期望值似乎是1(如果启用了错误退出)或shell.h中的EX_宏之一,它们是2,124-127和256-261。也许报告是来自另一个shell?我也无法在bash中找到任何错误消息。 –

+0

ERROR:消息看起来像来自sudoers插件的sudo输出,但它可能会返回127.没什么可继续,因为它不清楚尝试什么或打印退出状态。 –

相关问题