linux調(diào)用內(nèi)核命令,linux配置內(nèi)核命令

查看linux內(nèi)核版本發(fā)行版本常用命令

1.uname查看linux內(nèi)核版本 最常用 的命令,適用于CentOS,F(xiàn)edora,Debian,Ubuntu等各種linux發(fā)行版本。

創(chuàng)新互聯(lián)建站專注于企業(yè)成都全網(wǎng)營銷推廣、網(wǎng)站重做改版、阿合奇網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價格優(yōu)惠性價比高,為阿合奇等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

這里我用的服務(wù)器是CentOS7版本

uname -a

列出系統(tǒng)所有信息

解釋如下

也可以只查詢某一項(xiàng)信息

a.顯示主機(jī)類型:

uname -m

b.顯示主機(jī)名

uname -n

c.顯示操作系統(tǒng)發(fā)行編號:

uname -r

d.顯示操作系統(tǒng)名稱:

uname -s

e.顯示系統(tǒng)版本與時間:

uname -v

2.使用linux配置文件查看

a.查看內(nèi)核版本

cat /proc/version

相比較uname而言可以看到開發(fā)者組織和gcc版本號

b.查看發(fā)行版本

cat /etc/redhat-release

3.Linux dmesg命令用于顯示開機(jī)信息

kernel會將開機(jī)信息存儲在ring buffer中。開機(jī)信息亦保存在/var/log目錄中,名稱為dmesg的文件里。

查看linux內(nèi)核版本

dmesg | grep Linux

如何在Linux內(nèi)核里增加一個系統(tǒng)調(diào)用?

一、Linux0.11下添加系統(tǒng)調(diào)用:\x0d\x0a\x0d\x0a我在bochs2.2.1中對linux0.11內(nèi)核添加了一個新的系統(tǒng)調(diào)用,步驟如下: \x0d\x0a1./usr/src/linux/include/unistd.h中添加:#define __NR_mytest 87 \x0d\x0a然后在下面聲明函數(shù)原型:int mytest(); \x0d\x0a2./usr/src/linux/include/linux/sys.h中添加:extern int sys_mytest(); \x0d\x0a然后在sys_call_table中最后加上sys_mytest; \x0d\x0a3.在/usr/src/linux/kernel/sys.c中添加函數(shù)實(shí)現(xiàn)如下: \x0d\x0aint sys_mytest(){ \x0d\x0aprintk("This is a test!"); \x0d\x0areturn 123; \x0d\x0a} \x0d\x0a4.在/usr/src/linux/kernel/system_call.s中對系統(tǒng)調(diào)用號加1(原來是86改成了87) \x0d\x0a5.然后到/usr/src/linux目錄下編譯內(nèi)核make clean; make Image \x0d\x0a6. cp /usr/src/linux/include/unistd.h /usr/include/unistd.h \x0d\x0a7. reset bochs \x0d\x0a8. 在/usr/root中生成test.c文件如下: \x0d\x0a#define __LIBRARY__ \x0d\x0a#include \x0d\x0a_syscall0(int,mytest) \x0d\x0aint main(){ \x0d\x0aint a; \x0d\x0aa = mytest(); \x0d\x0aprintf("%d", a); \x0d\x0areturn 0; \x0d\x0a} \x0d\x0a9.然后gcc test.c編譯之后運(yùn)行a.out,前面所有步驟都通過,但是每次調(diào)用都是返回-1,然后我查過errno為1(表示操作不允許),就不知道為什么了? \x0d\x0a系統(tǒng)知道的高手們能夠告知一下,不勝感激!這個問題困擾我很久了! \x0d\x0a\x0d\x0a二、新Linux內(nèi)核添加系統(tǒng)調(diào)用\x0d\x0a\x0d\x0a如何在Linux系統(tǒng)中添加新的系統(tǒng)調(diào)用\x0d\x0a系統(tǒng)調(diào)用是應(yīng)用程序和操作系統(tǒng)內(nèi)核之間的功能接口。其主要目的是使得用戶可以使用操作系統(tǒng)提供的有關(guān)設(shè)備管理、輸入/輸入系統(tǒng)、文件系統(tǒng)和進(jìn)程控制、通信以及存儲管理等方面的功能,而不必了解系統(tǒng)程序的內(nèi)部結(jié)構(gòu)和有關(guān)硬件細(xì)節(jié),從而起到減輕用戶負(fù)擔(dān)和保護(hù)系統(tǒng)以及提高資源利用率的作用。\x0d\x0a\x0d\x0aLinux操作系統(tǒng)作為自由軟件的代表,它優(yōu)良的性能使得它的應(yīng)用日益廣泛,不僅得到專業(yè)人士的肯定,而且商業(yè)化的應(yīng)用也是如火如荼。在Linux中,大部分的系統(tǒng)調(diào)用包含在Linux的libc庫中,通過標(biāo)準(zhǔn)的C函數(shù)調(diào)用方法可以調(diào)用這些系統(tǒng)調(diào)用。那么,對Linux的發(fā)燒友來說,如何在Linux中增加新的系統(tǒng)調(diào)用呢? \x0d\x0a1 Linux系統(tǒng)調(diào)用機(jī)制\x0d\x0a\x0d\x0a在Linux系統(tǒng)中,系統(tǒng)調(diào)用是作為一種異常類型實(shí)現(xiàn)的。它將執(zhí)行相應(yīng)的機(jī)器代碼指令來產(chǎn)生異常信號。產(chǎn)生中斷或異常的重要效果是系統(tǒng)自動將用戶態(tài)切換為核心態(tài)來對它進(jìn)行處理。這就是說,執(zhí)行系統(tǒng)調(diào)用異常指令時,自動地將系統(tǒng)切換為核心態(tài),并安排異常處理程序的執(zhí)行。Linux用來實(shí)現(xiàn)系統(tǒng)調(diào)用異常的實(shí)際指令是:\x0d\x0a\x0d\x0aInt $0x80\x0d\x0a\x0d\x0a這一指令使用中斷/異常向量號128(即16進(jìn)制的80)將控制權(quán)轉(zhuǎn)移給內(nèi)核。為達(dá)到在使用系統(tǒng)調(diào)用時不必用機(jī)器指令編程,在標(biāo)準(zhǔn)的C語言庫中為每一系統(tǒng)調(diào)用提供了一段短的子程序,完成機(jī)器代碼的編程工作。事實(shí)上,機(jī)器代碼段非常簡短。它所要做的工作只是將送給系統(tǒng)調(diào)用的參數(shù)加載到CPU寄存器中,接著執(zhí)行int $0x80指令。然后運(yùn)行系統(tǒng)調(diào)用,系統(tǒng)調(diào)用的返回值將送入CPU的一個寄存器中,標(biāo)準(zhǔn)的庫子程序取得這一返回值,并將它送回用戶程序。\x0d\x0a\x0d\x0a為使系統(tǒng)調(diào)用的執(zhí)行成為一項(xiàng)簡單的任務(wù),Linux提供了一組預(yù)處理宏指令。它們可以用在程序中。這些宏指令取一定的參數(shù),然后擴(kuò)展為調(diào)用指定的系統(tǒng)調(diào)用的函數(shù)。\x0d\x0a\x0d\x0a這些宏指令具有類似下面的名稱格式:\x0d\x0a\x0d\x0a_syscallN(parameters)\x0d\x0a\x0d\x0a其中N是系統(tǒng)調(diào)用所需的參數(shù)數(shù)目,而parameters則用一組參數(shù)代替。這些參數(shù)使宏指令完成適合于特定的系統(tǒng)調(diào)用的擴(kuò)展。例如,為了建立調(diào)用setuid()系統(tǒng)調(diào)用的函數(shù),應(yīng)該使用:\x0d\x0a\x0d\x0a_syscall1( int, setuid, uid_t, uid )\x0d\x0a\x0d\x0asyscallN( )宏指令的第1個參數(shù)int說明產(chǎn)生的函數(shù)的返回值的類型是整型,第2個參數(shù)setuid說明產(chǎn)生的函數(shù)的名稱。后面是系統(tǒng)調(diào)用所需要的每個參數(shù)。這一宏指令后面還有兩個參數(shù)uid_t和uid分別用來指定參數(shù)的類型和名稱。\x0d\x0a\x0d\x0a另外,用作系統(tǒng)調(diào)用的參數(shù)的數(shù)據(jù)類型有一個限制,它們的容量不能超過四個字節(jié)。這是因?yàn)閳?zhí)行int $0x80指令進(jìn)行系統(tǒng)調(diào)用時,所有的參數(shù)值都存在32位的CPU寄存器中。使用CPU寄存器傳遞參數(shù)帶來的另一個限制是可以傳送給系統(tǒng)調(diào)用的參數(shù)的數(shù)目。這個限制是最多可以傳遞5個參數(shù)。所以Linux一共定義了6個不同的_syscallN()宏指令,從_syscall0()、_syscall1()直到_syscall5()。\x0d\x0a\x0d\x0a一旦_syscallN()宏指令用特定系統(tǒng)調(diào)用的相應(yīng)參數(shù)進(jìn)行了擴(kuò)展,得到的結(jié)果是一個與系統(tǒng)調(diào)用同名的函數(shù),它可以在用戶程序中執(zhí)行這一系統(tǒng)調(diào)用。\x0d\x0a2 添加新的系統(tǒng)調(diào)用 \x0d\x0a如果用戶在Linux中添加新的系統(tǒng)調(diào)用,應(yīng)該遵循幾個步驟才能添加成功,下面幾個步驟詳細(xì)說明了添加系統(tǒng)調(diào)用的相關(guān)內(nèi)容。\x0d\x0a\x0d\x0a(1) 添加源代碼\x0d\x0a\x0d\x0a第一個任務(wù)是編寫加到內(nèi)核中的源程序,即將要加到一個內(nèi)核文件中去的一個函數(shù),該函數(shù)的名稱應(yīng)該是新的系統(tǒng)調(diào)用名稱前面加上sys_標(biāo)志。假設(shè)新加的系統(tǒng)調(diào)用為mycall(int number),在/usr/src/linux/kernel/sys.c文件中添加源代碼,如下所示:\x0d\x0aasmlinkage int sys_mycall(int number) \x0d\x0a{ \x0d\x0areturn number; \x0d\x0a}\x0d\x0a作為一個最簡單的例子,我們新加的系統(tǒng)調(diào)用僅僅返回一個整型值。\x0d\x0a\x0d\x0a(2) 連接新的系統(tǒng)調(diào)用\x0d\x0a\x0d\x0a添加新的系統(tǒng)調(diào)用后,下一個任務(wù)是使Linux內(nèi)核的其余部分知道該程序的存在。為了從已有的內(nèi)核程序中增加到新的函數(shù)的連接,需要編輯兩個文件。\x0d\x0a\x0d\x0a在我們所用的Linux內(nèi)核版本(RedHat 6.0,內(nèi)核為2.2.5-15)中,第一個要修改的文件是:\x0d\x0a\x0d\x0a/usr/src/linux/include/asm-i386/unistd.h\x0d\x0a\x0d\x0a該文件中包含了系統(tǒng)調(diào)用清單,用來給每個系統(tǒng)調(diào)用分配一個唯一的號碼。文件中每一行的格式如下:\x0d\x0a\x0d\x0a#define __NR_name NNN\x0d\x0a\x0d\x0a其中,name用系統(tǒng)調(diào)用名稱代替,而NNN則是該系統(tǒng)調(diào)用對應(yīng)的號碼。應(yīng)該將新的系統(tǒng)調(diào)用名稱加到清單的最后,并給它分配號碼序列中下一個可用的系統(tǒng)調(diào)用號。我們的系統(tǒng)調(diào)用如下:\x0d\x0a\x0d\x0a#define __NR_mycall 191\x0d\x0a\x0d\x0a系統(tǒng)調(diào)用號為191,之所以系統(tǒng)調(diào)用號是191,是因?yàn)長inux-2.2內(nèi)核自身的系統(tǒng)調(diào)用號碼已經(jīng)用到190。\x0d\x0a\x0d\x0a第二個要修改的文件是:\x0d\x0a\x0d\x0a/usr/src/linux/arch/i386/kernel/entry.S\x0d\x0a\x0d\x0a該文件中有類似如下的清單:\x0d\x0a.long SYMBOL_NAME()\x0d\x0a\x0d\x0a該清單用來對sys_call_table[]數(shù)組進(jìn)行初始化。該數(shù)組包含指向內(nèi)核中每個系統(tǒng)調(diào)用的指針。這樣就在數(shù)組中增加了新的內(nèi)核函數(shù)的指針。我們在清單最后添加一行:\x0d\x0a.long SYMBOL_NAME(sys_mycall)\x0d\x0a\x0d\x0a(3) 重建新的Linux內(nèi)核\x0d\x0a\x0d\x0a為使新的系統(tǒng)調(diào)用生效,需要重建Linux的內(nèi)核。這需要以超級用戶身份登錄。\x0d\x0a#pwd \x0d\x0a/usr/src/linux \x0d\x0a#\x0d\x0a\x0d\x0a超級用戶在當(dāng)前工作目錄(/usr/src/linux)下,才可以重建內(nèi)核。\x0d\x0a\x0d\x0a#make config \x0d\x0a#make dep \x0d\x0a#make clearn \x0d\x0a#make bzImage\x0d\x0a\x0d\x0a編譯完畢后,系統(tǒng)生成一可用于安裝的、壓縮的內(nèi)核映象文件:\x0d\x0a\x0d\x0a/usr/src/linux/arch/i386/boot/bzImage \x0d\x0a(4) 用新的內(nèi)核啟動系統(tǒng) \x0d\x0a要使用新的系統(tǒng)調(diào)用,需要用重建的新內(nèi)核重新引導(dǎo)系統(tǒng)。為此,需要修改/etc/lilo.conf文件,在我們的系統(tǒng)中,該文件內(nèi)容如下:\x0d\x0a\x0d\x0aboot=/dev/hda \x0d\x0amap=/boot/map \x0d\x0ainstall=/boot/boot.b \x0d\x0aprompt \x0d\x0atimeout=50 \x0d\x0a\x0d\x0aimage=/boot/vmlinuz-2.2.5-15 \x0d\x0alabel=linux \x0d\x0aroot=/dev/hdb1 \x0d\x0a  read-only \x0d\x0a\x0d\x0aother=/dev/hda1 \x0d\x0alabel=dos \x0d\x0atable=/dev/had\x0d\x0a\x0d\x0a首先編輯該文件,添加新的引導(dǎo)內(nèi)核:\x0d\x0aimage=/boot/bzImage-new \x0d\x0alabel=linux-new \x0d\x0aroot=/dev/hdb1 \x0d\x0aread-only\x0d\x0a\x0d\x0a添加完畢,該文件內(nèi)容如下所示:\x0d\x0aboot=/dev/hda \x0d\x0amap=/boot/map \x0d\x0ainstall=/boot/boot.b \x0d\x0aprompt \x0d\x0atimeout=50 \x0d\x0a\x0d\x0aimage=/boot/bzImage-new \x0d\x0alabel=linux-new \x0d\x0aroot=/dev/hdb1 \x0d\x0aread-only \x0d\x0a\x0d\x0aimage=/boot/vmlinuz-2.2.5-15 \x0d\x0alabel=linux \x0d\x0aroot=/dev/hdb1 \x0d\x0aread-only \x0d\x0a\x0d\x0aother=/dev/hda1 \x0d\x0alabel=dos \x0d\x0atable=/dev/hda\x0d\x0a\x0d\x0a這樣,新的內(nèi)核映象bzImage-new成為缺省的引導(dǎo)內(nèi)核。為了使用新的lilo.conf配置文件,還應(yīng)執(zhí)行下面的命令:\x0d\x0a#cp /usr/src/linux/arch/i386/boot/zImage /boot/bzImage-new\x0d\x0a\x0d\x0a其次配置lilo:\x0d\x0a\x0d\x0a# /sbin/lilo\x0d\x0a\x0d\x0a現(xiàn)在,當(dāng)重新引導(dǎo)系統(tǒng)時,在boot:提示符后面有三種選擇:linux-new 、linux、dos,新內(nèi)核成為缺省的引導(dǎo)內(nèi)核。\x0d\x0a至此,新的Linux內(nèi)核已經(jīng)建立,新添加的系統(tǒng)調(diào)用已成為操作系統(tǒng)的一部分,重新啟動Linux,用戶就可以在應(yīng)用程序中使用該系統(tǒng)調(diào)用了。\x0d\x0a\x0d\x0a(5)使用新的系統(tǒng)調(diào)用\x0d\x0a\x0d\x0a在應(yīng)用程序中使用新添加的系統(tǒng)調(diào)用mycall。同樣為實(shí)驗(yàn)?zāi)康模覀儗懥艘粋€簡單的例子xtdy.c。\x0d\x0a\x0d\x0a/* xtdy.c */ \x0d\x0a#include \x0d\x0a_syscall1(int,mycall,int,ret) \x0d\x0amain() \x0d\x0a{ \x0d\x0aprintf("%d \n",mycall(100)); \x0d\x0a}\x0d\x0a編譯該程序:\x0d\x0a# cc -o xtdy xtdy.c\x0d\x0a執(zhí)行:\x0d\x0a# xtdy\x0d\x0a結(jié)果:\x0d\x0a# 100\x0d\x0a注意,由于使用了系統(tǒng)調(diào)用,編譯和執(zhí)行程序時,用戶都應(yīng)該是超級用戶身份。

Linux的庫函數(shù)是如何調(diào)用內(nèi)核函數(shù)的

看系統(tǒng)調(diào)用,還有庫函數(shù),以前一直不明白,總是以為 系統(tǒng)調(diào)用跟庫函數(shù)是一樣的,但是今天才知道是不一樣的。

庫函數(shù)也就是我們通常所說的應(yīng)用編程接口API,它其實(shí)就是一個函數(shù)定義,比如常見read()、write()等函數(shù)說明了如何獲得一個給定的服務(wù),但是系統(tǒng)調(diào)用是通過軟中斷向內(nèi)核發(fā)出一個明確的請求,再者系統(tǒng)調(diào)用是在內(nèi)核完成的,而用戶態(tài)的函數(shù)是在函數(shù)庫完成的。

系統(tǒng)調(diào)用發(fā)生在內(nèi)核空間,因此如果在用戶空間的一般應(yīng)用程序中使用系統(tǒng)調(diào)用來進(jìn)行文件操作,會有用戶空間到內(nèi)核空間切換的開銷。事實(shí)上,即使在用戶空間使用庫函數(shù)來對文件進(jìn)行操作,因?yàn)槲募偸谴嬖谟诖鎯橘|(zhì)上,因此不管是讀寫操作,都是對硬件(存儲器)的操作,都必然會引起系統(tǒng)調(diào)用。也就是說,庫函數(shù)對文件的操作實(shí)際上是通過系統(tǒng)調(diào)用來實(shí)現(xiàn)的。例如C庫函數(shù)fwrite()就是通過write()系統(tǒng)調(diào)用來實(shí)現(xiàn)的。

這樣的話,使用庫函數(shù)也有系統(tǒng)調(diào)用的開銷,為什么不直接使用系統(tǒng)調(diào)用呢?這是因?yàn)?,讀寫文件通常是大量的數(shù)據(jù)(這種大量是相對于底層驅(qū)動的系統(tǒng)調(diào)用所實(shí)現(xiàn)的數(shù)據(jù)操作單位而言),這時,使用庫函數(shù)就可以大大減少系統(tǒng)調(diào)用的次數(shù)。這一結(jié)果又緣于緩沖區(qū)技術(shù)。在用戶空間和內(nèi)核空間,對文件操作都使用了緩沖區(qū),例如用fwrite寫文件,都是先將內(nèi)容寫到用戶空間緩沖區(qū),當(dāng)用戶空間緩沖區(qū)滿或者寫操作結(jié)束時,才將用戶緩沖區(qū)的內(nèi)容寫到內(nèi)核緩沖區(qū),同樣的道理,當(dāng)內(nèi)核緩沖區(qū)滿或?qū)懡Y(jié)束時才將內(nèi)核緩沖區(qū)內(nèi)容寫到文件對應(yīng)的硬件媒介。

系統(tǒng)調(diào)用與系統(tǒng)命令:系統(tǒng)命令相對API更高一層,每個系統(tǒng)命令都是一個可執(zhí)行程序,比如常用的系統(tǒng)命令ls、hostname等,比如strace ls就會發(fā)現(xiàn)他們調(diào)用了諸如open(),brk(),fstat(),ioctl()等系統(tǒng)調(diào)用。

系統(tǒng)調(diào)用是用戶進(jìn)程進(jìn)入內(nèi)核的接口層,它本身并非內(nèi)核函數(shù),但他是由內(nèi)核函數(shù)實(shí)現(xiàn)的,進(jìn)入系統(tǒng)內(nèi)核后,不同的系統(tǒng)調(diào)用會找到各自對應(yīng)的內(nèi)核函數(shù),這寫內(nèi)核函數(shù)被稱為系統(tǒng)調(diào)用的“服務(wù)例程”。也可以說系統(tǒng)調(diào)用是服務(wù)例程的封裝例程。

linux內(nèi)核操作的主要命令及作用

cp命令

該命令的功能是將給出的文件或目錄拷貝到另一文件或目錄中,同MSDOS下的copy命令一樣,功能十分強(qiáng)大

語法: cp [選項(xiàng)] 源文件或目錄 目標(biāo)文件或目錄

說明:該命令把指定的源文件復(fù)制到目標(biāo)文件或把多個源文件復(fù)制到目標(biāo)目錄中

-r 若給出的源文件是一目錄文件,此時cp將遞歸復(fù)制該目錄下所有的子目錄和文件

mv命令

用戶可以使用mv命令來為文件或目錄改名或?qū)⑽募梢粋€目錄移入另一個目錄中。該命令如同MSDOS下的ren和move的組合

語法:mv [選項(xiàng)] 源文件或目錄 目標(biāo)文件或目錄

rm命令

該命令的功能為刪除一個目錄中的一個或多個文件或目錄,它也可以將某個目錄及其下的所有文件及子目錄均刪除

rm命令的一般形式為:

rm [選項(xiàng)] 文件…

如果沒有使用-r選項(xiàng),則rm不會刪除目錄

該命令的各選項(xiàng)含義如下:

-f 忽略不存在的文件,從不給出提示

-r 指示rm將參數(shù)中列出的全部目錄和子目錄均遞歸地刪除

Vi命令

插入模式

按「i」切換進(jìn)入插入模式「insert mode」,按“i”進(jìn)入插入模式后是從光標(biāo)當(dāng)前位置開始輸入文件

按「a」進(jìn)入插入模式后,是從目前光標(biāo)所在位置的下一個位置開始輸入文字

按「o」進(jìn)入插入模式后,是插入新的一行,從行首開始輸入文字

從插入模式切換為命令行模式

按「ESC」鍵

查找字符

「/關(guān)鍵字」:先按「/」鍵,再輸入您想尋找的字符,如果第一次找的關(guān)鍵字不是您想要的,可以一直按「n」會往后尋找到您要的關(guān)鍵字為止

「?關(guān)鍵字」:先按「?」鍵,再輸入您想尋找的字符,如果第一次找的關(guān)鍵字不是您想要的,可以一直按「n」會往前尋找到您要的關(guān)鍵字為止

離開vi

「q」:按「q」就是退出,如果無法離開vi,可以在「q」后跟一個「!」強(qiáng)制離開vi

「qw」:一般建議離開時,搭配「w」一起使用,這樣在退出的時候還可以保存文件

mkdir命令

功能:創(chuàng)建一個目錄(類似MSDOS下的md命令)

語法:mkdir [選項(xiàng)] dir-name

說明:該命令創(chuàng)建由dir-name命名的目錄。要求創(chuàng)建目錄的用戶在當(dāng)前目錄中(dir-name的父目錄中)具有寫權(quán)限,并且dirname不能是當(dāng)前目錄中已有的目錄或 文件名稱。

命令中各選項(xiàng)的含義為:

-p 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在, 加上此選項(xiàng)后, 系統(tǒng)將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄

cd 命令

功能:改變工作目錄

語法:cd [directory]

說明:該命令將當(dāng)前目錄改變至directory所指定的目錄。若沒有指定directory, 則回到用戶的主目錄。為了改變到指定目錄,用戶必須擁有對指定目錄的執(zhí)行和讀權(quán)限

ls 命令

功能: 列出目錄的內(nèi)容,該命令類似于DOS下的dir命令

語法:ls [選項(xiàng)] [目錄或是文件]

對于每個目錄,該命令將列出其中的所有子目錄與文件。對于每個文件,ls將輸出 其文件名以及所要求的其他信息。默認(rèn)情況下,輸出條目按字母順序排序。當(dāng)未給出目錄名或是文件名時,就顯示當(dāng)前目錄的信息。

命令中各選項(xiàng)的含義如下:

-a 顯示指定目錄下所有子目錄與文件,包括隱藏文件

-c 按文件的修改時間排序

-t 顯示時按修改時間(最近優(yōu)先)而不是按名字排序。若文件修改時間相同,則 按字典順序。修改時間取決于是否使用了c或u選頂。缺省的時間標(biāo)記是最后一次修改時間

tar命令

tar可以為文件和目錄創(chuàng)建檔案。利用tar,用戶可以為某一特定文件創(chuàng)建檔案(備份文件),也可以在檔案中改變文件,或者向檔案中加入新的文件。tar最初被用來在磁帶上創(chuàng)建檔案,現(xiàn)在,用戶可以在任何設(shè)備上創(chuàng)建檔案,如軟盤。利用tar命令,可以把一大堆的文件和目錄全部打包成一個文件,這對于備份文件或?qū)讉€文件組合成為一個文件以便于網(wǎng)絡(luò)傳輸是非常有用的。Linux上的tar是GNU版本的。

語法:tar [主選項(xiàng)+輔選項(xiàng)] 文件或者目錄

使用該命令時,主選項(xiàng)是必須要有的,它告訴tar要做什么事情,輔選項(xiàng)是輔助使用的,可以選用。

主選項(xiàng):

-c 創(chuàng)建新的檔案文件。如果用戶想備份一個目錄或是一些文件,就要選擇這個選項(xiàng)。

-x 從檔案文件中釋放文件。

-f 使用檔案文件或設(shè)備,這個選項(xiàng)通常是必選的。

-v 詳細(xì)報告tar處理的文件信息。如無此選項(xiàng),tar不報告文件信息。

-z 用gzip來壓縮/解壓縮文件,加上該選項(xiàng)后可以將檔案文件進(jìn)行壓縮,但還原時也一定要使用該選項(xiàng)進(jìn)行解壓縮

文件或目錄的訪問權(quán)限

Linux系統(tǒng)中的每個文件和目錄都有訪問許可權(quán)限,用它來確定誰可以通過何種方式對文件和目錄進(jìn)行訪問和操作

文件或目錄的訪問權(quán)限分為只讀,只寫和可執(zhí)行三種。以文件為例,只讀權(quán)限表示只允許讀其內(nèi)容,而禁止對其做任何的更改操作。可執(zhí)行權(quán)限表示允許將該文件作為一個程序執(zhí)行。文件被創(chuàng)建時,文件所有者自動擁有對該文件的讀、寫和可執(zhí)行權(quán)限,以便于對文件的閱讀和修改。用戶也可根據(jù)需要把訪問權(quán)限設(shè)置為需要的任何組合

有三種不同類型的用戶可對文件或目錄進(jìn)行訪問:文件所有者,同組用戶、其他用戶。所有者一般是文件的創(chuàng)建者。所有者可以允許同組用戶有權(quán)訪問文件,還可以將文件的訪問權(quán)限賦予系統(tǒng)中的其他用戶。在這種情況下,系統(tǒng)中每一位用戶都能訪問該用戶擁有的文件或目錄

每一文件或目錄的訪問權(quán)限都有三組,每組用三位表示,分別為文件屬主的讀、寫和執(zhí)行權(quán)限;與屬主同組的用戶的讀、寫和執(zhí)行權(quán)限;系統(tǒng)中其他用戶的讀、寫和執(zhí)行權(quán)限。當(dāng)用ls -l命令顯示文件或目錄的詳細(xì)信息時,最左邊的一列為文件的訪問權(quán)限。

例如:

$ ls -l sobsrc. tgz

-rw-r–r– 1 root root 483997 Ju1 l5 17:3l sobsrc. tgz

橫線代表空許可。r代表只讀,w代表寫,x代表可執(zhí)行。注意這里共有10個位置。第一個字符指定了文件類型。在通常意義上,一個目錄也是一個文件。如果第一個字符是橫線,表示是一個非目錄的文件。如果是d,表示是一個目錄

例如:

- rw- r– r–

普通文件 文件主 組用戶 其他用戶

是文件sobsrc.tgz 的訪問權(quán)限,表示sobsrc.tgz是一個普通文件;sobsrc.tgz的屬主有讀寫權(quán)限;與sobsrc.tgz屬主同組的用戶只有讀權(quán)限;其他用戶也只有讀權(quán)限。

chmod 命令

chmod命令是非常重要的,用于改變文件或目錄的訪問權(quán)限。用戶用它控制文件或目錄的訪問權(quán)限。

該命令有兩種用法。一種是包含字母和操作符表達(dá)式的文字設(shè)定法;另一種是包含數(shù)字的數(shù)字設(shè)定法。

文字設(shè)定法

chmod [who] [+ | - | =] [mode] 文件名

命令中各選項(xiàng)的含義為:

操作對象who可是下述字母中的任一個或者它們的組合:

u 表示“用戶(user)”,即文件或目錄的所有者。

g 表示“同組(group)用戶”,即與文件屬主有相同組ID的所有用戶。

o 表示“其他(others)用戶”

a 表示“所有(all)用戶”。它是系統(tǒng)默認(rèn)值。

操作符號可以是:

+ 添加某個權(quán)限。

- 取消某個權(quán)限。

= 賦予給定權(quán)限并取消其他所有權(quán)限(如果有的話)

設(shè)置mode所表示的權(quán)限可用下述字母的任意組合:

r 可讀

w 可寫

x 可執(zhí)行

X 只有目標(biāo)文件對某些用戶是可執(zhí)行的或該目標(biāo)文件是目錄時才追加x 屬性。

s 在文件執(zhí)行時把進(jìn)程的屬主或組ID置為該文件的文件屬主。方式“u+s”設(shè)置文件的用戶ID位,“g+s”設(shè)置組ID位。

t 保存程序的文本到交換設(shè)備上。

u 與文件屬主擁有一樣的權(quán)限。

g 與和文件屬主同組的用戶擁有一樣的權(quán)限。

o 與其他用戶擁有一樣的權(quán)限。

文件名:以空格分開的要改變權(quán)限的文件列表,支持通配符

在一個命令行中可給出多個權(quán)限方式,其間用逗號隔開。

例如:chmod g+r,o+r example

使同組和其他用戶對文件example 有讀權(quán)限

chgrp命令

功能:改變文件或目錄所屬的組。

語法:chgrp [選項(xiàng)] group filename

該命令改變指定指定文件所屬的用戶組。其中g(shù)roup可以是用戶組ID,也可以是/etc/group文件中用戶組的組名。文件名是以空格分開的要改變屬組的文件列表,支持通配符。如果用戶不是該文件的屬主或超級用戶,則不能改變該文件的組。

該命令的各選項(xiàng)含義為:

-R 遞歸式地改變指定目錄及其下的所有子目錄和文件的屬組

chown 命令

功能:更改某個文件或目錄的屬主和屬組。這個命令也很常用。例如root用戶把自己的一個文件拷貝給用戶xu,為了讓用戶xu能夠存取這個文件,root用戶應(yīng)該把這個文件的屬主設(shè)為xu,否則,用戶xu無法存取這個文件。

語法:chown [選項(xiàng)] 用戶或組 文件

說明:chown將指定文件的擁有者改為指定的用戶或組。用戶可以是用戶名或用戶ID。組可以是組名或組ID。文件是以空格分開的要改變權(quán)限的文件列表,支持通配符。

該命令的各選項(xiàng)含義如下:

-R 遞歸式地改變指定目錄及其下的所有子目錄和文件的擁有者

-v 顯示chown命令所做的工作

passwd命令

出于系統(tǒng)安全考慮,Linux系統(tǒng)中的每一個用戶除了有其用戶名外,還有其對應(yīng)的用戶口令。因此使用useradd命令增加時,還需使用passwd命令為每一位新增加的用戶設(shè)置口令;用戶以后還可以隨時用passwd命令改變自己的口令

該命令的一般格式為: passwd [用戶名] 其中用戶名為需要修改口令的用戶名。只有超級用戶可以使用“passwd 用戶名”修改其他用戶的口令,普通用戶只能用不帶參數(shù)的passwd命令修改自己的口令

該命令的使用方法如下:

輸入passwd Enter;

在new password:提示下輸入新的口令(在屏幕上看不到這個口令):

系統(tǒng)提示再次輸入這個新口令

su命令

它可以讓一個普通用戶擁有超級用戶或其他用戶的權(quán)限,也可以讓超級用戶以普通用戶的身份做一些事情。普通用戶使用這個命令時必須有超級用戶或其他用戶的口令。如要離開當(dāng)前用戶的身份,可以打exit

該命令的一般形式為: su [選項(xiàng)] [使用者帳號]

說明:若沒有指定使用者帳號,則系統(tǒng)預(yù)設(shè)值為超級用戶root。 該命令中各選項(xiàng)的含義分別為:

-c 執(zhí)行一個命令后就結(jié)束

- 加了這個減號的目的是使環(huán)境變量和欲轉(zhuǎn)換的用戶相同

-m 保留環(huán)境變量不變

shutdown命令

shutdown 命令可以安全地關(guān)閉或重啟Linux系統(tǒng),它在系統(tǒng)關(guān)閉之前給系統(tǒng)上的所有登錄用戶提示一條警告信息。該命令還允許用戶指定一個時間參數(shù),可以是一個精確的時間,也可以是從現(xiàn)在開始的一個時間段。精確時間的格式是hh:mm,表示小時和分鐘;時間段由“+”和分鐘數(shù)表示。系統(tǒng)執(zhí)行該命令后,會自動進(jìn)行數(shù)據(jù)同步的工作

該命令的一般格式為: shutdown [選項(xiàng)] [時間] [警告信息] 命令中各選項(xiàng)的含義為:

-k 并不真正關(guān)機(jī),而只是發(fā)出警告信息給所有用戶。

-r 關(guān)機(jī)后立即重新啟動。

-h 關(guān)機(jī)后不重新啟動。

-f 快速關(guān)機(jī),重啟動時跳過fsck。

-n 快速關(guān)機(jī),不經(jīng)過init程序。

-c 取消一個已經(jīng)運(yùn)行的shutdown

需要特別說明的是,該命令只能由超級用戶使用

free命令

free命令的功能是查看當(dāng)前系統(tǒng)內(nèi)存的使用情況,它顯示系統(tǒng)中剩余及已用的物理內(nèi)存和交換內(nèi)存,以及共享內(nèi)存和被核心使用的緩沖區(qū)。

該命令的一般格式為: free [-b | -k | -m] 命令中各選項(xiàng)的含義如下:

-b 以字節(jié)為單位顯示。

-k 以K字節(jié)為單位顯示。

-m 以兆字節(jié)為單位顯示

df命令

功能:檢查文件系統(tǒng)的磁盤空間占用情況。可以利用該命令來獲取硬盤被占用了多少空間,目前還剩下多少空間等信息

語法:df [選項(xiàng)]

說明:df命令可顯示所有文件系統(tǒng)對i節(jié)點(diǎn)和磁盤塊的使用情況。

該命令各個選項(xiàng)的含義如下:

-a 顯示所有文件系統(tǒng)的磁盤使用情況,包括0塊(block)的文件系統(tǒng),如/proc文件系統(tǒng)。

-k 以k字節(jié)為單位顯示。

-i 顯示i節(jié)點(diǎn)信息,而不是磁盤塊。

-t 顯示各指定類型的文件系統(tǒng)的磁盤空間使用情況。

du命令

du的英文原義為“disk usage”,含義為顯示磁盤空間的使用情況。

功能:統(tǒng)計(jì)目錄(或文件)所占磁盤空間的大小。

語法:du [選項(xiàng)] [Names…]

說明:該命令逐級進(jìn)入指定目錄的每一個子目錄并顯示該目錄占用文件系統(tǒng)數(shù)據(jù)塊(1024字節(jié))的情況。若沒有給出Names,則對當(dāng)前目錄進(jìn)行統(tǒng)計(jì)。

該命令的各個選項(xiàng)含義如下:

-s 對每個Names參數(shù)只給出占用的數(shù)據(jù)塊總數(shù)。

date命令

date命令的功能是顯示和設(shè)置系統(tǒng)日期和時間。

該命令的一般格式為: date [選項(xiàng)] 顯示時間格式(以+開頭,后面接格式)

date 設(shè)置時間格式

命令中各選項(xiàng)的含義分別為:

-s datestr, –set datestr 設(shè)置datestr 描述的日期

注意:只有超級用戶才有權(quán)限使用date命令設(shè)置時間,一般用戶只能使用date命令顯示時間。

ifconfig

作用

ifconfig用于查看和更改網(wǎng)絡(luò)接口的地址和參數(shù),包括IP地址、網(wǎng)絡(luò)掩碼、廣播地址,使用權(quán)限是超級用戶

格式

ifconfig -interface [options] address

主要參數(shù)

-interface:指定的網(wǎng)絡(luò)接口名,如eth0和eth1

up:激活指定的網(wǎng)絡(luò)接口卡

down:關(guān)閉指定的網(wǎng)絡(luò)接口

address:設(shè)置指定接口設(shè)備的IP地址

netmask address:設(shè)置接口的子網(wǎng)掩碼

應(yīng)用說明

ifconfig是用來設(shè)置和配置網(wǎng)卡的命令行工具。為了手工配置網(wǎng)絡(luò),這是一個必須掌握的命令。使用該命令的好處是無須重新啟動機(jī)器。

要賦給eth0接口IP地址207.164.186.2,并且馬上激活它,使用下面命令:

#fconfig eth0 210.34.6.89 netmask 255.255.255.128

該命令的作用是設(shè)置網(wǎng)卡eth0的IP地址、網(wǎng)絡(luò)掩碼和網(wǎng)絡(luò)的本地廣播地址。若運(yùn)行不帶任何參數(shù)的ifconfig命令,這個命令將顯示機(jī)器所有激活接口的信息。帶有“-a”參數(shù)的命令則顯示所有接口的信息,包括沒有激活的接口。注意,用ifconfig命令配置的網(wǎng)絡(luò)設(shè)備參數(shù),機(jī)器重新啟動以后將會丟失

如果要暫停某個網(wǎng)絡(luò)接口的工作,可以使用down參數(shù):

#ifconfig eth0 down

netstat

作用

檢查整個Linux網(wǎng)絡(luò)狀態(tài)

格式

netstat [-acCeFghilMnNoprstuvVwx][-A][–ip]

主要參數(shù)

-a–all:顯示所有連線中的Socket

-l–listening:顯示監(jiān)控中的服務(wù)器的Socket

-n–numeric:直接使用IP地址,而不通過域名服務(wù)器

-p–programs:顯示正在使用Socket的程序識別碼和程序名稱

-t–tcp:顯示TCP傳輸協(xié)議的連線狀況

-u–udp:顯示UDP傳輸協(xié)議的連線狀況

-apn 查看開啟的端口

應(yīng)用實(shí)例

netstat主要用于Linux察看自身的網(wǎng)絡(luò)狀況,如開啟的端口、在為哪些用戶服務(wù),以及服務(wù)的狀態(tài)等。此外,它還顯示系統(tǒng)路由表、網(wǎng)絡(luò)接口狀態(tài)等??梢哉f,它是一個綜合性的網(wǎng)絡(luò)狀態(tài)的察看工具。在默認(rèn)情況下,netstat只顯示已建立連接的端口。如果要顯示處于監(jiān)聽狀態(tài)的所有端口,使用-a參數(shù)即可:

#netstat -a

lsof

作用

顯示系統(tǒng)打開的文件

格式

lsof 〔options〕 filename

主要參數(shù)

lsof -a: 表示兩個參數(shù)都必須滿足時才顯示結(jié)果

lsof -c string: 顯示COMMAND列中包含指定字符的進(jìn)程所有打開的文件

lsof -u username: 顯示所屬user進(jìn)程打開的文件

lsof -g gid: 顯示歸屬gid的進(jìn)程情況

lsof +d /DIR/: 顯示目錄下被進(jìn)程打開的文件

lsof +D /DIR/: 同上,但是會搜索目錄下的所有目錄,時間相對較長

lsof -d FD: 顯示指定文件描述符的進(jìn)程

lsof -n: 不將IP轉(zhuǎn)換為hostname,缺省是不加上-n參數(shù)

lsof -i: 用以顯示符合條件的進(jìn)程情況

lsof -i:port: 查看端口運(yùn)行的程序。

例如:查看22端口所運(yùn)行的程序 #lsof -i:22

telnet

作用

telnet表示開啟終端機(jī)階段作業(yè),并登入遠(yuǎn)端主機(jī)。telnet是一個Linux命令,同時也是一個協(xié)議(遠(yuǎn)程登陸協(xié)議)

格式

telnet [-8acdEfFKLrx][-b][-e][-k][-l][-n][-S][-X][主機(jī)名稱IP地址通信端口]

ftp

作用

ftp命令進(jìn)行遠(yuǎn)程文件傳輸。FTP是ARPANet的標(biāo)準(zhǔn)文件傳輸協(xié)議,該網(wǎng)絡(luò)就是現(xiàn)今Internet的前身,所以ftp既是協(xié)議又是一個命令。

格式

ftp [-dignv][主機(jī)名稱IP地址]

應(yīng)用說明

ftp命令是標(biāo)準(zhǔn)的文件傳輸協(xié)議的用戶接口,是在TCP/IP網(wǎng)絡(luò)計(jì)算機(jī)之間傳輸文件簡單有效的方法,它允許用戶傳輸ASCⅡ文件和二進(jìn)制文件。為了使用ftp 來傳輸文件,用戶必須知道遠(yuǎn)程計(jì)算機(jī)上的合法用戶名和口令。這個用戶名/口令的組合用來確認(rèn)ftp會話,并用來確定用戶對要傳輸?shù)奈募M(jìn)行什么樣的訪問。另外,用戶需要知道對其進(jìn)行ftp會話的計(jì)算機(jī)名字的IP地址

用戶可以通過使用ftp客戶程序,連接到另一臺計(jì)算機(jī)上;可以在目錄中上下移動、列出目錄內(nèi)容;可以把文件從遠(yuǎn)程計(jì)算機(jī)機(jī)拷貝到本地機(jī)上;還可以把文件從本地機(jī)傳輸?shù)竭h(yuǎn)程系統(tǒng)中。ftp內(nèi)部命令有72個,下面列出主要幾個內(nèi)部命令:

ls:列出遠(yuǎn)程機(jī)的當(dāng)前目錄

cd:在遠(yuǎn)程機(jī)上改變工作目錄

lcd:在本地機(jī)上改變工作目錄

close:終止當(dāng)前的ftp會話

get(mget):從遠(yuǎn)程機(jī)傳送指定文件到本地機(jī)

put(mput):從本地機(jī)傳送指定文件到遠(yuǎn)程機(jī)

quit:斷開與遠(yuǎn)程機(jī)的連接,并退出ftp

route

作用

route表示手工產(chǎn)生、修改和查看路由表

格式

#route [-add][-net|-host] targetaddress [-netmask Nm][dev]If]

#route [-delete][-net|-host] targetaddress [gw Gw] [-netmask Nm] [dev]If]

主要參數(shù)

-add:增加路由

-delete:刪除路由

-net:路由到達(dá)的是一個網(wǎng)絡(luò),而不是一臺主機(jī)

-host:路由到達(dá)的是一臺主機(jī)

-netmask Nm:指定路由的子網(wǎng)掩碼

gw:指定路由的網(wǎng)關(guān)

[dev]If:強(qiáng)迫路由鏈指定接口。

應(yīng)用實(shí)例

route命令是用來查看和設(shè)置Linux系統(tǒng)的路由信息,以實(shí)現(xiàn)與其它網(wǎng)絡(luò)的通信。要實(shí)現(xiàn)兩個不同的子網(wǎng)之間的通信,需要一臺連接兩個網(wǎng)絡(luò)的路由器,或者同時位于兩個網(wǎng)絡(luò)的網(wǎng)關(guān)來實(shí)現(xiàn)

在Linux系統(tǒng)中,設(shè)置路由通常是為了解決以下問題:該Linux系統(tǒng)在一個局域網(wǎng)中,局域網(wǎng)中有一個網(wǎng)關(guān),能夠讓機(jī)器訪問Internet,那么就需要將這臺機(jī)器的IP地址設(shè)置為Linux機(jī)器的默認(rèn)路由。使用下面命令可以增加一個默認(rèn)路由:

route add 0.0.0.0 192.168.1.1

top

作用

top命令用來顯示執(zhí)行中的程序進(jìn)程,使用權(quán)限是所有用戶。

格式

top [-] [d delay] [q] [c] [S] [s] [i] [n]

主要參數(shù)

d:指定更新的間隔,以秒計(jì)算

q:沒有任何延遲的更新。如果使用者有超級用戶,則top命令將會以最高的優(yōu)先序執(zhí)行

c:顯示進(jìn)程完整的路徑與名稱

i:不顯示任何閑置(Idle)或無用(Zombie)的行程

n:顯示更新的次數(shù),完成后將會退出top。

說明

top命令是Linux系統(tǒng)管理的一個主要命令,通過它可以獲得許多信息。這里我們結(jié)合圖1來說明它給出的信息

下面列出了詳細(xì)解釋

PID(Process ID):進(jìn)程標(biāo)示號

USER:進(jìn)程所有者的用戶名

PR:進(jìn)程的優(yōu)先級別

NI:進(jìn)程的優(yōu)先級別數(shù)值

VIRT:進(jìn)程占用的虛擬內(nèi)存值

RES:進(jìn)程占用的物理內(nèi)存值

SHR:進(jìn)程使用的共享內(nèi)存值

S:進(jìn)程的狀態(tài),其中S表示休眠,R表示正在運(yùn)行,Z表示僵死狀態(tài),N表示該進(jìn)程優(yōu)先值是負(fù)數(shù)

%CPU:該進(jìn)程占用的CPU使用率

%MEM:該進(jìn)程占用的物理內(nèi)存和總內(nèi)存的百分比

TIME+:該進(jìn)程啟動后占用的總的CPU時間

Command:進(jìn)程啟動的啟動命令名稱,如果這一行顯示不下,進(jìn)程會有一個完整的命令行。

網(wǎng)頁名稱:linux調(diào)用內(nèi)核命令,linux配置內(nèi)核命令
路徑分享:http://muchs.cn/article24/phggje.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站收錄、外貿(mào)網(wǎng)站建設(shè)、定制開發(fā)、Google、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)