? ? ? ? Linux操作系統(tǒng)有很多功能瓣距,我們有很多種方式可以使用這些功能诸蚕,其中最簡單和直接的方式就是命令行冲泥。命令行就相當(dāng)于我們請求服務(wù)使用的專業(yè)術(shù)語。做任何事情怀伦,第一步就是要學(xué)會使用正確的術(shù)語脆烟。這樣,Linux作為服務(wù)方房待,才能夠聽懂邢羔。
? ? 1用戶和密碼
? ? ? ? Windows系統(tǒng)中有一個默認(rèn)的叫Administrator的用戶,也就是系統(tǒng)管理員桑孩,它的權(quán)限很大拜鹤,可以在這個系統(tǒng)上干任何事。Linux上面也有一個類似的用戶流椒,叫做Root敏簿,同樣的,它也具有最高的操作權(quán)限宣虾。
? ? ? ? 有了用戶名惯裕,也需要一個密碼,不管是Windows還是Linux绣硝,它們的密碼都是在操作系統(tǒng)安裝的過程中就設(shè)置好的轻猖。
? ? ? ? 也可以對密碼進(jìn)行修改,命令:passwd域那,輸入這個命令后會提示輸入新的密碼咙边。
? ? ? ? 在Linux中我們也可以創(chuàng)建新的用戶,命令:useradd次员。
? ? ? ? 如败许,useradd lv
? ? ? ? 執(zhí)行這個命令后lv這個用戶就被創(chuàng)建了,它并不會彈出提示輸入密碼的命令淑蔚,因為接下來需要自己執(zhí)行:passwd lv市殷,來設(shè)置密碼。
? ? ? ? 在Linux中刹衫,用戶也是分組的醋寝,剛剛我們創(chuàng)建用戶的時候并沒有說明是哪個組的,于是默認(rèn)就會創(chuàng)建一個和用戶名同名的組带迟。
? ? ? ? 當(dāng)然我們也可以在創(chuàng)建用戶的時候直接指定屬于哪個組音羞,可以使用命令:man useradd,查看詳細(xì)的幫助文檔仓犬,找到指定group的命令參數(shù)嗅绰。
? ? ? ? 我們都知道匪凡,Linux里是“命令行+文件”模式技矮,對于用戶管理來說驶冒,也是一樣的件相。咱們通過命令創(chuàng)建的用戶,其實是放在/etc/passwd文件里的财边。這是一個文本文件肌括。我們可以通過cat命令,將里面的內(nèi)容輸出在命令行上酣难。組的信息我們放在/etc/group文件中谍夭。
? ? ? ? 在passwd文件里,x的地方是密碼鲸鹦,密碼可是秘密呢慧库,不能放在這里跷跪,不然誰都知道啦馋嗜。接下來是用戶ID和組ID,我們可以對照著下面的group文件來看吵瞻。
? ? ? ? /root和/home/cliu8分別是root用戶和cliu8用戶的主目錄葛菇,主目錄是用戶登錄進(jìn)去后默認(rèn)的路徑。
? ? ? ? /bin/bash的位置是用于配置登錄后的默認(rèn)交互命令行的橡羞。
? ? 2瀏覽文件
? ? ? ? Linux下我們列出當(dāng)前目錄下的文件使用ls眯停,常用的是ls -l,用列表的方式列出文件卿泽。
? ? ? ? 其中第一個字段的第一個字符是文件類型莺债。
? ? ? ? 若是“-”,表示普通文件签夭;若是“d”齐邦,表示目錄。其他文件類型后面遇到了再說~
? ? ? ? 第一個字段剩下的9個字符是模式第租,其實就是權(quán)限位措拇,3個一組,每一組rwx表示“讀(read)”“寫(write)”“執(zhí)行(execute)”慎宾。如果是字母丐吓,就說明有這個權(quán)限,如果是橫線趟据,就是沒有這個權(quán)限券犁。
? ? ? ? 這三組權(quán)限位分別表示文件所屬的用戶權(quán)限、文件所屬的組權(quán)限汹碱、其他用戶的權(quán)限族操。
? ? ? ? 如果想改變權(quán)限,可以使用命令chmod 711 hosts。
? ? ? ? 第二個字段是硬鏈接數(shù)目色难。這個比較復(fù)雜泼舱,后面講文件的時候再說~
? ? ? ? 第三個字段是所屬用戶,第四個字段是所屬組枷莉,第五個字段是文件的大小娇昙,第六個字段是文件被修改的日期,最后是文件名笤妙。我們可以通過命令:chown冒掌,改變所屬用戶,命令:chgrp蹲盘,改變所屬組股毫。
? ? 3安裝軟件
? ? ? ? 現(xiàn)在我們會瀏覽文件夾啦,嘻嘻(#^.^#)
? ? ? ? 接下來應(yīng)該做什么吶召衔?當(dāng)然是安裝哪些“裝機必備”的軟件啦铃诬。
? ? ? ? 以安裝jdk為例,應(yīng)該去哪里下載呢苍凛?
? ? ? ? 為了安全起見趣席,一般去官網(wǎng)比較好。在JDK的官網(wǎng)醇蝴,它會給我們這樣一個列表:
? ? ? ? 對于windows系統(tǒng)宣肚,最方便的方式就是下載exe。對于Linux來講悠栓,我們需要下載rpm或者deb霉涨,它們是Linux下面的安裝包。為什么有兩種呢惭适?因為Linux現(xiàn)在常用的有兩大體系笙瑟,一個是CentOS體系,一個是Ubuntu體系腥沽,前者使用rpm逮走,后者使用deb。
? ? ? ? 在Linux上沒有雙擊安裝一說今阳,我們需要命令去按裝师溅。CentOS使用rpm -i jdk-XXX_linux-x64_bin.rpm進(jìn)行安裝,Ubuntu下面使用dpkg -i jdk-XXX_linux-x64_bin.deb盾舌。其中-i就是install的意思墓臭。
? ? ? ? 安裝好了,怎么查看安裝的軟件列表呢妖谴?
? ? ? ? 命令:rpm -qa或者dpkg -l窿锉。其中酌摇,-q就是query,a就是all窑多,-l就是list。
? ? ? ? 但是如果真的用如上命令去運行的話洼滚,我們會發(fā)現(xiàn)這個列表hin長hin長埂息,很難找到我們安裝的軟件。這時我們可以用一個很好用的搜索工具grep遥巴。
? ? ? ? rpm -qa|grep jdk千康,這個命令是將列出來的所有軟件形成一個輸出。|是管道铲掐,用于連接兩個程序拾弃。前面rpm -qa的輸出就放進(jìn)管道里面,然后作為grep的輸入摆霉,grep在它的輸出結(jié)果中再進(jìn)行搜索帶關(guān)鍵詞jdk的行豪椿,并且輸出出來。grep支持正則表達(dá)式斯入,因此搜索的時候很靈活砂碉,再加上管道蛀蜜,這是一個很常用的模式刻两。同理dpkg -l|grep jdk也是OK的。
? ? ? ? 如果我們不知道關(guān)鍵詞滴某,可以使用rpm -qa|more和rpm -qa|less這兩個命令磅摹,它們可以將很長的結(jié)果分頁展示出來,這樣我們就可以一個個來找了霎奢。
? ? ? ? 其中户誓,more是分頁后只能往后翻頁,翻到最后一頁自動結(jié)束幕侠,返回命令行帝美。less是往前往后都能翻頁,需要輸入q返回命令行晤硕,q就是quit悼潭。
? ? ? ? 如果要刪除,可以用rpm -e和dpkg -r舞箍。-e就是erase舰褪,-r就是remove。
? ? ? ? 上面是在沒有電腦管家的情況下的命令疏橄,和windows一樣占拍,Linux也有自己的軟件管家,CentOS下面是yum,Ubuntu下面是apt -get晃酒。
? ? ? ? 我們可以通過關(guān)鍵詞搜索表牢,例如搜索jdk,命令:yum search jdk或apt-cache search jdk贝次,可以搜索出很多可以安裝的jdk版本初茶。如果數(shù)目太多,我們可以通過管道grep浊闪、more恼布、less來進(jìn)行過濾。? ? ? ??
? ? ? ? 選中之后搁宾,我們可以通過命令:yum install java-11-openjdk.x86_64和apt-get install openjdk-9-jdk來進(jìn)行安裝折汞。
? ? ? ? 卸載的命令是:yum erase java-11-openjdk.x86_64和apt-get install openjdk-9-jdk。
? ? ? ? Linux允許我們配置從哪里下載這些軟件的盖腿,地點就是在配置文件里面爽待。對于CentOS來講,配置文件在/etc/yum.repos.d/CentOS-Base.repo里翩腐。
? ? ? ? 對于Ubuntu來講鸟款,配置文件在/etc/apt/sources.list里面。
? ? ? ? 我們看到他們配置的服務(wù)器都是163.com茂卦。Linux服務(wù)器遍布全球何什,最好選一個就近的地方下載,在中國的話等龙,163.com就是其中的一個選擇处渣,這樣就不用跨越重洋請求服務(wù)啦。
? ? ? ? 其實無論是先下載再安裝蛛砰,還是通過軟件管家進(jìn)行安裝罐栈,都是下載一些文件,然后將這些文件放在某個路徑下泥畅,然后在相應(yīng)的配置文件中配置一下荠诬。例如,在Windows里面位仁,最終會變成C:\Program Files下面的一個文件夾以及注冊表里的一些配置柑贞。而在Linux中則會存放的更散一些,例如障癌,主執(zhí)行文件會放在/usr/bin或者/usr/sbin下面凌外,其他的庫文件會放在/var下面,配置文件會放在/etc下面涛浙。
? ? ? ? 說到這里康辑,還有一個簡單粗暴的方法摄欲,就是將安裝好的路徑直接下載下來,然后解壓縮稱為一個完整的路徑疮薇。在JDK的安裝目錄中胸墙,Windows以后jdk-XXX_Windows-x64_bin.zip,這是Windows下常用的壓縮模式按咒。Linux有jdk-XXX_linux-x64_bin.tar.gz迟隅,這是Linux下常用的壓縮模式。
? ? ? ? 我們用Linux上上面的一個工具wget励七,后面加上鏈接智袭,就能從網(wǎng)上下載了。下載下來后掠抬,就可以進(jìn)行解壓縮吼野,Linux下面默認(rèn)會有tar程序來解壓縮。如:tar xvzf jdk-XXX_linux-x64_bin.tar.gz两波。
? ? ? ? 采用下載壓縮包的方式瞳步,我們下面還需要配置一下環(huán)境變量,可以通過export命令來完成:
? ? ? ? 但是存在一個問題腰奋,export命令僅在當(dāng)前命令行中有效单起,一旦退出又重新登錄,這個配置就失效了劣坊。
? ? ? ? 下面這個方法可以進(jìn)行永久配置嘀倒,在當(dāng)前用戶的默認(rèn)工作目錄,例如/root或者/home/cliu8下面讼稚,有一個.bashrc文件括儒,這個文件是以點點開頭的绕沈,默認(rèn)看不到锐想,需要ls -la才能看到,a就是all乍狐。每次登陸的時候赠摇,這個文件都會運行,因而把它放在這兒浅蚪。
? ? ? ? 要編輯.bashrc文件藕帜,可以使用文本編輯器vi,也可以使用更加友好的vim惜傲。如果默認(rèn)沒有安裝洽故,可以通過yum install vim或者apt-get install vim進(jìn)行安裝。
? ? ? ? vim就像windows里的notepad一樣盗誊,使我們第一個要學(xué)會使用的工具时甚。要不然編輯隘弊、查看配置文件,這些操作我們都無法完成荒适。
? ? ? ? vim是一個很復(fù)雜的工具梨熙,剛上手的時候我們只需要記住幾個基本的命令:
? ? ? ? vim hello,打開一個名字叫hello的文件刀诬,若不存在咽扇,就先創(chuàng)建一個。
? ? ? ? 打開后陕壹,如果想要編輯质欲,就將光標(biāo)移動到相應(yīng)的位置,輸入i糠馆,意思是insert把敞,進(jìn)入編輯模式,可以插入榨惠、刪除字符奋早。
? ? ? ? 若想保存編輯的文本,我們使用esc鍵退出編輯模式赠橙,然后輸入“:”耽装,在它的后面再輸入w,意思是write期揪,這樣就可以保存文本了掉奄。
? ? ? ? 若在“:”后面輸入q,意思是quit凤薛,這樣就會退出vim姓建。
? ? ? ? 如果編輯了,還沒保存缤苫,不想要了速兔,可以輸入q!。
? ? ? ? 回到剛剛說的配置永久的環(huán)境變量活玲,通過vim .bashrc涣狗,將export的兩行加入后,輸入:wq舒憾,寫入并且退出镀钓,這樣就編輯好了。
? ? 5運行程序
? ? ? ? Linux執(zhí)行程序有三種方式镀迂。
? ? ? ? 1.通過shell在交互命令行里面運行丁溅。
? ? ? ? 這是Linux執(zhí)行程序最常用的一種方式。Linux不是根據(jù)后綴名(exe)來執(zhí)行的探遵,只要文件有x執(zhí)行權(quán)限窟赏,都能到文件所在的目錄下措译,通過./filename運行這個程序。當(dāng)然饰序,如果放在PATH里設(shè)置的路徑下面领虹,就不用./了,直接輸入文件名就可以運行了求豫,Linux會幫你找塌衰。
? ? ? ? 這樣執(zhí)行的程序可能需要和用戶進(jìn)行交互,例如允許讓用戶輸入蝠嘉,然后輸出結(jié)果也打印到交互命令行上最疆。這種方式比較適合運行一些簡單的命令,比如通過date獲取當(dāng)前時間蚤告。
? ? ? ? 這種模式的缺點是努酸,一旦當(dāng)前的交互命令行退出,程序就停止了杜恰。
? ? ? ? 2.后臺運行获诈。
? ? ? ? 用shell在交互命令行里運行不能用來運行哪些需要“永遠(yuǎn)”在線的程序。
? ? ? ? 這個時候心褐,我們往往使用nohup命令舔涎。這個命令的意思是no hung up(不掛起),也就是說逗爹,當(dāng)前交互命令行退出的時候亡嫌,程序還要在。
? ? ? ? 當(dāng)然這個時候程序不能霸占交互命令行掘而,而是應(yīng)該在后臺運行挟冠。最后加一個&,就表示后臺運行袍睡。
? ? ? ? 使用shell在交互命令行里面運行的時候知染,有什么都打印在命令行里了,現(xiàn)在在后臺運行了女蜈,輸出到文件中則是最好的持舆。
? ? ? ? 最終命令的一般形式為:nohup command>out.file 2>&1 &。其中伪窖,“1”表示文件描述符1,表示標(biāo)準(zhǔn)輸出居兆,“2”表示文件描述符2覆山,表示標(biāo)準(zhǔn)錯誤輸出,“2>&1”表示標(biāo)準(zhǔn)輸出和錯誤輸出合并了泥栖。合并到哪里去呢簇宽?到out.file里勋篓。
? ? ? ? 關(guān)閉這個進(jìn)程的命令:ps -ef|grep 關(guān)鍵字|awk '{print $2}'|xargs kill -9
? ? ? ? 從這個命令中,我們多少能看出shell的靈活性和精巧組合魏割。
? ? ? ? 其中ps -ef可以單獨執(zhí)行譬嚣,列出所有正在運行的程序。
? ? ? ? grep上面介紹過了钞它,通過關(guān)鍵字找到咱們剛才啟動的程序拜银。
? ? ? ? awk工具可以很靈活地對文本進(jìn)行處理,這里的awk '{print $2}'是指第二列的內(nèi)容遭垛,即運行程序的ID尼桶。
? ? ? ? 最后我們可以通過xargs傳遞給kill -9,也就是發(fā)給這個運行的程序一個信號锯仪,讓它關(guān)閉泵督。
? ? ? ? 當(dāng)然,如果我們已經(jīng)知道運行程序的ID庶喜,可以直接使用kill關(guān)閉運行的程序小腊。
? ? ? ? 3.以服務(wù)的方式運行。
? ? ? ? 就像Windows中一樣久窟,Linux也有一種程序溢豆,在系統(tǒng)啟動的時候就在,稱為服務(wù)瘸羡。
? ? ? ? 例如常用的數(shù)據(jù)庫MySQL漩仙,就可以使用這種方式運行。
? ? ? ? 在Ubuntu中犹赖,我們可以通過apt-get install mysql-server的方式安裝MySQL队他,然后通過命令systemctl start mysql啟動MySQL,通過systemctl enable mysql設(shè)置開機啟動峻村。之所以成為服務(wù)并且能夠開機啟動麸折,是因為在/lib/systemd/system目錄下會創(chuàng)建一個XXX.service的配置文件,里面定義了如何啟動粘昨、如何關(guān)閉垢啼。
? ? ? ? 在CentOS里有些特殊,MySQL被Oracle收購后张肾,因為擔(dān)心授權(quán)問題芭析,改為使用MariaDB,它是MySQL的一個分支吞瞪,通過命令yum install mariadb-server mariadb進(jìn)行安裝馁启,命令systemctl start mariadb啟動,命令systemctl enable mariadb設(shè)置開機啟動芍秆。這些啟動方式的命令和Ubuntu中都是一樣的~同理惯疙,它也會在上述目錄下創(chuàng)建一個上述名稱的配置文件翠勉,從而成為一個服務(wù)。
? ? ? ? 最后的小知識:
? ? ? ? 關(guān)機:shutdown -h now
? ? ? ? 重啟:reboot
? ? 6小結(jié)
? ? ? ? 掌握了今天學(xué)的這些基本命令就足夠我們熟練操作Linux啦霉颠。
? ? ? ? 今天學(xué)習(xí)的命令總結(jié)如下圖:
? ??????