2015-09-04 103 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.沒什麼可繼續,因爲它不清楚嘗試什麼或打印退出狀態。 –

相關問題