BSP(Board Support Package),板級(jí)支持包,也稱(chēng)為硬件抽象層HAL或者中間層。
它將系統(tǒng)上層軟件和底層硬件分離開(kāi)來(lái),使系統(tǒng)上層軟件開(kāi)發(fā)人員無(wú)需關(guān)系底層硬件的具體情況,根據(jù)BSP層提供的接口開(kāi)發(fā)即可。
BSP是相對(duì)于操作系統(tǒng)而言的,不同的操作系統(tǒng)有不同定義形式的BSP,要求BSP所實(shí)現(xiàn)的功能也有所不同。
在嵌入式Linux系統(tǒng)中,主要是初始化底層硬件并引導(dǎo)操作系統(tǒng);同時(shí),BSP又是和硬件相關(guān)的,還要考慮對(duì)硬件的初始化操作。這些初始化操作主要是對(duì)CPU、內(nèi)存、中斷等相關(guān)的寄存器及協(xié)處理器進(jìn)行正確的配置。
在不同的開(kāi)發(fā)階段,因?yàn)楹诵暮臀募到y(tǒng)所處的位置不同,BSP所要完成的工 作也有所不同;在開(kāi)發(fā)調(diào)試階段,BSP要能夠與主機(jī)通信并從主機(jī)下載核心;在目標(biāo)產(chǎn)品中,BSP要能夠從非易失存儲(chǔ)設(shè)備中加載核心。
擴(kuò)展資料
BSP有兩個(gè)特點(diǎn):硬件相關(guān)性和操作系統(tǒng)相關(guān)性。
設(shè)計(jì)一個(gè)完整的BSP需要完成兩部分工作:
A、 嵌入式系統(tǒng)的硬件初始化和BSP功能。
片級(jí)初始化:純硬件的初始化過(guò)程,把嵌入式微處理器從上電的默認(rèn)狀態(tài)逐步設(shè)置成系統(tǒng)所要求的工作狀態(tài)。
板級(jí)初始化:包含軟硬件兩部分在內(nèi)的初始化過(guò)程,為隨后的系統(tǒng)初始化和應(yīng)用程序建立硬件和軟件的運(yùn)行環(huán)境。
系統(tǒng)級(jí)初始化:以軟件為主的初始化過(guò)程,進(jìn)行操作系統(tǒng)的初始化。
B、 設(shè)計(jì)硬件相關(guān)的設(shè)備驅(qū)動(dòng)。
學(xué)習(xí)嵌入式開(kāi)發(fā),一般會(huì)面臨3個(gè)階段:
1:學(xué)習(xí)基本的編程語(yǔ)言C/C++,此時(shí)linux版本不重要,重要的是符合C99標(biāo)準(zhǔn)的編譯器,建議使用ubuntu或者centos,免費(fèi)并且都默認(rèn)安裝了標(biāo)準(zhǔn)g++編譯器。
2:學(xué)習(xí)linux的基本環(huán)境,包括libc庫(kù)等基本C庫(kù)和一些標(biāo)準(zhǔn)的內(nèi)核函數(shù),建議使用ubuntu,不要使用centos,centos里面擴(kuò)展了不少redhat的庫(kù),在實(shí)際嵌入式開(kāi)發(fā)無(wú)法使用。
3:學(xué)習(xí)嵌入式的特定編譯環(huán)境,交叉編譯技巧等等,此時(shí)必須在實(shí)際的嵌入式開(kāi)發(fā)板上學(xué)習(xí),不能在發(fā)行版linux下學(xué)習(xí),因?yàn)榍度胧介_(kāi)發(fā)板都是用裁剪和優(yōu)化過(guò)的linux內(nèi)核,編譯環(huán)境也是嵌入式處理器自帶的,和發(fā)行版linux有較大的不同。 總的來(lái)說(shuō),學(xué)習(xí)嵌入式開(kāi)發(fā),建議使用ubuntu
查看路徑
顯示當(dāng)前目錄的路徑
查看命令的可執(zhí)行文件所在路徑, Linux 下,每一條命令其實(shí)都對(duì)應(yīng)一個(gè)可執(zhí)行程序,在終端中輸入命令,按回車(chē)的時(shí)候,就是執(zhí)行了對(duì)應(yīng)的那個(gè)程序, which 命令本身對(duì)應(yīng)的程序也存在于 Linux 中。
總的來(lái)說(shuō)一個(gè)命令就是一個(gè)可執(zhí)行程序。
瀏覽和切換目錄
列出文件和目錄,它是 Linux 最常用的命令之一。
【常用參數(shù)】
cd 是英語(yǔ) change directory 的縮寫(xiě),表示切換目錄。
cd / --> 跳轉(zhuǎn)到根目錄
cd ~ --> 跳轉(zhuǎn)到家目錄
cd .. --> 跳轉(zhuǎn)到上級(jí)目錄
cd ./home --> 跳轉(zhuǎn)到當(dāng)前目錄的home目錄下
cd /home/lion --> 跳轉(zhuǎn)到根目錄下的home目錄下的lion目錄
cd --> 不添加任何參數(shù),也是回到家目錄
[注意] 輸入cd /ho + 單次 tab 鍵會(huì)自動(dòng)補(bǔ)全路徑 + 兩次 tab 鍵會(huì)列出所有可能的目錄列表。
列舉目錄大小信息。
【常用參數(shù)】
一次性顯示文件所有內(nèi)容,更適合查看小的文件。
cat cloud-init.log
【常用參數(shù)】
分頁(yè)顯示文件內(nèi)容,更適合查看大的文件。
less cloud-init.log
【快捷操作】
顯示文件的開(kāi)頭幾行(默認(rèn)是10行)
head cloud-init.log
【參數(shù)】
顯示文件的結(jié)尾幾行(默認(rèn)是10行)
tail cloud-init.log復(fù)制代碼
【參數(shù)】
創(chuàng)建一個(gè)文件
touch new_file復(fù)制代碼
創(chuàng)建一個(gè)目錄
mkdir new_folder復(fù)制代碼
【常用參數(shù)】
文件的復(fù)制和移動(dòng)
拷貝文件和目錄
cp file file_copy --> file 是目標(biāo)文件,file_copy 是拷貝出來(lái)的文件cp file one --> 把 file 文件拷貝到 one 目錄下,并且文件名依然為 file
cp file one/file_copy --> 把 file 文件拷貝到 one 目錄下,文件名為file_copy
cp *.txt folder --> 把當(dāng)前目錄下所有 txt 文件拷貝到 folder 目錄下
【常用參數(shù)】
移動(dòng)(重命名)文件或目錄,與cp命令用法相似。
mv file one --> 將 file 文件移動(dòng)到 one 目錄下
mv new_folder one --> 將 new_folder 文件夾移動(dòng)到one目錄下mv *.txt folder --> 把當(dāng)前目錄下所有 txt 文件移動(dòng)到 folder 目錄下mv file new_file --> file 文件重命名為 new_file
文件的刪除和鏈接
刪除文件和目錄,由于 Linux 下沒(méi)有回收站,一旦刪除非常難恢復(fù),因此需要謹(jǐn)慎操作
rm new_file --> 刪除 new_file 文件
rm f1 f2 f3 --> 同時(shí)刪除 f1 f2 f3 3個(gè)文件
【常用參數(shù)】
英文 Link 的縮寫(xiě),表示創(chuàng)建鏈接。
學(xué)習(xí)創(chuàng)建鏈接之前,首先要理解鏈接是什么,我們先來(lái)看看 Linux 的文件是如何存儲(chǔ)的:
Linux 文件的存儲(chǔ)方式分為3個(gè)部分,文件名、文件內(nèi)容以及權(quán)限,其中文件名的列表是存儲(chǔ)在硬盤(pán)的其它地方和文件內(nèi)容是分開(kāi)存放的,每個(gè)文件名通過(guò) inode 標(biāo)識(shí)綁定到文件內(nèi)容。
Linux 下有兩種鏈接類(lèi)型:硬鏈接和軟鏈接。
使鏈接的兩個(gè)文件共享同樣文件內(nèi)容,就是同樣的 inode ,一旦文件1和文件2之間有了硬鏈接,那么修改任何一個(gè)文件,修改的都是同一塊內(nèi)容,它的缺點(diǎn)是,只能創(chuàng)建指向文件的硬鏈接,不能創(chuàng)建指向目錄的(其實(shí)也可以,但比較復(fù)雜)而軟鏈接都可以,因此軟鏈接使用更加廣泛。
這個(gè)部分暫時(shí)不展開(kāi)。
用戶(hù)
Linux 是一個(gè)多用戶(hù)的操作系統(tǒng)。在 Linux 中,理論上來(lái)說(shuō),我們可以創(chuàng)建無(wú)數(shù)個(gè)用戶(hù),但是這些用戶(hù)是被劃分到不同的群組里面的,有一個(gè)用戶(hù),名叫 root ,是一個(gè)很特殊的用戶(hù),它是超級(jí)用戶(hù),擁有最高權(quán)限。
以 root 身份運(yùn)行命令
這兩個(gè)命令需要 root 用戶(hù)權(quán)限
刪除用戶(hù),需要 root 用戶(hù)權(quán)限
切換用戶(hù),需要 root 用戶(hù)權(quán)限
群組的管理
Linux 中每個(gè)用戶(hù)都屬于一個(gè)特定的群組,如果你不設(shè)置用戶(hù)的群組,默認(rèn)會(huì)創(chuàng)建一個(gè)和它的用戶(hù)名一樣的群組,并且把用戶(hù)劃歸到這個(gè)群組。
創(chuàng)建群組,用法和 useradd 類(lèi)似
刪除一個(gè)已存在的群組
查看用戶(hù)所在群組
用于修改用戶(hù)的賬戶(hù)。
【常用參數(shù)】
用于修改文件的群組。
改變文件的所有者,需要 root 身份才能運(yùn)行。
【常用參數(shù)】
文件權(quán)限管理
修改訪問(wèn)權(quán)限。
【常用參數(shù)】
其中 drwxr-xr-x 表示文件或目錄的權(quán)限。讓我們一起來(lái)解讀它具體代表什么?
現(xiàn)在再來(lái)理解這句權(quán)限 drwxr-xr-x 的意思:
現(xiàn)在理解了權(quán)限,我們使用 chmod 來(lái)嘗試修改權(quán)限。chmod 它不需要是 root 用戶(hù)才能運(yùn)行的,只要你是此文件所有者,就可以用 chmod 來(lái)修改文件的訪問(wèn)權(quán)限。
chmod 640 hello.c
# 分析
6 = 4 + 2 + 0 表示所有者具有 rw 權(quán)限
4 = 4 + 0 + 0 表示群組用戶(hù)具有 r 權(quán)限
0 = 0 + 0 + 0 表示其它用戶(hù)沒(méi)有權(quán)限
對(duì)應(yīng)文字權(quán)限為:-rw-r-----
chmod u+rx file --> 文件file的所有者增加讀和運(yùn)行的權(quán)限
chmod g+r file --> 文件file的群組用戶(hù)增加讀的權(quán)限
chmod o-r file--> 文件file的其它用戶(hù)移除讀的權(quán)限
chmod g+r file --> 文件file的群組用戶(hù)增加讀的權(quán)限,其它用戶(hù)移除讀的權(quán)限
chmod go-r file --> 文件file的群組和其他用戶(hù)移除讀的權(quán)限
chmod +x file --> 文件file的所有用戶(hù)增加運(yùn)行的權(quán)限
chmod u=rwx,g=r,o=- file --> 文件file的所有者分配讀寫(xiě)和執(zhí)行的權(quán)限,群組其它用戶(hù)分配讀的權(quán)限,其他用戶(hù)沒(méi)有任何權(quán)限
搜索包含關(guān)鍵字的所有文件和目錄。后接需要查找的文件名,也可以用正則表達(dá)式。
yum -y install mlocate --> 安裝包updatedb --> 更新數(shù)據(jù)庫(kù)復(fù)制代碼locate file.txtlocate fil*.txt
[注意] locate 命令會(huì)去文件數(shù)據(jù)庫(kù)中查找命令,而不是全磁盤(pán)查找,因此剛創(chuàng)建的文件并不會(huì)更新到數(shù)據(jù)庫(kù)中,所以無(wú)法被查找到,可以執(zhí)行 updatedb 命令去更新數(shù)據(jù)庫(kù)。
find
用于查找文件,它會(huì)去遍歷你的實(shí)際硬盤(pán)進(jìn)行查找,而且它允許我們對(duì)每個(gè)找到的文件進(jìn)行后續(xù)操作,功能非常強(qiáng)大。
find <何處> <何物> <做什么>
find -name "file.txt" --> 當(dāng)前目錄以及子目錄下通過(guò)名稱(chēng)查找文件
find . -name "syslog" --> 當(dāng)前目錄以及子目錄下通過(guò)名稱(chēng)查找文件
find / -name "syslog" --> 整個(gè)硬盤(pán)下查找syslog
find /var/log -name "syslog" --> 在指定的目錄/var/log下查找syslog文件find /var/log -name "syslog*" --> 查找syslog1、syslog2 ... 等文件,通配符表示所有
find /var/log -name "*syslog*" --> 查找包含syslog的文件
[注意] find 命令只會(huì)查找完全符合 "何物" 字符串的文件,而 locate 會(huì)查找所有包含關(guān)鍵字的文件。
find /var -size +10M --> /var 目錄下查找文件大小超過(guò) 10M 的文件
find /var -size -50k --> /var 目錄下查找文件大小小于 50k 的文件
find /var -size +1G --> /var 目錄下查找文件大小查過(guò) 1G 的文件
find /var -size 1M --> /var 目錄下查找文件大小等于 1M 的文件
find -name "*.txt" -atime -7
--> 近 7天內(nèi)訪問(wèn)過(guò)的.txt結(jié)尾的文件
find . -name "file" -type f
--> 只查找當(dāng)前目錄下的file文件
find . -name "file" -type d
--> 只查找當(dāng)前目錄下的file目錄
軟件倉(cāng)庫(kù)
Linux 下軟件是以包的形式存在,一個(gè)軟件包其實(shí)就是軟件的所有文件的壓縮包,是二進(jìn)制的形式,包含了安裝軟件的所有指令。Red Hat 家族的軟件包后綴名一般為 .rpm ,Debian 家族的軟件包后綴是 .deb 。
Linux 的包都存在一個(gè)倉(cāng)庫(kù),叫做軟件倉(cāng)庫(kù),它可以使用 yum 來(lái)管理軟件包, yum 是 CentOS 中默認(rèn)的包管理工具,適用于 Red Hat 一族。可以理解成 Node.js 的 npm 。
yum 常用命令
grep
全局搜索一個(gè)正則表達(dá)式,并且打印到屏幕。簡(jiǎn)單來(lái)說(shuō)就是,在文件中查找關(guān)鍵字,并顯示關(guān)鍵字所在行。
grep text file # text代表要搜索的文本,file代表供搜索的文件
對(duì)文件的行進(jìn)行排序。
sort name.txt # 對(duì)name.txt文件進(jìn)行排序
為了演示方便,我們首先創(chuàng)建一個(gè)文件 name.txt ,放入以下內(nèi)容:
ChristopherShawnTedRockNoahZacharyBella
執(zhí)行 sort name.txt 命令,會(huì)對(duì)文本內(nèi)容進(jìn)行排序。
word count 的縮寫(xiě),用于文件的統(tǒng)計(jì)。它可以統(tǒng)計(jì)單詞數(shù)目、行數(shù)、字符數(shù),字節(jié)數(shù)等。
wc name.txt # 統(tǒng)計(jì)name.txt
[root@lion ~]# wc name.txt 13 13 91 name.txt
刪除文件中的重復(fù)內(nèi)容。
uniq name.txt # 去除name.txt重復(fù)的行數(shù),并打印到屏幕上
【注意】它只能去除連續(xù)重復(fù)的行數(shù)。
剪切文件的一部分內(nèi)容。
cut -c 2-4 name.txt # 剪切每一行第二到第四個(gè)字符
在 Linux 中一個(gè)命令的去向可以有3個(gè)地方:終端、文件、作為另外一個(gè)命令的入?yún)ⅰ?/p>
命令一般都是通過(guò)鍵盤(pán)輸入,然后輸出到終端、文件等地方,它的標(biāo)準(zhǔn)用語(yǔ)是 stdin 、 stdout 以及 stderr 。
把本來(lái)要顯示在終端的命令結(jié)果,輸送到別的地方(到文件中或者作為其他命令的輸入)。
> 表示重定向到新的文件, cut -d , -f 1 notes.csv > name.csv ,它表示通過(guò)逗號(hào)剪切notes.csv 文件(剪切完有3個(gè)部分)獲取第一個(gè)部分,重定向到 name.csv 文件。
我們來(lái)看一個(gè)具體示例,學(xué)習(xí)它的使用,假設(shè)我們有一個(gè)文件 notes.csv ,文件內(nèi)容如下:
Mark1,951/100,很不錯(cuò)1Mark2,952/100,很不錯(cuò)2Mark3,
953/100,很不錯(cuò)3Mark4,954/100,很不錯(cuò)4Mark5,955/100,很不錯(cuò)5Mark6,956/100,很不錯(cuò)6
執(zhí)行命令:cut -d , -f 1 notes.csv > name.csv 最后輸出如下內(nèi)容:
Mark1Mark2Mark3Mark4Mark5Mark6
【注意】使用 > 要注意,如果輸出的文件不存在它會(huì)新建一個(gè),如果輸出的文件已經(jīng)存在,則會(huì)覆蓋。因此執(zhí)行這個(gè)操作要非常小心,以免覆蓋其它重要文件。
表示重定向到文件末尾,因此它不會(huì)像 > 命令這么危險(xiǎn),它是追加到文件的末尾(當(dāng)然如果文件不存在,也會(huì)被創(chuàng)建)。
再次執(zhí)行 cut -d , -f 1 notes.csv >> name.csv ,則會(huì)把名字追加到 name.csv 里面。
Mark1Mark2Mark3Mark4Mark5Mark6Mark1Mark2Mark3Mark4Mark5Mark6
我們平時(shí)讀的 log 日志文件其實(shí)都是用這個(gè)命令輸出的。
標(biāo)準(zhǔn)錯(cuò)誤輸出
cat not_exist_file.csv > res.txt 2> errors.log
標(biāo)準(zhǔn)錯(cuò)誤輸出(追加到文件末尾)同 >> 相似。
< 符號(hào)用于指定命令的輸入。
cat < name.csv # 指定命令的輸入為 name.csv
雖然它的運(yùn)行結(jié)果與 cat name.csv 一樣,但是它們的原理卻完全不同。
將鍵盤(pán)的輸入重定向?yàn)槟硞€(gè)命令的輸入。
sort -n << END # 輸入這個(gè)命令之后,按下回車(chē),終端就進(jìn)入鍵盤(pán)輸入模式,其中END為結(jié)束命令(這個(gè)可以自定義)wc -m << END # 統(tǒng)計(jì)輸入的單詞復(fù)
把兩個(gè)命令連起來(lái)使用,一個(gè)命令的輸出作為另外一個(gè)命令的輸入,英文是 pipeline ,可以想象一個(gè)個(gè)水管連接起來(lái),管道算是重定向流的一種。
舉幾個(gè)實(shí)際用法案例:
cut -d , -f 1 name.csv | sort > sorted_name.txt
# 第一步獲取到的 name 列表,通過(guò)管道符再進(jìn)行排序,最后輸出到sorted_name.txt
du | sort -nr | head
# du 表示列舉目錄大小信息# sort 進(jìn)行排序,-n 表示按數(shù)字排序,-r 表示倒序# head 前10行文件
grep log -Ir /var/log | cut -d : -f 1 | sort | uniq
# grep log -Ir /var/log 表示在log文件夾下搜索 /var/log 文本,-r 表示遞歸,-I 用于排除二進(jìn)制文件# cut -d : -f 1 表示通過(guò)冒號(hào)進(jìn)行剪切,獲取剪切的第一部分# sort 進(jìn)行排序# uniq 進(jìn)行去重復(fù)制代碼
在 Windows 中通過(guò) Ctrl + Alt + Delete 快捷鍵查看軟件進(jìn)程。
幫助我們快速了解系統(tǒng)中目前有哪些用戶(hù)登錄著,以及他們?cè)诟墒裁础?/b>
用于顯示當(dāng)前系統(tǒng)中的進(jìn)程, ps 命令顯示的進(jìn)程列表不會(huì)隨時(shí)間而更新,是靜態(tài)的,是運(yùn)行 ps 命令那個(gè)時(shí)刻的狀態(tài)或者說(shuō)是一個(gè)進(jìn)程快照。
獲取進(jìn)程的動(dòng)態(tài)列表。
結(jié)束一個(gè)進(jìn)程, kill + PID 。
主要是切換進(jìn)程的狀態(tài)。我們先了解下 Linux 下進(jìn)程的五種狀態(tài):
默認(rèn)情況下,用戶(hù)創(chuàng)建的進(jìn)程都是前臺(tái)進(jìn)程,前臺(tái)進(jìn)程從鍵盤(pán)讀取數(shù)據(jù),并把處理結(jié)果輸出到顯示器。例如運(yùn)行 top 命令,這就是一個(gè)一直運(yùn)行的前臺(tái)進(jìn)程。
后臺(tái)進(jìn)程的優(yōu)點(diǎn)是不必等待程序運(yùn)行結(jié)束,就可以輸入其它命令。在需要執(zhí)行的命令后面添加& 符號(hào),就表示啟動(dòng)一個(gè)后臺(tái)進(jìn)程。
啟動(dòng)后臺(tái)進(jìn)程,它的缺點(diǎn)是后臺(tái)進(jìn)程與終端相關(guān)聯(lián),一旦關(guān)閉終端,進(jìn)程就自動(dòng)結(jié)束了。
cp name.csv name-copy.csv &
使進(jìn)程不受掛斷(關(guān)閉終端等動(dòng)作)的影響。
nohup cp name.csv name-copy.csv
nohup 命令也可以和 & 結(jié)合使用。
nohup cp name.csv name-copy.csv &
使一個(gè)"后臺(tái)暫停運(yùn)行"的進(jìn)程,狀態(tài)改為"后臺(tái)運(yùn)行"。
顯示當(dāng)前終端后臺(tái)進(jìn)程狀態(tài)。
fg 使進(jìn)程轉(zhuǎn)為前臺(tái)運(yùn)行,用法和 bg 命令類(lèi)似。
我們用一張圖來(lái)表示前后臺(tái)進(jìn)程切換:
我們可以使程序在后臺(tái)運(yùn)行,成為后臺(tái)進(jìn)程,這樣在當(dāng)前終端中我們就可以做其他事情了,而不必等待此進(jìn)程運(yùn)行結(jié)束。
我們常常使用 tar 將多個(gè)文件歸檔為一個(gè)總的文件,稱(chēng)為 archive 。然后用 gzip 或 bzip2 命令將 archive 壓縮為更小的文件。
創(chuàng)建一個(gè) tar 歸檔。
tar -cvf sort.tar sort/
# 將sort文件夾歸檔為sort.tar
tar -cvf archive.tar file1 file2 file3
# 將 file1 file2 file3 歸檔為archive.tar復(fù)制代碼
"壓縮/解壓"歸檔,默認(rèn)用 gzip 命令,壓縮后的文件后綴名為 .tar.gz 。
gzip archive.tar # 壓縮gunzip archive.tar.gz # 解壓
可以用 tar 命令同時(shí)完成歸檔和壓縮的操作,就是給 tar 命令多加一個(gè)選項(xiàng)參數(shù),使之完成歸檔操作后,還是調(diào)用 gzip 或 bzip2 命令來(lái)完成壓縮操作。
tar -zcvf archive.tar.gz archive/ # 將archive文件夾歸檔并壓縮
tar -zxvf archive.tar.gz # 將archive.tar.gz歸檔壓縮文件解壓
之前講過(guò)使用 cat less more 可以查看文件內(nèi)容,但是壓縮文件的內(nèi)容是不能使用這些命令進(jìn)行查看的,而要使用 zcat、zless、zmore 進(jìn)行查看。
zcat archive.tar.gz
"壓縮/解壓" zip 文件( zip 壓縮文件一般來(lái)自 windows 操作系統(tǒng))。
# Red Hat 一族中的安裝方式y(tǒng)um install zip yum install unzip 復(fù)制代碼
unzip archive.zip
# 解壓 .zip 文件
unzip -l archive.zip
# 不解開(kāi) .zip 文件,只看其中內(nèi)容
zip -r sort.zip sort/
# 將sort文件夾壓縮為 sort.zip,其中-r表示遞歸
簡(jiǎn)單來(lái)說(shuō),編譯就是將程序的源代碼轉(zhuǎn)換成可執(zhí)行文件的過(guò)程。大多數(shù) Linux 的程序都是開(kāi)放源碼的,可以編譯成適合我們的電腦和操縱系統(tǒng)屬性的可執(zhí)行文件。
基本步驟如下:
我們來(lái)編譯安裝 htop 軟件,首先在它的官網(wǎng)下載源碼:http://bintray.com/htop/source…[1]
下載好的源碼在本機(jī)電腦上使用如下命令同步到服務(wù)器上:
scp 文件名 用戶(hù)名@服務(wù)器ip:目標(biāo)路徑
scp ~/Desktop/htop-3.0.0.tar.gz root@121.42.11.34:.
也可以使用 wegt 進(jìn)行下載:
wegt+下載地址
wegt https://bintray.com/htop/source/download_file?file_path=htop-3.0.0.tar.gz
tar -zxvf htop-3.0.0.tar.gz
# 解壓cd htop-3.0.0 # 進(jìn)入目錄
執(zhí)行 ./configure ,它會(huì)分析你的電腦去確認(rèn)編譯所需的工具是否都已經(jīng)安裝了。
執(zhí)行 make 命令
執(zhí)行 make install 命令,安裝完成后執(zhí)行 ls /usr/local/bin/ 查看是否有 htop 命令。如果有就可以執(zhí)行 htop 命令查看系統(tǒng)進(jìn)程了。
查看 ip 網(wǎng)絡(luò)相關(guān)信息,如果命令不存在的話, 執(zhí)行命令 yum install net-tools 安裝。
參數(shù)解析:
ip 地址和主機(jī)名的互相轉(zhuǎn)換。
通過(guò)非對(duì)稱(chēng)加密以及對(duì)稱(chēng)加密的方式(同 HTTPS 安全連接原理相似)連接到遠(yuǎn)端服務(wù)器。
config 文件可以***h ,方便批量管理多個(gè) ssh 連接。
配置文件分為以下幾種:
配置當(dāng)前用戶(hù)的 config :
# 創(chuàng)建config
vim ~/.ssh/config
# 填寫(xiě)一下內(nèi)容
Host lion # 別名 HostName 172.x.x.x # ip 地址 Port 22 # 端口 User root # 用戶(hù)
這樣配置完成后,下次登錄時(shí),可以這樣登錄 ssh lion 會(huì)自動(dòng)識(shí)別為 root 用戶(hù)。
[注意] 這段配置不是在服務(wù)器上,而是你自己的機(jī)器上,它僅僅是設(shè)置了一個(gè)別名。
可以使我們直接從終端控制臺(tái)下載文件,只需要給出文件的HTTP或FTP地址。
它是 Secure Copy 的縮寫(xiě),表示安全拷貝。scp 可以使我們通過(guò)網(wǎng)絡(luò),把文件從一臺(tái)電腦拷貝到另一臺(tái)電腦。
scp 是基于 ssh 的原理來(lái)運(yùn)作的, ssh 會(huì)在兩臺(tái)通過(guò)網(wǎng)絡(luò)連接的電腦之間創(chuàng)建一條安全通信的管道, scp 就利用這條管道安全地拷貝文件。
scp source_file destination_file
# source_file 表示源文件,destination_file 表示目標(biāo)文件
其中 source_file 和 destination_file 都可以這樣表示:user@ip:file_name , user 是登錄名, ip 是域名或 ip 地址。file_name 是文件路徑。
scp root@192.168.1.5:/root/file.txt file.txt # 表示把遠(yuǎn)程電腦上的 file.txt 文件拷貝到本機(jī)
scp file.txt root@192.168.1.5:/root # 表示把我的電腦中當(dāng)前文件夾下的 file.txt 文件拷貝到遠(yuǎn)程電腦
rsync 命令主要用于遠(yuǎn)程同步文件。它可以同步兩個(gè)目錄,不管它們是否處于同一臺(tái)電腦。它應(yīng)該是最常用于"增量備份"的命令了。它就是智能版的 scp 命令。
yum install rsync復(fù)制代碼
rsync -arv Images/ backups/
# 將Images 目錄下的所有文件備份到 backups 目錄下
rsync -arv Images/ root@192.x.x.x:backups/
# 同步到服務(wù)器的backups目錄下
默認(rèn)地, rsync 在同步時(shí)并不會(huì)刪除目標(biāo)目錄的文件,例如你在源目錄中刪除一個(gè)文件,但是用 rsync 同步時(shí),它并不會(huì)刪除同步目錄中的相同文件。如果向刪除也可以這么做:rsync -arv --delete Images/ backups/ 。
關(guān)閉系統(tǒng),需要 root 身份。
重啟系統(tǒng),需要 root 身份。
reboot
直接運(yùn)行即可關(guān)機(jī),不需要 root 身份。
Vim 是從 vi 發(fā)展出來(lái)的一個(gè)文本編輯器。其代碼補(bǔ)完、編譯及錯(cuò)誤跳轉(zhuǎn)等方便編程的功能特別豐富,在程序員中被廣泛使用。和 Emacs 并列成為類(lèi) Unix 系統(tǒng)用戶(hù)最喜歡的編輯器。
也成為正常模式,這是 Vim 的默認(rèn)模式,每次運(yùn)行 Vim 程序的時(shí)候,就會(huì)進(jìn)入這個(gè)模式。
例如執(zhí)行 vim name.txt 則會(huì)進(jìn)入交互模式。
交互模式特征:
這個(gè)模式是我們熟悉的文本編輯器的模式,就是可以輸入任何你想輸入的內(nèi)容。進(jìn)入這個(gè)模式有幾種方法,最常用的方法是按字母鍵 i ( i、I、a、A、o、O 都可以進(jìn)入插入模式,只是所處的位置不同),退出這種模式,只需要按下 Esc 鍵。
命令模式也稱(chēng)為底線命令模式,這個(gè)模式下可以運(yùn)行一些命令例如"退出","保存",等動(dòng)作。
也可以用這個(gè)模式來(lái)激活一些 Vim 配置,例如語(yǔ)法高亮,顯示行號(hào),等。甚至還可以發(fā)送一些命令給終端命令行,例如 ls、cp 。
為了進(jìn)入命令模式,首先要進(jìn)入交互模式,再按下冒號(hào)鍵。
用一張圖表示三種模式如何切換:
基本操作
在終端命令行中輸入 vim 回車(chē)后 Vim 就會(huì)被運(yùn)行起來(lái),也可以用 Vim 來(lái)打開(kāi)一個(gè)文件,只需要在 vim 后面再加文件名。如 vim file.name ,如果文件不存在,那么會(huì)被創(chuàng)建。
進(jìn)入文件之后,此時(shí)處于交互模式,可以通過(guò)輸入 i 進(jìn)入插入模式
在 Vim 的交互模式下,我們可以在文本中移動(dòng)光標(biāo)。
當(dāng)然也可以使用四個(gè)方向鍵進(jìn)行移動(dòng),效果是一樣的。
在交互模式下,按字母鍵 w 可以一個(gè)單詞一個(gè)單詞的移動(dòng)。
在交互模式下,按下冒號(hào)鍵 : 進(jìn)入命令模式,再按下 q 鍵,就可以退出了。
如果在退出之前又修改了文件,就直接想用 :q 退出 Vim ,那么 Vim 會(huì)顯示一個(gè)紅字標(biāo)明錯(cuò)誤信息。此時(shí)我們有兩個(gè)選擇:
在交互模式下,將光標(biāo)定位到一個(gè)你想要?jiǎng)h除的字符上,按下字母鍵 x 你會(huì)發(fā)現(xiàn)這個(gè)字符被刪除了。
也可以一次性刪除多個(gè)字符,只需要在按 x 鍵之前輸入數(shù)字即可。
如果之前用 dd 或者 yy 剪切復(fù)制過(guò)來(lái)的,可以使用 p 來(lái)粘貼。同樣也可以使用 數(shù)字+p來(lái)表示復(fù)制多次。
在交互模式下,將光標(biāo)置于想要替換的字符上。按下 r 鍵,接著輸入你要替換的字符即可。
如果要撤銷(xiāo)最近的修改,只需要按下 u 鍵,如果想要撤銷(xiāo)最近四次修改,可以按下4,再按下 u 。
取消撤銷(xiāo),也就是重做之前的修改使用 ctrl + r 。
Vim 編輯的文件中,每一行都有一個(gè)行號(hào),行號(hào)從1開(kāi)始,逐一遞增。
行號(hào)默認(rèn)是不顯示,如果需要它顯示的話,可以進(jìn)入命令模式,然后輸入 set nu ,如果要隱藏行號(hào)的話,使用 set nonu 。
處于交互模式下,按下 / 鍵,那么就進(jìn)入查找模式,輸入你要查找的字符串,然后按下回車(chē)。光標(biāo)就會(huì)跳轉(zhuǎn)到文件中下一個(gè)查找到的匹配處。如果字符串不存在,那么會(huì)顯示 "pattern not found" 。
[注意] 用斜杠來(lái)進(jìn)行的查找是從當(dāng)前光標(biāo)處開(kāi)始向文件尾搜索,如果你要從當(dāng)前光標(biāo)處開(kāi)始,向文件頭搜索則使用 ? ,當(dāng)然也可以先按下 gg 跳轉(zhuǎn)到第一行在進(jìn)行全文搜索。
替換光標(biāo)所在行第一個(gè)匹配的字符串:
# 語(yǔ)法:s/舊字符串/新字符串# 實(shí)例:s/one/two
替換光標(biāo)所在行所有舊字符串為新字符串:
# 語(yǔ)法:s/舊字符串/新字符串/g
替換第幾行到第幾行中所有字符串:
# 語(yǔ)法:n,m s/舊字符串/新字符串/g
# 實(shí)例:2,4 s/one/two/g
最常用的就是全文替換了:
# 語(yǔ)法:%s/舊字符串/新字符串/g
可以用冒號(hào) +r ( :r ) 實(shí)現(xiàn)在光標(biāo)處插入一個(gè)文件的內(nèi)容。
:r filename # 可以用Tab鍵來(lái)自動(dòng)補(bǔ)全另外一個(gè)文件的路徑
關(guān)于軟件測(cè)試,要掌握的知識(shí)和技能有很多。 秋千學(xué)姐分類(lèi)梳理了 500個(gè) 軟件測(cè)試知識(shí)體系中的重點(diǎn)問(wèn)題答案,對(duì)于工作中的技能提升和求職面試都有很大幫助,
很實(shí)操很干貨,如果你需要,我發(fā)給你
包含功能測(cè)試、接口測(cè)試、自動(dòng)化測(cè)試、數(shù)據(jù)庫(kù)、Linux、計(jì)算機(jī)網(wǎng)絡(luò)、抓包、算法、Python等內(nèi)容
另外送軟件測(cè)試各類(lèi)電子書(shū)籍
面試或者工作中碰到的軟件測(cè)試問(wèn)題,歡迎在知乎、公眾號(hào)、小紅書(shū)提問(wèn), 秋千學(xué)姐 幫你解答
軟件測(cè)試|推薦閱讀:
秋千說(shuō)軟件測(cè)試:想拿30k軟件測(cè)試offer,看大廠365道軟件測(cè)試常問(wèn)面試真題匯總
秋千說(shuō)軟件測(cè)試:2022最火的軟件測(cè)試面試_計(jì)算機(jī)網(wǎng)絡(luò)真題答案-通過(guò)率百分之百
秋千說(shuō)軟件測(cè)試:2022軟件測(cè)試20k的offer,自動(dòng)化測(cè)試面試題答案分享一波
秋千說(shuō)軟件測(cè)試:2022軟件測(cè)試拿了20k的offer,Python面試題答案分享一波
秋千說(shuō)軟件測(cè)試:2022軟件測(cè)試20k的offer,線程進(jìn)程協(xié)程面試題答案分享一波
秋千說(shuō)軟件測(cè)試:2022軟件測(cè)試拿了20k的offer,計(jì)算機(jī)網(wǎng)絡(luò)面試題答案分享一波
秋千說(shuō)軟件測(cè)試:2022軟件測(cè)試20k的offer,計(jì)算機(jī)網(wǎng)絡(luò)面試題答案分享一波
職場(chǎng)經(jīng)驗(yàn)|推薦閱讀:
秋千說(shuō)軟件測(cè)試:從年薪200萬(wàn)領(lǐng)導(dǎo)身上學(xué)到的職場(chǎng)干貨,彎道超車(chē)
秋千說(shuō)軟件測(cè)試:裁員最先裁哪類(lèi)員工?看紅樓夢(mèng)檢抄大觀園就知道了
面試跳槽|推薦閱讀:
秋千說(shuō)軟件測(cè)試:你的離職原因應(yīng)該這么說(shuō),跳槽必看
秋千說(shuō)軟件測(cè)試:有些人害怕被裁員,有些人等著提裁員大禮包
秋千說(shuō)軟件測(cè)試:面試成功被夸邏輯思維強(qiáng),來(lái)分享面試技巧了
秋千說(shuō)軟件測(cè)試:面試時(shí)千萬(wàn)別說(shuō)這些大實(shí)話!
秋千說(shuō)軟件測(cè)試:就業(yè)不景氣,對(duì)抗焦慮和迷茫,只需要做對(duì)這1點(diǎn)
秋千說(shuō)軟件測(cè)試:為什么你的面試總是掛?面試官最討厭的這些雷區(qū)別踩
linux指操作系統(tǒng),擁有許多完整的功能,所以整個(gè)操作系統(tǒng)需要占據(jù)一定的存儲(chǔ)空間,而嵌入式linux內(nèi)核一般是對(duì)linux進(jìn)行裁剪后重新編譯產(chǎn)生的一個(gè)精簡(jiǎn)版的linux操作系統(tǒng),去除了一些不需要的功能,使系統(tǒng)需要的存儲(chǔ)空間更小,方便移植到芯片的存儲(chǔ)空間中去
在嵌入式Linux中,建立任務(wù)可以通過(guò)使用系統(tǒng)命令或者編程語(yǔ)言來(lái)實(shí)現(xiàn)??梢跃帉?xiě)shell腳本或者C語(yǔ)言程序來(lái)創(chuàng)建需要的任務(wù),并利用Linux的任務(wù)調(diào)度器(如cron或者at命令)來(lái)指定任務(wù)的執(zhí)行時(shí)間和頻率。
另外,也可以利用系統(tǒng)提供的任務(wù)管理工具(如systemd或者init.d)來(lái)創(chuàng)建并管理任務(wù)。通過(guò)這些方法,可以有效地在嵌入式Linux系統(tǒng)中建立任務(wù),并確保任務(wù)按時(shí)按要求執(zhí)行。
嵌入式Linux和FreeRTOS是兩種常見(jiàn)的嵌入式操作系統(tǒng),它們?cè)谠O(shè)計(jì)和用途上有一些區(qū)別:
1. 復(fù)雜性和功能:嵌入式Linux是基于Linux內(nèi)核的操作系統(tǒng),提供了完整的操作系統(tǒng)功能和廣泛的軟件支持。它具有強(qiáng)大的多任務(wù)處理能力、文件系統(tǒng)支持、網(wǎng)絡(luò)功能和豐富的應(yīng)用程序接口(API)。嵌入式Linux適用于較復(fù)雜的應(yīng)用,需要運(yùn)行大型應(yīng)用程序和服務(wù)的場(chǎng)景。
FreeRTOS是一個(gè)輕量級(jí)的實(shí)時(shí)操作系統(tǒng)(RTOS),專(zhuān)注于提供最小化的內(nèi)核和豐富的實(shí)時(shí)調(diào)度功能。它具有低延遲和高可靠性的特點(diǎn),適用于對(duì)實(shí)時(shí)性要求較高的應(yīng)用,如工控系統(tǒng)、傳感器網(wǎng)絡(luò)和嵌入式設(shè)備。
2. 內(nèi)存和處理器要求:嵌入式Linux通常需要較大的內(nèi)存和處理器資源,因?yàn)樗\(yùn)行完整的操作系統(tǒng)和應(yīng)用程序。這使得它在資源受限的嵌入式系統(tǒng)上運(yùn)行可能會(huì)面臨挑戰(zhàn)。
FreeRTOS則專(zhuān)注于最小化的內(nèi)核和低資源占用。它被設(shè)計(jì)為高效運(yùn)行在資源受限的嵌入式系統(tǒng)上,要求較少的內(nèi)存和處理器資源。
3. 靈活性和定制性:嵌入式Linux由于其完整的操作系統(tǒng)功能和廣泛的軟件支持,具有較高的靈活性和定制性。開(kāi)發(fā)人員可以選擇和定制各種軟件組件來(lái)滿(mǎn)足特定需求,并利用強(qiáng)大的開(kāi)發(fā)和調(diào)試工具。
FreeRTOS在設(shè)計(jì)上更加精簡(jiǎn),專(zhuān)注于實(shí)時(shí)性和可靠性,因此其定制性相對(duì)較低。不過(guò),F(xiàn)reeRTOS提供了一些可選的功能模塊,可以根據(jù)需求進(jìn)行配置。
綜上所述,選擇嵌入式Linux還是FreeRTOS取決于項(xiàng)目的需求和約束。如果需要較高的功能性和靈活性,并且有足夠的資源可用,嵌入式Linux可能是更好的選擇。而如果對(duì)實(shí)時(shí)性要求較高,并且資源受限,F(xiàn)reeRTOS可能是更適合的選擇。
雖然我做linux嵌入式測(cè)試,不是開(kāi)發(fā)。但我可以告訴你,絕對(duì)必要。Linux下很多事情用shell腳本來(lái)處理非常方便:
1)啟動(dòng)腳本,負(fù)責(zé)啟動(dòng)系統(tǒng)進(jìn)程、守護(hù)進(jìn)程等。
2)腳本可以做一些文件處理、命令行工具調(diào)用,在C程序中用system系統(tǒng)調(diào)用方式執(zhí)行腳本。
嵌入式的學(xué)習(xí)并不像想象的那么難,主要是因?yàn)橛杏布_(kāi)發(fā)板,一般人敬而遠(yuǎn)之,其實(shí)對(duì)于理工科的本科畢業(yè)生(如自動(dòng)化、電子、信息等專(zhuān)業(yè)),懂一定的C語(yǔ)言知識(shí),是否懂硬件其實(shí)關(guān)系不大,這樣的條件就可以來(lái)創(chuàng)客學(xué)院學(xué)習(xí)嵌入式了,現(xiàn)在,嵌入式的人才很多,都是半路出家,由其他的行業(yè)轉(zhuǎn)行過(guò)來(lái),由于沒(méi)有系統(tǒng)掌握嵌入式的相關(guān)知識(shí),對(duì)于這部分人,企業(yè)其實(shí)是不滿(mǎn)意的,只是現(xiàn)在沒(méi)有大量的人才供他們挑選。
嵌入式linux可以理解為精簡(jiǎn)版的linux。,也可以簡(jiǎn)單理解為不同發(fā)行版linux之間的區(qū)別。
另外,現(xiàn)在的嵌入式設(shè)備性能越來(lái)越強(qiáng),跟PC的差別也越來(lái)越小了。
PC上的linux也可以移植到嵌入式設(shè)備上。
嵌入式Linux是一種嵌入式系統(tǒng)開(kāi)發(fā)中常用的操作系統(tǒng),學(xué)習(xí)并掌握嵌入式Linux技術(shù)對(duì)于從事嵌入式系統(tǒng)開(kāi)發(fā)的人來(lái)說(shuō)非常重要。本文將介紹如何自學(xué)嵌入式Linux,幫助初學(xué)者更好地入門(mén)和提高。
在學(xué)習(xí)嵌入式Linux之前,建議先掌握一些基礎(chǔ)知識(shí):
自學(xué)嵌入式Linux可以通過(guò)以下途徑獲取學(xué)習(xí)資料和資源:
學(xué)習(xí)嵌入式Linux最好的方式是通過(guò)實(shí)踐項(xiàng)目來(lái)掌握相關(guān)技術(shù):
在學(xué)習(xí)嵌入式Linux的過(guò)程中,可以通過(guò)參與開(kāi)發(fā)者社區(qū)進(jìn)行交流:
通過(guò)以上步驟的學(xué)習(xí)和實(shí)踐,相信你能夠逐漸掌握嵌入式Linux的技術(shù)。自學(xué)嵌入式Linux需要耐心和堅(jiān)持,但是一旦掌握了這門(mén)技術(shù),將為你的嵌入式系統(tǒng)開(kāi)發(fā)之路鋪平道路。
感謝您閱讀本文,并希望能夠幫助您更好地自學(xué)嵌入式Linux!