1. 程式人生 > >Linux學習之入門篇(一)

Linux學習之入門篇(一)

一、引言

很早之前就知道了這個系統,印象中這個傢伙好像很不好惹的樣子。所以我直到現在才開始真正接觸它,如果不是由於一些特殊的理由,我根本不會去試這個毒。畢竟在我程式設計師的身份之上我還是一個正常的人。由於對這傢伙的不瞭解,我之前甚至一直叫它“林納斯”,就算朋友糾正了幾次我都沒能記住。
不過現在好歹是要認真學習一下了,為了不讓主觀能動性過早地消退吧,我決定把我學習的過程使用部落格記錄下來。

二、開始學習
1.介紹:

1.讀音
首先更正一下讀音:這貨的叫法是種類繁多,但是它一定不叫做“林納斯”。
根據linux的創始人Linus Torvalds的說法,Linux的發音和“Minix”是押韻的。“Li”中“i”的發音類似於“Minix”中“i”的發音,而“nux”中“u”的發音類似於英文單詞“profess”中“o”的發音。這樣的話讀音就是/’linэks/,差不多就是“裡訥(er)克斯”吧。但是也有/li’n^ks/(“裡那克斯”)或/li’nju:ks/(“裡紐克斯”)或/’liniks/(“裡妮克斯”)等等的讀法。
是不是光讀音就能讓人望而卻步了?
在國內的話,好像是讀成/li’nju:ks/(“裡紐克斯”)的人更多一點。emmm,也挺順口的。
2.歷史淵源:

(以下可能存在瞎掰)
Linux出現於1991年,但早在1970s就有一個叫做Unix的系統出現了。這個Unix可以說是Linux的爸爸,它是由 Ken Thompson的Unics改編而來。但是Unics是由組合語言編寫的,移植性極差,所以後來 Thompson 和 Dennis Ritchie合作想將 Unics 改用高階語言來撰寫。當時先使用了一門叫做B語言的高階語言來改寫,但是發現基於B語言的Unics效能太差。為了改進Unics的效能,Dennis Ritchie直接將B語言做了升級,於是C語言應運而生。(NB!沒有槍炮直接自己造)然後基於C語言的Unics核心就誕生了。
但是在這之後,因為版權限制的原因,這個系統的原始碼並不能被“擴散”,導致對這個系統有了解的人並不多。
直到1991年,來自芬蘭的赫爾辛基大學學生Linus Torvalds在BBS上發了這樣的一條訊息:
!
Hello everybody out there using minixI’m
doing a (free) operation system (just a hobby,
won’t be big and professional like gnu) for 386(486) AT clones.
I’ve currently ported bash (1.08) and gcc (1.40),
and things seem to work. This implies that i’ll get
something practical within a few months, and I’d like to know
what features most people want. Any suggestions are welcome,
but I won’t promise I’ll implement them :-)

很多人看到了這條訊息,他們去Torvalds提供的網站上下載了這個基於Minix開發的作業系統核心來安裝。而且,因為Torvalds放置核心的那個 FTP 網站的目錄為:Linux, 這之後,大家便稱這個核心為 Linux 了。
在後來,那些對這個作業系統表現出興趣的人們,自發的在網上互相展開了聯絡和交流。有些人提供測試系統相容的硬體,有些人幫助Torvalds進行測試,還有人幫助他完善程式。雖然從來沒有見過面,但這些人卻在 1994 年完成了Linux 的第一個核心正式版——version 1.0!並在1996年2.0版本推出時由Torvalds指定企鵝作為這個系統的吉祥物。
再之後,由於Linux的開源特性,移植性並不好的Linux也被開發到了很多大公司的硬體了,比如IBM、HP。然後,有著很多自由軟體團隊的存在,可以在 Linux 上面執行的軟體也越來越多。後來的發展就是有些公司將Linux核心和一些工具還有一些可執行的軟體整合起來,加上自己具有創意的工具程式整合起來形成各種各樣的 distribution。比如:RedHat、CentOS、Debian、Ubuntu,還有國產的紅旗、BluePoint等等。
3.Linux優點:
包括配備需求低廉、豐富的網路功能、可靠的系統安全、良好的可移植性、具有標準相容性等,當然,最重要的還是開源,使Linux在Windows的強大攻勢下還能保持著驚人的活力。

2.環境搭建
環境:我是在win10的基礎上使用VMware Workstation Pro+CentOS6.3 做基礎環境。另外使用SecureCRT做遠端連線系統的模擬。
理由:因為電腦是win10系統,避免VMware有不相容的情況,所以使用的是最新版的VMware Pro。另外,CentOS沒有用最新版的,因為它是使用者較多的版本, 這樣一來,發生問題時,也會有大量的解決方法能在網上找到。
下面提供一些下載連結:
VMware Pro下載地址
啟用序列號:5A02H-AU243-TZJ49-GTC7K-3C61N
CentOS官網
SecureCRT
SecureCRT是一款支援SSH(SSH1和SSH2)的終端模擬程式,同時支援Telnet和rlogin協議。也是一款用於連線執行包括Windows、UNIX和VMS的遠端系統的理想工具。
搭建過程注意事項:
(1)首先安裝VMware,在此基礎上新建虛擬機器,原始檔指向下載的CentOS映象檔案,即可開始系統的安裝。系統最好分配2GB執行記憶體和20GB儲存空間。

因為在 Linux 伺服器中,執行記憶體的重要性比 CPU 還要高的多!因為如果主儲存器不夠大, 就會使用到硬碟的記憶體置換空間(swap)。而硬碟比記憶體的速度要慢的多,而且我們是要用到圖形化介面(X window)的。

(2)另外很重要的一點就是,網路介面卡最好選用NAT模式。因為用的是虛擬機器,通過NAT的話,我們電腦連得上網,Linux就連的上。而且就算是不用虛擬機器,NAT可以實現 IP 分享器的功能。而且NAT 還可以額外的加裝很多分析軟體, 可以用來分析客戶端的聯機,或者是用來控制頻寬和流量。

NAT連線過程:①先在網路和共享中心中網路介面卡名為VM8的介面卡上進行一些設定。點選VM8屬性上的IPV4協議,在協議上不要使用自動獲取IP,而是指定IP地址、閘道器和DNS伺服器。
比如這樣(閘道器可改為192.168.2.1):
無
②在VMware workstations的編輯選項卡中的虛擬網路編輯器中去更改虛擬機器的網路,包括閘道器和子網IP。
比如這樣:
無
然後就可以了。
上圖:
聯網成功
(3)使用虛擬機器需要注意,不要配置一些無用的虛擬硬體,比如說印表機、音效卡之類的,這樣會給系統額外的負擔,而且還有可能造成你的主系統硬體功能不穩定。比如我的win10 音效卡就出現了相容性問題。

一切配置完成,我們就可以按部就班地安裝系統了。當然你也能先啟動系統,之後再進行配置也是可以的。

3.開始瞭解
在準備工作完成之後,我們就可以開始學習了。
(1)Linux的目錄結構:
Linux目錄結構

解釋:
- bin (binaries)存放二進位制可執行檔案
- sbin (super user binaries)存放二進位制可執行檔案,只有root才能訪問
- etc (etcetera)存放系統配置檔案
- usr (unix shared resources)用於存放共享的系統資源
- home 存放使用者檔案的根目錄
- root 超級使用者目錄
- dev (devices)用於存放裝置檔案
- lib (library)存放跟檔案系統中的程式執行所需要的共享庫及核心模組
- mnt (mount)系統管理員安裝臨時檔案系統的安裝點
- boot 存放用於系統引導時使用的各種檔案
- tmp (temporary)用於存放各種臨時檔案
- var (variable)用於存放執行時需要改變資料的檔案

(二)常用命令:
1.命令總的抽象起來就是下面這種形式:

命令格式:命令 -選項 引數

2.命令分類:
① 內部命令:屬於Shell解析器的一部分
- 比如
- cd 切換目錄(change directory)
-pwd 顯示當前工作目錄(print working directory)
-help 幫助
② 外部命令:獨立於Shell解析器之外的檔案程式
比如:
-ls 顯示檔案和目錄列表(list)
-mkdir 建立目錄(make directoriy)
-cp 複製檔案或目錄(copy)
3.常用命令:
Linux常用命令
4.嘗試安裝軟體:
在linux下安裝軟體,有它特殊的方法。但都要記得注意系統的位數,不要裝錯了。
①直接解壓安裝包到指定的位置
進入使用者目錄下,先建立一個資料夾app: mkdir app
解壓檔案到app:tar -zxvf 檔案全名 -c app
這樣就將安裝包解壓到你的安裝路徑下了
然後修改環境變數 sudo vi /etc/profile
比如安裝jdk的時候,將jdk的壓縮包解壓到/home/FirstVm(我的使用者名稱)/app/jdk1.7.0_65下,
sudo tar -xvf xxx.tar.gz -C /FirstVm/app/jdk1.7.0_65,然後再配置jdk的環境變數。sudo vi /etc/profile,輸入或者拷貝下面一段:

#set java environment
JAVA_HOME=/FirstVm/app/jdk1.7.0_65
export PATH=PATH:JAVA_HOME/bin

然後 source /etc/profile 來生效
可以測試是否生效 echo $JAVA_HOME
②直接拖進虛擬機器,比如eclipse的安裝包
③ 通過安裝源安裝:
安裝mysql,使用apt-get命令,對於不同的版本這個安裝源命令也不同,centos是yum。
Sudo apt-get install mysql-server
Sudo apt-get install mysql-client
安裝過程中會要求設定mysql的root密碼。
安裝好後,通過,sudo netstat -tap|grep mysql,檢視是否安裝成功。
也可以登入mysql檢視,mysql -u root -p,然後提示輸入密碼。

①mysql的命令:
Sudo start mysql
啟動mysql服務
Sudo stop mysql
停止mysql服務
②關於設定遠端訪問
1) 正常情況下mysql佔用的3306埠只是在127.0.0.1上監聽,拒絕其他ip的訪問,取消本地監聽的方法:修改my.conf檔案,sudo vi /etc/mysql/my.cnf,找到bind-address=127.0.0.1這行,註釋掉。修改期間要變更my.cnf的許可權,修改完畢後請將它的許可權設定回0440。否則不能開啟mysql。
2) 開啟允許遠端訪問。
登入mysql後,輸入如下命令:grant all privileges on . to ‘username’@’%’identified by ‘password’;第一個引號裡面輸入允許登入的使用者名稱,最後一個引號裡面寫這個使用者的密碼。
Flush privileges;
3) 在ubuntu系統下,配置防火牆,開啟3306埠,sudo ufw allow 3306。其他版本,也做相應的防火牆開啟處理。

③Yum(全稱為 Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE、CentOS中的Shell前端軟體包管理器。基於RPM包管理,能夠從指定的伺服器自動下載RPM包並且安裝,可以自動處理依賴性關係,並且一次安裝所有依賴的軟體包,無須繁瑣地一次次下載、安裝
④RPM是RedHat Package Manager(RedHat軟體包管理工具)的縮寫,這一檔案格式名稱雖然打上了RedHat的標誌,但是其原始設計理念是開放式的,現在包括RedHat、CentOS、SUSE等Linux的分發版本都有采用,可以算是公認的行業標準了。RPM檔案在Linux系統中的安裝最為簡便
⑤ rpm的常用引數
i:安裝應用程式(install) e:解除安裝應用程式(erase) vh:顯示安裝進度;(verbose hash)
U:升級軟體包;(update) qa: 顯示所有已安裝軟體包(query all) 結合grep命令使用 例子:rmp -ivh
gcc-c++-4.4.7-3.el6.x86_64.rpm
⑥注意:軟體的安裝都是既可以通過軟體包,也可以通過軟體源安裝,一般使用軟體源在更新上比較方便,在網路不允許的情況下,使用軟體包可以解決沒有網路的問題。

四、額外的幾點
1.學習Linux的好習慣

善於檢視man page(manual)等幫助文件
利用好Tab鍵
掌握好一些快捷鍵
ctrl + c(停止當前程序)
ctrl + r(檢視命令歷史)
ctrl + l(清屏,與clear命令作用相同)

2.VIM編輯器專題:

VIM工作模式
1.插入命令:
i 在游標前插入
I 在游標當前行開始插入
a 在游標後插入
A 在游標當前行末尾插入
o 在游標當前行的下一行插入新行
O 在游標當前行的上一行插入新行
2.定位命令:
:set nu 顯示行號
:set nonu 取消行號
gg 到文字的第一行
G 到文字的最後一行
:n 到文字的第n行
3.刪除命令:
x 刪除游標所在處字元
nx 刪除游標所在處後的n個字元
dd 刪除游標所在行。ndd刪除n行
dG 刪除游標所在行到末尾行的所以內容
D 刪除游標所在處到行尾的內容
:n1,n2d 刪除指定範圍的行
4.替換和取消命令
u undo,取消上一步操作
Ctrl + r redo,返回到undo之前
r 替換游標所在處的字元
R 從游標所在處開始替換,按Esc鍵結束
5.常用快捷鍵
Shift+ zz 儲存退出,與“:wq”作用相同
v 進入字元可視模式
V 或 Shift + v 進入行可視模式
Ctrl + v 進入塊可視模式

3.SecureCRT

在SecureCRT中與虛擬機器進行連線,可以模擬遠端操控伺服器。
首先在軟體中配置連線,輸入伺服器IP,然後埠預設為22,協議ssh2,輸入密碼儲存之即可連線。
如果不知道IP,可到虛擬機器中使用終端的ifconfig命令得到innet address即可。
另外可以在SecureCRT中的SessionOptions中選擇Appreance設定主題,這裡選的是這個
這裡寫圖片描述
在secureCRT上面 用快捷鍵alt+P開啟sftp傳輸視窗,使用put命令上傳檔案到伺服器;(在這裡我遇到了問題,就是隻有我的行動硬碟中的檔案不能進行put上傳,而系統盤不受影響,不知道是不是有相關的安全性的設計)
當然也可以在圖形介面filezilla上面進行上傳 埠都是22因為22是sftp的傳輸埠,ftp則是21;

4.一些有趣的點:

1.圖形介面知識linux的一個程序,不會因為圖形介面卡住而導致linux宕機,永遠不會宕機(為什麼)
所以遊戲會很愉快
2.重啟 sudo init 3 進入命令列模式
init 6 重啟一次
startx或是init 5重新進入圖形介面(這樣在圖形介面卡住還能重進,不用重啟)

五、總結
從對Linux這個系統的不瞭解,到現在的略通皮毛,好事情是我的主觀能動性還算沒有消退。只希望以後不要因為莫名其妙的挫敗感影響到之後的學習道路吧,所幸,現在遇到的問題在網際網路上都有相應的解決方法,不必因為翻閱資料花費太多的時間。
嗯,暫時把這個作為一個系列來寫吧。挖好坑,以後慢慢填。