Linux常用的命令可以分為以下幾類:安裝和登錄命令、文件處理命令、系統(tǒng)管理相關(guān)命令、網(wǎng)絡(luò)操作命令、系統(tǒng)安全相關(guān)命令、其它命令。

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供景泰網(wǎng)站建設(shè)、景泰做網(wǎng)站、景泰網(wǎng)站設(shè)計(jì)、景泰網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、景泰企業(yè)網(wǎng)站模板建站服務(wù),10余年景泰做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
安裝和登錄命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last。
文件處理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln。
系統(tǒng)管理相關(guān)命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab。
網(wǎng)絡(luò)操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup。
系統(tǒng)安全相關(guān)命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who。
其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。
Linux簡(jiǎn)介
Linux,全稱GNU/Linux,是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個(gè)基于POSIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。伴隨著互聯(lián)網(wǎng)的發(fā)展,Linux得到了來(lái)自全世界軟件愛(ài)好者、組織、公司的支持。
它除了在服務(wù)器方面保持著強(qiáng)勁的發(fā)展勢(shì)頭以外,在個(gè)人電腦、嵌入式系統(tǒng)上都有著長(zhǎng)足的進(jìn)步。使用者不僅可以直觀地獲取該操作系統(tǒng)的實(shí)現(xiàn)機(jī)制,而且可以根據(jù)自身的需要來(lái)修改完善Linux,使其最大化地適應(yīng)用戶的需要。
Linux不僅系統(tǒng)性能穩(wěn)定,而且是開(kāi)源軟件。其核心防火墻組件性能高效、配置簡(jiǎn)單,保證了系統(tǒng)的安全。在很多企業(yè)網(wǎng)絡(luò)中,為了追求速度和安全,Linux不僅僅是被網(wǎng)絡(luò)運(yùn)維人員當(dāng)作服務(wù)器使用,甚至當(dāng)作網(wǎng)絡(luò)防火墻,這是Linux的一大亮點(diǎn)。
安裝軟件---這個(gè)操作在WINDOWS的世界里很簡(jiǎn)單,下載軟件雙擊exe文件即可,還有自動(dòng)運(yùn)行方式的,復(fù)雜點(diǎn)的執(zhí)行bat之類的可執(zhí)行程序即可。但Linux不然,因Linux版本過(guò)多,導(dǎo)致軟件的安裝方法五花八門。本文只是將Linux的軟件安裝方式進(jìn)行匯總和整理,沒(méi)有過(guò)多的技術(shù)難度,僅供參考。
Linux下主要有兩種方式,主要分在線安裝和線下安裝。(以下介紹的方式基本涵蓋所有Linux系統(tǒng)的軟件安裝方式)
一、在線安裝
1、軟件管理中心安裝。(ubuntu)1)更新源sudo apt-get update2)打開(kāi)軟件中心,搜索你要安裝的軟件,雙擊安裝即可。例如安裝apache,如下圖
2、命令行安裝方式
1)更新,命令:apt-get update
2)查找你要安裝的軟件,apt-cache search “軟件名”
3)apt-get install 軟件名
以上在線的兩種方式都提到了apt-get 方式,那么它的工作原理簡(jiǎn)單說(shuō)明一下,apt-get相關(guān)的有兩個(gè)重要文件:1、是/etc/sources.list,2、是/var/lib/apt/lists/目錄.
當(dāng)我們執(zhí)行apt-get update程序分析sources.list看這個(gè)文件里是否有對(duì)應(yīng)的Packages/Sources/Release列表文件,如果有更新則下載之,存入/var/lib/apt/lists/目錄(其實(shí)就是保持與當(dāng)前系統(tǒng)版本軟件源表最新);apt-get install 安裝相應(yīng)的包 ,下載并安裝。
這種方式的好處在于:如果你想要加載的應(yīng)用需要依賴另一個(gè)應(yīng)用程序才能正常工作,apt-get會(huì)幫你找到并加載所需的程序庫(kù)或應(yīng)用代碼,這種方式是比較常用的的。比如我們執(zhí)行apt-get install mysql-server,可以看到相關(guān)的依賴包(如圖)
二、線下安裝
之所以叫線下的安裝方式,也就是說(shuō)你要把軟件下載到本地去安裝。一般我們下載的文件后綴名都是zip、tar.gz等壓縮包,解壓后會(huì)看到rpm、bin、deb、run之類擴(kuò)展名文件。很多軟件都會(huì)提供不同LINUX版本的安裝格式,你可以根據(jù)自己的系統(tǒng)下載不同擴(kuò)展名的軟件。
1、rpm安裝包:這時(shí)一款老牌的安裝格式,是紅帽創(chuàng)建的安裝格式,現(xiàn)在已成為一種標(biāo)準(zhǔn),常用在opensuse/turbo/redhat版本),安裝方法rpm -ivh 軟件名.rpm (如果只是安裝一個(gè)i參數(shù)就夠了,如果還要看安裝進(jìn)度和軟件信息就加個(gè)vh)
2、deb安裝包:DEB是Debian軟件包格式的文件擴(kuò)展名,常用在centos/ubuntu,在蘋果系統(tǒng)里也常見(jiàn)此安裝方式。安裝方法:dpkg -i 軟件名.deb
3、run安裝包:以QT(一種編程工具)的安裝文件為例,
1)授權(quán): chmod x qt-unified-linux-x64-2.0.2-2-online.run
2)執(zhí)行:./qt-unified-linux-x64-2.0.2-2-online.run即可安裝。
4、bin安裝包:bin包是一個(gè)自解壓格式的安裝包,要想執(zhí)行它,需要先賦予它可執(zhí)行的權(quán)限。
(以安裝jdk為例)# chmod x jdk-6u21-linux-i586.bin# ./jdk-6u21-linux-i586.bin
5、編譯后安裝方式:
舉例安裝nagios插件(nagios是一種開(kāi)源的監(jiān)控軟件,需要多種插件支持監(jiān)控模塊)
1)cd /tmp/nagios-plugins-* //先進(jìn)入目錄
2)./configure --with-nagios-user=nagios --with-nagios-group=nagios // 配置,即安裝的用戶安裝的路徑都可在此設(shè)置,這一步一般用來(lái)生成 Makefile,為下一步的編譯做準(zhǔn)備
3)make //編譯過(guò)程如果 在 make 過(guò)程中出現(xiàn) error ,你就要記下錯(cuò)誤代碼,缺少什么包就按照什么包。
4) make install //如果make無(wú)問(wèn)題就可以直接安裝了。
這種安裝方法的好處是你可以自定義安裝路徑、安裝賬號(hào)等參數(shù),常見(jiàn)開(kāi)源平臺(tái)下載的源碼安裝方式。
6、其它,還有一些軟件解壓后生成的文件夾內(nèi)包含很多文件,一般文件夾內(nèi)有install.sh、setup.py等安裝文件方式,此種方式類似windows的exe安裝方式,你需要先授權(quán)該文件的可執(zhí)行權(quán)限,在執(zhí)行安裝。以上基本上囊括了所有的Linux環(huán)境下的軟件安裝方式,供各位參考。
具體步驟如下:
1、首先我們?cè)诿钚羞\(yùn)行程序需要借助jdk的環(huán)境依賴,打開(kāi)jdk包。
2、接下來(lái)我們需要打開(kāi)運(yùn)行窗口,然后在運(yùn)行窗口中輸入cmd命令,如下圖所示
3、在CMD命令行界面中我們輸入cd命令進(jìn)入到程序文件所在的目錄,如下圖所示
4、接下來(lái)執(zhí)行命令對(duì)程序文件進(jìn)行編譯,如下圖所示
5、編譯完畢以后我們會(huì)在文件夾下面看到一個(gè)class文件,這個(gè)就是虛擬機(jī)編譯完產(chǎn)生的文件,如下圖所示
6、完成上述步驟后,即可在linux命令行中執(zhí)行應(yīng)用程序。
Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盤操作、文件存取、目
錄操作、進(jìn)程管理、文件權(quán)限設(shè)定等。所以,在Linux系統(tǒng)上工作離不開(kāi)使用系統(tǒng)提供的命
令。要想真正理解Linux系統(tǒng),就必須從Linux命令學(xué)起,通過(guò)基礎(chǔ)的命令學(xué)習(xí)可以進(jìn)一步理
解Linux系統(tǒng)。
不同Linux發(fā)行版的命令數(shù)量不一樣,但Linux發(fā)行版本最少的命令也有200多個(gè)。這里筆者
把比較重要和使用頻率最多的命令,按照它們?cè)谙到y(tǒng)中的作用分成下面六個(gè)部分一一介紹。
◆ 安裝和登錄命令:login、shutdown、halt、reboot、install、mount、umount、chsh、
exit、last;
◆ 文件處理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln;
◆ 系統(tǒng)管理相關(guān)命令:df、top、free、quota、at、lp、adduser、groupadd、kill、
crontab;
◆ 網(wǎng)絡(luò)操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、
finger、mail、 nslookup;
◆ 系統(tǒng)安全相關(guān)命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、
who;
◆ 其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。
本文以Mandrake Linux 9.1(Kenrel 2.4.21)為例,介紹Linux下的安裝和登錄命令。
login
1.作用
login的作用是登錄系統(tǒng),它的使用權(quán)限是所有用戶。
2.格式
login [name][-p ][-h(huán) 主機(jī)名稱]
3.主要參數(shù)
-p:通知login保持現(xiàn)在的環(huán)境參數(shù)。
-h(huán):用來(lái)向遠(yuǎn)程登錄的之間傳輸用戶名。
如果選擇用命令行模式登錄Linux的話,那么看到的第一個(gè)Linux命令就是login:。
一般界面是這樣的:
Manddrake Linux release 9.1(Bamboo) for i586
kennel 2.4.21-0.13mdk on i686 / tty1
localhost login:root
password:
上面代碼中,第一行是Linux發(fā)行版本號(hào),第二行是內(nèi)核版本號(hào)和登錄的虛擬控制臺(tái),我們
在第三行輸入登錄名,按“Enter”鍵在Password后輸入賬戶密碼,即可登錄系統(tǒng)。出于安
全考慮,輸入賬戶密碼時(shí)字符不會(huì)在屏幕上回顯,光標(biāo)也不移動(dòng)。
登錄后會(huì)看到下面這個(gè)界面(以超級(jí)用戶為例):
[root@localhost root]#
last login:Tue ,Nov 18 10:00:55 on vc/1
上面顯示的是登錄星期、月、日、時(shí)間和使用的虛擬控制臺(tái)。
4.應(yīng)用技巧
Linux是一個(gè)真正的多用戶操作系統(tǒng),可以同時(shí)接受多個(gè)用戶登錄,還允許一個(gè)用戶進(jìn)行多
次登錄。這是因?yàn)長(zhǎng)inux和許多版本的Unix一樣,提供了虛擬控制臺(tái)的訪問(wèn)方式,允許用戶
在同一時(shí)間從控制臺(tái)(系統(tǒng)的控制臺(tái)是與系統(tǒng)直接相連的監(jiān)視器和鍵盤)進(jìn)行多次登錄。每
個(gè)虛擬控制臺(tái)可以看作是一個(gè)獨(dú)立的工作站,工作臺(tái)之間可以切換。虛擬控制臺(tái)的切換可以
通過(guò)按下Alt鍵和一個(gè)功能鍵來(lái)實(shí)現(xiàn),通常使用F1-F6 。
例如,用戶登錄后,按一下“Alt F2”鍵,用戶就可以看到上面出現(xiàn)的“l(fā)ogin:”提示符,
說(shuō)明用戶看到了第二個(gè)虛擬控制臺(tái)。然后只需按“Alt F1”鍵,就可以回到第一個(gè)虛擬控
制臺(tái)。一個(gè)新安裝的Linux系統(tǒng)允許用戶使用“Alt F1”到“Alt F6”鍵來(lái)訪問(wèn)前六個(gè)虛擬
控制臺(tái)。虛擬控制臺(tái)最有用的是,當(dāng)一個(gè)程序出錯(cuò)造成系統(tǒng)死鎖時(shí),可以切換到其它虛擬控
制臺(tái)工作,關(guān)閉這個(gè)程序。
shutdown
1.作用
shutdown命令的作用是關(guān)閉計(jì)算機(jī),它的使用權(quán)限是超級(jí)用戶。
2.格式
shutdown [-h(huán)][-i][-k][-m][-t]
3.重要參數(shù)
-t:在改變到其它運(yùn)行級(jí)別之前,告訴init程序多久以后關(guān)機(jī)。
-k:并不真正關(guān)機(jī),只是送警告信號(hào)給每位登錄者。
-h(huán):關(guān)機(jī)后關(guān)閉電源。
-c:cancel current process取消目前正在執(zhí)行的關(guān)機(jī)程序。所以這個(gè)選項(xiàng)當(dāng)然沒(méi)有時(shí)間
參數(shù),但是可以輸入一個(gè)用來(lái)解釋的訊息,而這信息將會(huì)送到每位使用者。
-F:在重啟計(jì)算機(jī)時(shí)強(qiáng)迫f(wàn)sck。
-time:設(shè)定關(guān)機(jī)前的時(shí)間。
-m: 將系統(tǒng)改為單用戶模式。
-i:關(guān)機(jī)時(shí)顯示系統(tǒng)信息。
4.命令說(shuō)明
shutdown命令可以安全地將系統(tǒng)關(guān)機(jī)。有些用戶會(huì)使用直接斷掉電源的方式來(lái)關(guān)閉Linux系
統(tǒng),這是十分危險(xiǎn)的。因?yàn)長(zhǎng)inux與Windows不同,其后臺(tái)運(yùn)行著許多進(jìn)程,所以強(qiáng)制關(guān)機(jī)可
能會(huì)導(dǎo)致進(jìn)程的數(shù)據(jù)丟失,使系統(tǒng)處于不穩(wěn)定的狀態(tài),甚至在有的系統(tǒng)中會(huì)損壞硬件設(shè)備(
硬盤)。在系統(tǒng)關(guān)機(jī)前使用 shutdown命令,系統(tǒng)管理員會(huì)通知所有登錄的用戶系統(tǒng)將要關(guān)
閉,并且login指令會(huì)被凍結(jié),即新的用戶不能再登錄。
5.舉例
shutdown -h 3:40
說(shuō)明 3:40開(kāi)始關(guān)機(jī)。
halt
1.作用
halt命令的作用是關(guān)閉系統(tǒng),它的使用權(quán)限是超級(jí)用戶。
2.格式
halt [-n] [-w] [-d] [-f] [-i] [-p]
3.主要參數(shù)說(shuō)明
-n:防止sync系統(tǒng)調(diào)用,它用在用fsck修補(bǔ)根分區(qū)之后,以阻止內(nèi)核用老版本的超級(jí)塊覆
蓋修補(bǔ)過(guò)的超級(jí)塊。
-w:并不是真正的重啟或關(guān)機(jī),只是寫wtmp(/var/log/wtmp)紀(jì)錄。
-f:沒(méi)有調(diào)用shutdown,而強(qiáng)制關(guān)機(jī)或重啟。
-i:關(guān)機(jī)(或重啟)前,關(guān)掉所有的網(wǎng)絡(luò)接口。
-f:強(qiáng)迫關(guān)機(jī),不呼叫shutdown這個(gè)指令。
-p: 當(dāng)關(guān)機(jī)的時(shí)候順便做關(guān)閉電源的動(dòng)作。
-d:關(guān)閉系統(tǒng),但不留下紀(jì)錄。
4.命令說(shuō)明
halt就是調(diào)用shutdown -h(huán)。halt執(zhí)行時(shí),殺死應(yīng)用進(jìn)程,執(zhí)行sync(將存于buffer中的資
料強(qiáng)制寫入硬盤中)系統(tǒng)調(diào)用,文件系統(tǒng)寫操作完成后就會(huì)停止內(nèi)核。若系統(tǒng)的運(yùn)行級(jí)別為
0或6,則關(guān)閉系統(tǒng);否則以shutdown指令(加上-h(huán)參數(shù))來(lái)取代。
reboot
1.作用
reboot命令的作用是重新啟動(dòng)計(jì)算機(jī),它的使用權(quán)限是系統(tǒng)管理者。
2.格式
reboot [-n] [-w] [-d] [-f] [-i]
3.主要參數(shù)
-n: 在重開(kāi)機(jī)前不做將記憶體資料寫回硬盤的動(dòng)作。
-w: 并不會(huì)真的重開(kāi)機(jī),只是把記錄寫到/var/log/wtmp文件里。
-d: 不把記錄寫到/var/log/wtmp文件里(-n這個(gè)參數(shù)包含了-d)。
-i: 在重開(kāi)機(jī)之前先把所有與網(wǎng)絡(luò)相關(guān)的裝置停止。
install
1.作用
install命令的作用是安裝或升級(jí)軟件或備份數(shù)據(jù),它的使用權(quán)限是所有用戶。
2.格式
(1)install [選項(xiàng)]... 來(lái)源 目的地
(2)install [選項(xiàng)]... 來(lái)源... 目錄
(3)install -d [選項(xiàng)]... 目錄...
在前兩種格式中,會(huì)將
解各參數(shù)含義及些基本概念
本度(sample):本記錄音頻數(shù)據(jù)基本單位見(jiàn)8位16位
通道數(shù)(channel):該參數(shù)1表示單聲道2則立體聲
楨(frame):楨記錄聲音單元其度本度與通道數(shù)乘積
采率(rate):每秒鐘采數(shù)該數(shù)針楨言
周期(period):音頻設(shè)備處理所需要楨數(shù)于音頻設(shè)備數(shù)據(jù)訪問(wèn)及音頻數(shù)據(jù)存儲(chǔ)都單位
交錯(cuò)模式(interleaved):種音頻數(shù)據(jù)記錄式交錯(cuò)模式數(shù)據(jù)連續(xù)楨形式存放即首先記錄完楨1左聲道本右聲道本(假設(shè)立體聲格式)再始楨2記錄非交錯(cuò)模式首先記錄周期內(nèi)所楨左聲道本再記錄右聲道本數(shù)據(jù)連續(xù)通道式存儲(chǔ)數(shù)情況我需要使用交錯(cuò)模式
period(周期):硬件斷間間隔間表示輸入延
聲卡接口指針指示聲卡硬件緩存區(qū)前讀寫位置要接口運(yùn)行指針循環(huán)指向緩存區(qū)某位置
frame size = sizeof(one sample) * nChannels
alsa配置緩存(buffer)周期(size)runtime幀(frames)形式存儲(chǔ)
period_bytes = frames_to_bytes(runtime, runtime-period_size);
bytes_to_frames()
The period and buffer sizes are not dependent on the sample format because they are measured in frames; you do not need to change them.
ALSA聲音編程介紹
ALSA表示高級(jí)Linux聲音體系結(jié)構(gòu)(Advanced Linux Sound Architecture)由系列內(nèi)核驅(qū)應(yīng)用程序編譯接口(API)及支持Linux聲音實(shí)用程序組篇文章我簡(jiǎn)單介紹ALSA項(xiàng)目基本框架及軟件組主要集介紹PCM接口編程包括您自實(shí)踐程序示例
您使用ALSA原能新并唯用聲音API您想完低級(jí)聲音操作便能夠化控制聲音并化提高性能或者您使用其聲音API沒(méi)特性ALSA選擇您已經(jīng)寫音頻程序能想要ALSA聲卡驅(qū)添加本支持您音頻興趣想播放音頻文件高級(jí)API更選擇比SDL,OpenAL及些桌面環(huán)境提供工具集另外您能ALSA支持Linux環(huán)境使用ALSA
ALSA歷史
ALSA項(xiàng)目發(fā)起起Linux聲卡驅(qū)(OSS/Free drivers)沒(méi)積極維護(hù)并且落于新聲卡技術(shù)Jaroslav Kysela早先寫聲卡驅(qū)并由始ALSA項(xiàng)目隨便更發(fā)者加入發(fā)隊(duì)伍更聲卡支持API結(jié)構(gòu)重組
Linux內(nèi)核2.5發(fā)程ALSA合并官源碼樹(shù)發(fā)布內(nèi)核2.6ALSA已經(jīng)內(nèi)建穩(wěn)定內(nèi)核版本并廣泛使用
數(shù)字音頻基礎(chǔ)
聲音由變化氣壓組麥克風(fēng)轉(zhuǎn)換器轉(zhuǎn)換電形式模/數(shù)(ADC)轉(zhuǎn)換器模擬電壓轉(zhuǎn)換離散本值聲音固定間間隔采采速率稱采率本輸數(shù)/模(DAC)轉(zhuǎn)換器比擴(kuò)音器轉(zhuǎn)換原模擬信號(hào)
本位表示本影響聲音轉(zhuǎn)換數(shù)字信號(hào)精確程度素另主要素采率奈奎斯特(Nyquist)理論要離散系統(tǒng)奈奎斯特頻率高于采信號(hào)高頻率或帶寬避免混疊現(xiàn)象
ALSA基礎(chǔ)
ALSA由許聲卡聲卡驅(qū)程序組同提供稱libasoundAPI庫(kù)應(yīng)用程序發(fā)者應(yīng)該使用libasound內(nèi)核ALSA接口libasound提供高級(jí)并且編程便編程接口并且提供設(shè)備邏輯命名功能發(fā)者甚至需要知道類似設(shè)備文件低層接口相反OSS/Free驅(qū)內(nèi)核系統(tǒng)調(diào)用級(jí)編程要求發(fā)者提供設(shè)備文件名并且利用ioctrl實(shí)現(xiàn)相應(yīng)功能向兼容ALSA提供內(nèi)核模塊模擬OSS前許OSS基礎(chǔ)發(fā)應(yīng)用程序需要任何改ALSA運(yùn)行另外libaoss庫(kù)模擬OSS需要內(nèi)核模塊
ALSA包含插件功能使用插件擴(kuò)展新聲卡驅(qū)包括完全用軟件實(shí)現(xiàn)虛擬聲卡ALSA提供系列基于命令行工具集比混音器(mixer)音頻文件播放器(aplay)及控制特定聲卡特定屬性工具
ALSA體系結(jié)構(gòu)
ALSA API解幾主要接口:
1 控制接口:提供管理聲卡注冊(cè)請(qǐng)求用設(shè)備通用功能
2 PCM接口:管理數(shù)字音頻放(playback)錄音(capture)接口本文續(xù)總結(jié)重點(diǎn)放接口發(fā)數(shù)字音頻程序用接口
3 Raw MIDI接口:支持MIDI(Musical Instrument Digital Interface),標(biāo)準(zhǔn)電樂(lè)器些API提供聲卡MIDI總線訪問(wèn)原始接口基于MIDI事件工作由程序員負(fù)責(zé)管理協(xié)議及間處理
4 定器(Timer)接口:同步音頻事件提供聲卡間處理硬件訪問(wèn)
5 序器(Sequencer)接口
6 混音器(Mixer)接口
設(shè)備命名
API庫(kù)使用邏輯設(shè)備名設(shè)備文件設(shè)備名字真實(shí)硬件名字插件名字硬件名字使用hw:i,j格式其i卡號(hào)j塊聲卡設(shè)備號(hào)第聲音設(shè)備hw:0,0.別名默認(rèn)引用第塊聲音設(shè)備并且本文示例真用插件使用另外唯名字比plughw:,表示插件插件提供硬件設(shè)備訪問(wèn)提供像采率轉(zhuǎn)換軟件特性硬件本身并支持特性
聲音緩存數(shù)據(jù)傳輸
每聲卡都硬件緩存區(qū)保存記錄本緩存區(qū)足夠滿聲卡產(chǎn)斷內(nèi)核聲卡驅(qū)使用直接內(nèi)存(DMA)訪問(wèn)通道本傳送內(nèi)存應(yīng)用程序緩存區(qū)類似于放任何應(yīng)用程序使用DMA自緩存區(qū)數(shù)據(jù)傳送聲卡硬件緩存區(qū)
硬件緩存區(qū)環(huán)緩存說(shuō)數(shù)據(jù)達(dá)緩存區(qū)末尾重新緩存區(qū)起始位置ALSA維護(hù)指針指向硬件緩存及應(yīng)用程序緩存區(qū)數(shù)據(jù)操作前位置內(nèi)核外部看我應(yīng)用程序緩存區(qū)興趣所本文討論應(yīng)用程序緩存區(qū)
應(yīng)用程序緩存區(qū)通ALSA庫(kù)函數(shù)調(diào)用控制緩存區(qū)傳輸操作能導(dǎo)致接受延遲我稱延(latency)解決問(wèn)題ALSA緩存區(qū)拆系列周期(period)(OSS/Free叫片斷fragments).ALSAperiod單元傳送數(shù)據(jù)
周期(period)存儲(chǔ)些幀(frames)每幀包含間點(diǎn)所抓取本于立體聲設(shè)備幀包含兩信道本圖1展示解程:緩存區(qū)解周期幀本圖包含些假定數(shù)值圖左右信道信息交替存儲(chǔ)幀內(nèi)稱交錯(cuò)(interleaved)模式非交錯(cuò)模式信道所本數(shù)據(jù)存儲(chǔ)另外信道數(shù)據(jù)
Over and Under Run
聲卡數(shù)據(jù)總連續(xù)硬件緩存區(qū)應(yīng)用程序緩存區(qū)間傳輸例外錄音例應(yīng)用程序讀取數(shù)據(jù)夠快循環(huán)緩存區(qū)新數(shù)據(jù)覆蓋種數(shù)據(jù)丟失稱overrun.放例應(yīng)用程序?qū)懭霐?shù)據(jù)緩存區(qū)速度夠快緩存區(qū)"餓死"錯(cuò)誤稱"underrun"ALSA文檔兩種情形統(tǒng)稱"XRUN"適設(shè)計(jì)應(yīng)用程序化XRUN并且恢復(fù)
典型聲音程序
使用PCM程序通類似面?zhèn)未a:
打放或錄音接口
設(shè)置硬件參數(shù)(訪問(wèn)模式數(shù)據(jù)格式信道數(shù)采率等等)
while 數(shù)據(jù)要處理:
讀PCM數(shù)據(jù)(錄音)
或 寫PCM數(shù)據(jù)(放)
關(guān)閉接口
我文看些工作代碼我建議您Linux系統(tǒng)測(cè)試運(yùn)行些代碼查看輸并嘗試修改推薦代碼本文相關(guān)所實(shí)例清單FTP獲取:
Listing 1. Display Some PCM Types and Formats
#include asoundlib.h
int main() {
int val;
printf("ALSA library version: %s/n",
SND_LIB_VERSION_STR);
printf("/nPCM stream types:/n");
for (val = 0; val = SND_PCM_STREAM_LAST; val++)
printf(" %s/n",
snd_pcm_stream_name((snd_pcm_stream_t)val));
printf("/nPCM access types:/n");
for (val = 0; val = SND_PCM_ACCESS_LAST; val++)
printf(" %s/n",
snd_pcm_access_name((snd_pcm_access_t)val));
printf("/nPCM formats:/n");
for (val = 0; val = SND_PCM_FORMAT_LAST; val++)
if (snd_pcm_format_name((snd_pcm_format_t)val)
!= NULL)
printf(" %s (%s)/n",
snd_pcm_format_name((snd_pcm_format_t)val),
snd_pcm_format_description(
(snd_pcm_format_t)val));
printf("/nPCM subformats:/n");
for (val = 0; val = SND_PCM_SUBFORMAT_LAST;
val++)
printf(" %s (%s)/n",
snd_pcm_subformat_name((
snd_pcm_subformat_t)val),
snd_pcm_subformat_description((
snd_pcm_subformat_t)val));
printf("/nPCM states:/n");
for (val = 0; val = SND_PCM_STATE_LAST; val++)
printf(" %s/n",
snd_pcm_state_name((snd_pcm_state_t)val));
return 0;
}
清單顯示些ALSA使用PCM數(shù)據(jù)類型參數(shù)首先需要做包括文件些文件包含所庫(kù)函數(shù)聲明其顯示ALSA庫(kù)版本
程序剩部迭代些PCM數(shù)據(jù)類型流類型始ALSA每迭代值提供符號(hào)量名并且提供功能函數(shù)顯示某特定值描述字符串看ALSA支持許格式我1.0.15版本支持達(dá)36種格式
程序必須鏈接alsalib庫(kù)通編譯需要加-lasound選項(xiàng)些alsa庫(kù)函數(shù)使用dlopen函數(shù)及浮點(diǎn)操作所您能需要加-ldl,-lm選項(xiàng)
面該程序Makefile:
CC=gcc
TARGET=test
SRC=$(wildcard *.c)
OBJECT= ${SRC:.c=.o}
INCLUDES=-I/usr/include/alsa
LDFLAGS=-lasound
all:$(TARGET)
$(OBJECT):$(SRC)
$(CC) -c $(INCLUDES) $
$(TARGET):$(OBJECT)
$(CC) -o $@ $ $(LDFLAGS)
.PHONY:clean
clean:
@rm -rf $(OBJECT) $(TARGET) *~
Listing 2. Opening PCM Device and Setting Parameters
/*
This example opens the default PCM device, sets
some parameters, and then displays the value
of most of the hardware parameters. It does not
perform any sound playback or recording.
*/
/* Use the newer ALSA API */
#define ALSA_PCM_NEW_HW_PARAMS_API
/* All of the ALSA library API is defined
* in this header */
#include asoundlib.h
int main() {
int rc;
snd_pcm_t *handle;
snd_pcm_hw_params_t *params;
unsigned int val, val2;
int dir;
snd_pcm_uframes_t frames;
/* Open PCM device for playback. */
rc = snd_pcm_open(handle, "default",
SND_PCM_STREAM_PLAYBACK, 0);
if (rc 0) {
fprintf(stderr,
"unable to open pcm device: %s/n",
snd_strerror(rc));
exit(1);
}
/* Allocate a hardware parameters object. */
snd_pcm_hw_params_alloca(?ms);
/* Fill it in with default values. */
snd_pcm_hw_params_any(handle, params);
/* Set the desired hardware parameters. */
/* Interleaved mode */
snd_pcm_hw_params_set_access(handle, params,
SND_PCM_ACCESS_RW_INTERLEAVED);
/* Signed 16-bit little-endian format */
snd_pcm_hw_params_set_format(handle, params,
SND_PCM_FORMAT_S16_LE);
/* Two channels (stereo) */
snd_pcm_hw_params_set_channels(handle, params, 2);
/* 44100 bits/second sampling rate (CD quality) */
val = 44100;
snd_pcm_hw_params_set_rate_near(handle,
params, val, dir);
/* Write the parameters to the driver */
rc = snd_pcm_hw_params(handle, params);
if (rc 0) {
fprintf(stderr,
"unable to set hw parameters: %s/n",
snd_strerror(rc));
exit(1);
}
/* Display information about the PCM interface */
printf("PCM handle name = '%s'/n",
snd_pcm_name(handle));
printf("PCM state = %s/n",
snd_pcm_state_name(snd_pcm_state(handle)));
snd_pcm_hw_params_get_access(params,
(snd_pcm_access_t *) val);
printf("access type = %s/n",
snd_pcm_access_name((snd_pcm_access_t)val));
snd_pcm_hw_params_get_format(params, val);
printf("format = '%s' (%s)/n",
snd_pcm_format_name((snd_pcm_format_t)val),
snd_pcm_format_description(
(snd_pcm_format_t)val));
snd_pcm_hw_params_get_subformat(params,
(snd_pcm_subformat_t *)val);
printf("subformat = '%s' (%s)/n",
snd_pcm_subformat_name((snd_pcm_subformat_t)val),
snd_pcm_subformat_description(
(snd_pcm_subformat_t)val));
snd_pcm_hw_params_get_channels(params, val);
printf("channels = %d/n", val);
snd_pcm_hw_params_get_rate(params, val, dir);
printf("rate = %d bps/n", val);
snd_pcm_hw_params_get_period_time(params,
val, dir);
printf("period time = %d us/n", val);
snd_pcm_hw_params_get_period_size(params,
frames, dir);
printf("period size = %d frames/n", (int)frames);
snd_pcm_hw_params_get_buffer_time(params,
val, dir);
printf("buffer time = %d us/n", val);
snd_pcm_hw_params_get_buffer_size(params,
(snd_pcm_uframes_t *) val);
printf("buffer size = %d frames/n", val);
snd_pcm_hw_params_get_periods(params, val, dir);
printf("periods per buffer = %d frames/n", val);
snd_pcm_hw_params_get_rate_numden(params,
val, val2);
printf("exact rate = %d/%d bps/n", val, val2);
val = snd_pcm_hw_params_get_sbits(params);
printf("significant bits = %d/n", val);
snd_pcm_hw_params_get_tick_time(params,
val, dir);
printf("tick time = %d us/n", val);
val = snd_pcm_hw_params_is_batch(params);
printf("is batch = %d/n", val);
val = snd_pcm_hw_params_is_block_transfer(params);
printf("is block transfer = %d/n", val);
val = snd_pcm_hw_params_is_double(params);
printf("is double = %d/n", val);
val = snd_pcm_hw_params_is_half_duplex(params);
printf("is half duplex = %d/n", val);
val = snd_pcm_hw_params_is_joint_duplex(params);
printf("is joint duplex = %d/n", val);
val = snd_pcm_hw_params_can_overrange(params);
printf("can overrange = %d/n", val);
val = snd_pcm_hw_params_can_mmap_sample_resolution(params);
printf("can mmap = %d/n", val);
val = snd_pcm_hw_params_can_pause(params);
printf("can pause = %d/n", val);
val = snd_pcm_hw_params_can_resume(params);
printf("can resume = %d/n", val);
val = snd_pcm_hw_params_can_sync_start(params);
printf("can sync start = %d/n", val);
snd_pcm_close(handle);
return 0;
}
常用的命令有好多啊,你剛開(kāi)始學(xué),不用特意的去記,用到什么學(xué)什么就好了。 當(dāng)然非要列舉,下面列舉的100條,是來(lái)自百度經(jīng)驗(yàn)上的。 希望對(duì)你有幫助。
Linux常用命令大全100條:
1,echo “aa” 》 test.txt 和 echo “bb” 》》 test.txt
//》將原文件清空,并且內(nèi)容寫入到文件中,》》將內(nèi)容放到文件的尾部
2,chmod go+w -R /home/zhangy //給組用戶和其他用戶添加寫的權(quán)限
3,tar -tzvf test.tar.gz //列出歸檔內(nèi)容
4,du -ah //查看文件列表大小
5,du -sh //查看所有文件的大小總和
6,echo ‘1+2’|bc -l //數(shù)學(xué)運(yùn)算
7,uname -a //查看linux內(nèi)核等的一些信息
8,badblocks -s /dev/sda //壞道掃描時(shí)顯示進(jìn)度
9,time command //查看命令的運(yùn)行時(shí)間
10,ls -lrt //按時(shí)間的倒序排序
11,rsync -P //同步時(shí)顯示進(jìn)度
12.history -c //清楚歷史命令
13,cd - //返回上次目錄
14,tree //顯示目錄樹(shù)
15,umount -n /mnt/hda2 //強(qiáng)制卸載
16,echo ~/ //顯示用戶的home目錄
17,echo $[5*5] //算術(shù)運(yùn)算
18,echo $((5*5)) //算術(shù)運(yùn)算
19,eval ls;ps aux|grep httpd //這二個(gè)命令都能執(zhí)行
20,free -m //有MB為單位顯示內(nèi)存
21,uptime
//顯示系統(tǒng)已經(jīng)運(yùn)行了多長(zhǎng)時(shí)間,它依次顯示下列信息:現(xiàn)在時(shí)間、系統(tǒng)已經(jīng)運(yùn)行了多長(zhǎng)時(shí)間、目前有多少登陸用戶、系統(tǒng)在過(guò)去的1分鐘、5分鐘和15分鐘內(nèi)的平均負(fù)載
22,加法運(yùn)算
[root@krlcgcms01 mytest]# let a=34+3;
[root@krlcgcms01 mytest]# echo $a;
23,export //查看所有環(huán)境變量
24,echo $PATH //查看單個(gè)變量
25,cmp file1 file2 //文件內(nèi)容比對(duì)
26,clear //清屏
27,echo 23423 |awk --re-interval ‘/[0-9]{3,}/’ //如果不加re-interval的話,不顯示
28,cal //得到一個(gè)整齊的日歷格式
29,wc -l //統(tǒng)計(jì)行數(shù),wc -w 統(tǒng)計(jì)單詞
30,echo “AaDCbd23” |tr “[A-Z]” “[a-z]” 大寫變小寫,echo “AaDCbdc23” |tr -c b-d =
將b-d之外的字符串替換成=
31,echo “ADSF” | iconv -f UTF8 -t GBK //把字符由utf8轉(zhuǎn)成gbk
-f是from和簡(jiǎn)寫,-t好像terminal的簡(jiǎn)寫
32,cat -n file //內(nèi)容的前面會(huì)顯示行號(hào)
33,chattr +i file //只讀,root用戶也沒(méi)法對(duì)其進(jìn)行修改
34,lsattr file //查看文件屬性
35,cat /etc/passwd |awk -F: ‘{print $1}’ //查看系統(tǒng)中所有用戶
36,cat /etc/group //查看系統(tǒng)中所有的組
37,groups //查前當(dāng)前用戶所在的,所有組
38,usermod -g 組名 用戶 //這種方式是覆蓋的方式,用的時(shí)候要小心,如果用戶A性于mysql usermod -g php
mysql這樣的話只屬于php了
39,usermod -G 組名 用戶 //這種方式是增加的方式,如果用戶A性于mysql usermod -g php
mysql這樣的話,mysql就屬于2個(gè)組了
40,bc //進(jìn)入數(shù)學(xué)計(jì)算中去
41,umask 003 u權(quán)限是7,g權(quán)限是7,其他用戶是4,也就是774,777-003=774
42,mkfs -t vfat /dev/hda6 //將移動(dòng)硬盤里面的一個(gè)分區(qū)格式化成vfat格式
43,mount /dev/cdrom /media/cdrom //掛載cdrom
44,getent group 532 //通過(guò)組ID,來(lái)查找組信息
45,last //登錄成功用戶記錄
46,lastb //登錄不成功用戶記錄
47,dump -S /dev/sda2 //查看一下要備份/dev/sda2所要的容量
48,dump -0j -f /dev/hda2/sda2_bak.dump.bz2 /dev/sda2 //將sda2進(jìn)行備份并壓縮
49,restore -t -f /dev/hda2/sda2_bak.dump //查看備份信息
50,restore -r -f /dev/hda2/sda2_bak.dump //還原備份
51,fc-list //查看系統(tǒng)中安裝的字體
52,find 。/ -type f -exec grep -q “root” {} ; -exec echo {} ;
//查找目錄下文件所包涵的字符串
53,vmstat 5 //每5顯示一下次系統(tǒng)信息,cpu,memory,i/o等
54,top 后 在shift + P 所占進(jìn)程的排序顯示
55,top 后 在shift + M 所占內(nèi)存的排序顯示
56,iptraf -g //查看各個(gè)接口的流量
57,ostat -d -x /dev/sda2 2 //用iostat查看磁盤/dev/sda2的磁盤i/o情況,每?jī)擅胨⑿乱淮?/p>
58, paste -sd ‘|||n’ test //文件的每4行轉(zhuǎn)換成1行,并用|隔開(kāi)
59,lsof -i :22 //知道22端口現(xiàn)在運(yùn)行什么程序
60,lsof -c abc //顯示abc進(jìn)程現(xiàn)在打開(kāi)的文件
61,lsof -p 12 //看進(jìn)程號(hào)為12的進(jìn)程打開(kāi)了哪些文件
63,route //查看路由信息
64,ifup //開(kāi)啟網(wǎng)卡
65,ifdown //關(guān)閉網(wǎng)卡
66,route del -net 172.168.0.0 netmask 255.255.0.0 dev eth0 //刪除
172.168這個(gè)網(wǎng)段
67,route add -net 172.168.10.0 netmask 255.255.255.0 dev eth0 //增加一個(gè)路由
68,netstat -tunl //列出監(jiān)聽(tīng)的網(wǎng)絡(luò)服務(wù)端口
69,netstat -tun //列出已連接的網(wǎng)絡(luò)服務(wù)端口
70,nmap -sP 172.30.4.0/24 //在這個(gè)網(wǎng)段內(nèi)有多少用戶在我的主機(jī)上操作,一個(gè)不錯(cuò)的安全檢查工具
71,vgdisplay //查看系統(tǒng)中的可用空間
72,lvextend -L+20G /dev/tank/part1 //向part1這個(gè)分區(qū)增加20G的空間
73,lvresize -L-10G /dev/tank/part2 //向part2這個(gè)分區(qū)減少10G的空間
74,pvdisplay //查看磁盤信息
75,mplayer -loop 10 /mnt/song/music/花兒開(kāi)了.mp3 //循環(huán)播放10遍
76,pacman -S firefox -nd //nd去掉依賴
77,wget -c //斷點(diǎn)下載
78,chroot /mnt/ubuntu //改變根目錄到/mnt/ubuntu
79,ctrl+a //命令行下,光標(biāo)稱動(dòng)到開(kāi)頭
80,ctrl+e //命令行下,光標(biāo)移動(dòng)結(jié)尾
81,cut -d: -f 1-4 test //用:分割文件,取分割后的1-4列
82,file /home/zhangy/test.php //用于查看文件的一些基本信息
83,touch test.txt //創(chuàng)建一個(gè)空文件 text.txt
84,htpasswd -cbd /usr/local/nginx/conf/authfile //創(chuàng)建訪問(wèn)控制文件
85,df //查看磁盤空間,和當(dāng)前的磁盤數(shù)
86,fdisk -l //查看所有磁盤數(shù)
87,alsamixer //進(jìn)入后,m鍵可以實(shí)現(xiàn)靜音
88,killall httpd //把所有httpd進(jìn)程殺掉
89,killall -9 mysqld_safe //有些進(jìn)程超級(jí)用戶也停止不了,-9是強(qiáng)制刪除
90,mirror /mysql //下載mysql目錄
91,mirror -R /mysql //上傳mysql目錄
92,rmmod pcspkr //關(guān)掉tab提示音
93,modprobe pcspkr //開(kāi)啟tab提示音
94,gpasswd -a zhangy wheel //將zhangy這個(gè)用戶添加到wheel這個(gè)組
95,dd if=/dev/zero of=/virtual/ubuntu.virt.img bs=1M count=4096
//創(chuàng)建一個(gè)4G的IMG鏡像
96,lspic //顯示pci設(shè)備
97,lsusb //顯示usb設(shè)備
98,history | less //less根more有點(diǎn)像,感覺(jué)less用著更舒服點(diǎn)
99,ln -s //如果忘了-s就變成硬鏈接了
100,tar zxvf test.tar.gz -C /home/zhangy //將內(nèi)容解壓到指定目錄
本文標(biāo)題:linux混音軟件命令行,linux 音頻編輯
文章來(lái)源:http://chinadenli.net/article22/dsioecc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、定制網(wǎng)站、面包屑導(dǎo)航、網(wǎng)站內(nèi)鏈、自適應(yīng)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)