成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux 中退出碼的含義

系統(tǒng) Linux
揭開 Linux 中退出碼的神秘面紗。了解什么是退出碼,以及為什么和如何使用它們。

退出碼(退出狀態(tài))可以告訴我們最后一次執(zhí)行的命令的狀態(tài)。在命令結束以后,我們可以知道命令是成功完成的還是以錯誤結束的。

其基本思想是,程序返回退出代碼 0 時表示執(zhí)行成功,沒有問題。代碼 1 或 0 以外的任何代碼都被視為不成功。

退出碼除了 0 和 1 外還有很多值,我將在本文介紹它們。

Linux Shell 中的各種退出碼

我們來快速了解一下 Linux Shell 中的主要退出碼:

退出碼

解釋

0

命令成功執(zhí)行

1

通用錯誤代碼

2

命令(或參數)使用不當

126

權限被拒絕(或)無法執(zhí)行

127

未找到命令,或 PATH 錯誤

128+n

命令被信號從外部終止,或遇到致命錯誤

130

通過 Ctrl+C 或 SIGINT 終止(終止代碼 2 或鍵盤中斷)

143

通過 SIGTERM 終止(默認終止)

255/*

退出碼超過了 0-255 的范圍,因此重新計算(LCTT 譯注:超過 255 后,用退出碼對 256 取模)

?? 130SIGINT 或 ^C)和 143SIGTERM)等終止信號是非常典型的,它們屬于 128+n 信號,其中 n 代表終止碼。

在簡單了解了退出碼之后,我們來看看它們的用法。

獲取退出碼

前一個命令執(zhí)行的退出碼存儲在 特殊變量 $? 中。你可以通過運行以下命令來獲取:

echo $?

我們在所有演示中都將使用它來獲取退出代碼。

請注意,exit 命令支持以帶著前一條命令相同的退出碼退出。

退出碼 0

退出碼 0 表示命令執(zhí)行無誤,這是完成命令的理想狀態(tài)。

例如,我們運行這樣一條基本命令

neofetch 
echo $?

這個退出碼 0 表示特定命令已成功執(zhí)行,僅此而已。讓我們再演示幾個例子。

你可以嘗試 終止一個進程;它也會返回代碼 0

pkill lxappearance

查看文件內容也會返回退出碼 0,這意味著 cat 命令執(zhí)行成功。

退出碼 1

退出碼 1 也很常見。它通常表示命令以一般錯誤結束。

例如,在沒有 sudo 權限的情況下使用 軟件包管理器,就會返回代碼 1。在 Arch Linux 中,如果我運行下面的命令:

pacman -Sy

它會返回 1, 表示上一條命令運行出錯。

exit code 1 (impermissible operation resulted in this code)exit code 1 (impermissible operation resulted in this code)

?? 如果你在基于 Ubuntu 的發(fā)行版中嘗試這樣做(不使用 sudo 執(zhí)行 apt update),運行后會得到錯誤碼 100,表示你是在沒有權限的情況下運行 apt100 不是標準錯誤碼,而是 apt 特有的錯誤碼。

雖然這是一般的理解,但我們也可以將其解釋為 “不被允許的操作”。

除以 0 等操作也會返回錯誤碼 1

Division by zero results in code 1Division by zero results in code 1

退出碼 2

這個退出碼出現在當執(zhí)行的命令有語法錯誤時。濫用命令參數也會導致此錯誤。

一般來說,它表示由于使用不當,命令無法執(zhí)行。

例如,我在一個本應只有一個連字符的選項上添加了兩個連字符,那么此時會出現退出碼 2。

grep --z file.txt

Invalid argument resulted in exit code 2Invalid argument resulted in exit code 2

當權限被拒絕時,比如訪問 /root 文件夾,就會出現錯誤碼 2

Permission denied gives out code 2Permission denied gives out code 2

退出碼 126

126 是一個特殊的退出碼,它用于表示命令或腳本因權限錯誤而未被執(zhí)行。

當你嘗試執(zhí)行沒有執(zhí)行權限的 Shell 腳本時,就會出現這個錯誤。

請注意,該退出碼只出現在沒有足夠權限的腳本或命令的“執(zhí)行”中,這與一般的權限被拒絕錯誤不同。

因此,不要把它與你之前看到的退出碼為 2 的示例混淆。在那個示例中,運行的是 ls 命令,權限問題出自它試圖執(zhí)行的目錄。而本例中權限問題來自腳本本身。

退出碼 127

這是另一個常見的退出碼。退出碼 127 指的是“未找到命令”。它通常發(fā)生在執(zhí)行的命令有錯別字或所需的可執(zhí)行文件不在 $PATH 變量中時。

例如,當我嘗試執(zhí)行一個不帶路徑的腳本時,經常會看到這個錯誤。

Script executed without the path gives "command not found" or code 127Script executed without the path gives "command not found" or code 127

當你想運行的可執(zhí)行文件不在 $PATH 變量中時,也會出現退出碼 127。你可以通過 在 PATH 變量中添加命令的目錄 來糾正這種情況。

當你輸入不存在的命令時,也會得到這樣的退出碼。

Unmount is not a command, and Screenfetch is not installed, which resulted in code 127Unmount is not a command, and Screenfetch is not installed, which resulted in code 127

退出碼 128+n 系列

當應用程序或命令因致命錯誤而終止或執(zhí)行失敗時,將產生 128 系列退出碼(128+n),其中 n 為信號編號。

n 包括所有類型的終止代碼,如 SIGTERMSIGKILL 等。

退出碼 130 或 SIGINT

在通過終止信號 2 或按下 Ctrl+C 中斷進程時,會發(fā)出 SIGINT(鍵盤中斷信號)。

因為終止信號是 2,所以我們得到的退出碼是 130(128+2)。下面的視頻演示了 lxappearance 的中斷信號。


退出碼 137 或 SIGKILL

SIGKILL(立即終止信號)表示終止信號 9。這是終止應用程序時最不應該使用的方法。

因為終止信號為 9,因此我們得到的退出代碼為 137(128+9)。


退出碼 143 或 SIGTERM

SIGTERM 是進程在未指定參數的情況下被殺死時的默認行為。

SIGTERM 的終止信號為 15,因此該信號的退出碼為 143(128+15)。


還有一些你以前可能不知道的終止信號,它們也有自己類似的退出碼。你可以在這里查看它們:

?? 請注意,如果進程在啟動它的同一會話中終止,這些信號可能不會出現。如果要重現這些信號,請從不同的 shell 終止。

就個人而言,信號 128 是無法重現的。

當退出碼超過了 255 會怎樣?

最新版本的 Bash 甚至保留了超過 255 的原始退出碼的值,但一般來說,如果代碼超過 255,就會被重新計算。

也就是說,代碼 256 會變成 0257 會變成 1383 會變成 127,以此類推。為確保更好的兼容性,請將退出碼保持在 0 至 255 之間。

結語

希望你對 Linux Shell 中的退出碼有所了解。在排查各種問題時,使用它們會非常方便。

如果你要在 Shell 腳本中使用這些代碼,請確保你了解每個代碼的含義,以便更容易地排除故障。

這就是本文的全部內容。

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2022-07-29 10:01:50

Docker退出碼

2024-03-04 07:47:06

KubernetesUnix系統(tǒng)

2019-01-22 17:00:24

Linux命令工具

2021-09-14 12:34:33

LinuxLinux終端

2023-12-25 22:19:35

函數

2009-10-22 16:31:48

2011-11-01 15:37:30

VPNMPLSCE

2010-07-21 16:26:27

telnet程序

2011-01-18 11:31:37

2023-12-27 08:36:27

2010-06-10 10:45:05

Internet協議

2013-03-28 15:19:31

assign、copy

2013-05-14 15:39:08

Linux系統(tǒng)系統(tǒng)負載

2021-04-09 15:55:07

掃碼支付二維碼數字人民幣

2021-10-26 10:28:41

開發(fā)架構Kubernetes

2011-03-30 11:31:10

MRTG

2010-06-25 15:32:07

2009-09-09 09:12:27

思科認證CCNACCNA思科認證

2024-09-05 08:39:21

2010-06-11 14:18:59

通訊協議
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品久久区二区三区蜜桃臀 | 亚州av| 日韩一级免费电影 | 亚洲视频二区 | 久久国产日本 | 毛片网在线观看 | 欧美午夜精品 | 欧美综合一区二区三区 | av天天操 | 久久中文字幕在线 | av中文字幕在线观看 | 精品亚洲一区二区三区 | 国产三区av | 欧美日韩国产在线 | 男人的天堂中文字幕 | www日| 成人av一区二区在线观看 | 成人精品 | 亚洲激情在线观看 | 秋霞影院一区二区 | 黄色免费av | 欧美一级黄色网 | 激情av网站 | 欧美福利视频一区 | 久久久精品网 | 青青草原综合久久大伊人精品 | 亚洲一区二区中文字幕 | 日本在线观看视频 | 香蕉91| 综合久久久| 国产伊人精品 | 热久色| 久久久久亚洲 | 超碰最新在线 | 午夜精品一区二区三区在线观看 | 久久久五月天 | 在线国产一区二区 | 国产一区中文字幕 | 成年人黄色一级毛片 | 蜜月va乱码一区二区三区 | 成人超碰在线 |