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

Linux 中退出碼的含義

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

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

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

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

Linux Shell 中的各種退出碼

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

退出碼

解釋

0

命令成功執行

1

通用錯誤代碼

2

命令(或參數)使用不當

126

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

127

未找到命令,或 PATH 錯誤

128+n

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

130

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

143

通過 SIGTERM 終止(默認終止)

255/*

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

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

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

獲取退出碼

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

echo $?

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

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

退出碼 0

退出碼 0 表示命令執行無誤,這是完成命令的理想狀態。

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

neofetch 
echo $?

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

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

pkill lxappearance

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

退出碼 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 的發行版中嘗試這樣做(不使用 sudo 執行 apt update),運行后會得到錯誤碼 100,表示你是在沒有權限的情況下運行 apt100 不是標準錯誤碼,而是 apt 特有的錯誤碼。

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

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

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

退出碼 2

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

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

例如,我在一個本應只有一個連字符的選項上添加了兩個連字符,那么此時會出現退出碼 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 是一個特殊的退出碼,它用于表示命令或腳本因權限錯誤而未被執行。

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

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

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

退出碼 127

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

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

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

當你想運行的可執行文件不在 $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 系列

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

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

退出碼 130 或 SIGINT

在通過終止信號 2 或按下 Ctrl+C 中斷進程時,會發出 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系統

2019-01-22 17:00:24

Linux命令工具

2021-09-14 12:34:33

LinuxLinux終端

2023-12-25 22:19:35

函數

2011-11-01 15:37:30

VPNMPLSCE

2009-10-22 16:31:48

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

2021-10-26 10:28:41

開發架構Kubernetes

2013-05-14 15:39:08

Linux系統系統負載

2021-04-09 15:55:07

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

2010-06-25 15:32:07

2009-09-09 09:12:27

思科認證CCNACCNA思科認證

2010-06-11 14:18:59

通訊協議

2024-09-05 08:39:21

2024-02-07 01:47:47

atexit模塊程序
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久久久久久久久久久久久久久久 | 亚洲综合热| 国产线视频精品免费观看视频 | 欧美专区在线 | 国产在线一区二区 | 久草在线视频中文 | 国产美女在线播放 | 精品国产乱码久久久久久丨区2区 | 中文字幕在线不卡播放 | 青青草原综合久久大伊人精品 | 日本精品在线一区 | 午夜小视频免费观看 | 国产精品美女一区二区三区 | 国产美女自拍视频 | 亚洲精品欧美一区二区三区 | 国产区在线看 | 91婷婷韩国欧美一区二区 | 99色在线| 天天干狠狠操 | 91不卡| 一区二区三区高清在线观看 | 精品三区| 福利精品| 亚洲精品自在在线观看 | 蜜桃传媒一区二区 | 欧美综合国产精品久久丁香 | 午夜精品一区二区三区免费视频 | 鸳鸯谱在线观看高清 | 久久久九九 | 亚洲成人自拍 | 国产一级视频免费播放 | 日韩av免费在线电影 | 日韩欧美在线一区 | 四虎影院欧美 | 欧美日韩一区二区三区四区五区 | 成人免费观看男女羞羞视频 | 中文字幕专区 | 欧美日韩国产传媒 | 青草青草久热精品视频在线观看 | 黄片毛片 | 高清视频一区二区三区 |