一. Linux特點 1.免費/開源; 2.支持多線程/多用戶; 3.安全性好; 4.對記憶體和文件管理優越。 Linux最小隻需4M ——> 嵌入式開發 二. 文件目錄 Linux系統所有軟硬體都是以文件的形式存在,可以自由設置、掛載、卸載。瞭解Linux文件目錄,是學習Linux的關鍵。 主要目錄 ...
一. Linux特點
1.免費/開源;
2.支持多線程/多用戶;
3.安全性好;
4.對記憶體和文件管理優越。
Linux最小隻需4M ——> 嵌入式開發
二. 文件目錄
Linux系統所有軟硬體都是以文件的形式存在,可以自由設置、掛載、卸載。瞭解Linux文件目錄,是學習Linux的關鍵。
主要目錄
/ :Linux文件系統的上層根目錄,主目錄。
/root :超級管理員的主目錄,存放root用戶相關文件。
/home :一般用戶目錄或FTP站點目錄,存放普通用戶文件。
/etc :存放系統配置相關文件。
/boot :存放Linux系統啟動所需文件,相關引導文件。
/dev :系統設備文件,如:硬碟、印表機。
/mnt :裝置文件系統的加(掛)載點。如:光碟機、軟盤等的掛載目錄。
/proc :當前系統核心與程式執行的信息。(process,系統當前運行的進程信息。)
/usr :存放系統應用程式和相關文件,類似於win的Program Files。
/var :存放系統經常變動的文件,如日誌文件、用戶郵件。
/tmp :系統零時文件目錄(如安裝程式過程中產生的零時文件),每個用戶都可以對他進行讀寫操作,一段時間不使用系統會自動刪除該目錄下的文件。
/bin :存放可執行命令的目錄,系統任何用戶均可執行該目錄下的命令。
/sbin :存放系統啟動時所需執行的命令的目錄,該目錄里的命令需要高級許可權的用戶才可使用。
swap :相當於windows的虛擬記憶體。
當前目錄:pwd
相對路徑:指從當前目錄去訪問某個文件(夾)
絕對路徑:指從根目錄(/)去訪問某個文件(夾)
綠色 ---->代表可執行文件
紅色 ---->代表壓縮文件
深藍色---->代表目錄
淺藍色---->代錶鏈接文件
灰色 ---->代表其它的一些文件
三. Linux系統分區
Linux系統分區和windows一樣,怎麼分,分多大因人而異,基礎分區如下:
/ 根目錄分區(一般大小為分完其他分區後硬碟剩餘的總量)
/boot 系統啟動、引導分區,大小隨意( 最好200+ M)。
swap 相當於win的虛擬記憶體,大小為記憶體兩倍,最好1024M以上。
分好區後,需要安裝軟、硬體可直接通過/mnt 掛載上去,不需要的時候再卸載。
(文件掛載先將其轉換成ISO格式)
四. Linux網路環境的配置
修改IP的三種方法
第一種(在gui視圖模式下配置):
- 用root身份登錄,運行setup 命令進入到text mode setup utility 對網路進行配置,可對IP,子網掩碼,網關,DNS設置。
- 此操作網卡配置並未生效,需重啟網路才生效。
命令:/etc/rc.d/init.d/network restart
第二種(快速修改):
- ifconfig eth0 x.x.x.x //對網卡進行設置
- ifconfig eth0 network x.x.x.x //設置子網掩碼
廣播地址和dns使用預設的。
註:此操作網路配置會立即生效,但只是臨時生效,系統重啟會恢復到之前的。
第三種(修改最底層的網卡文件內容):
- 修改/etc/sysconfig/network-scripts/ifcfg-eth0 這個文件,可修改IP,子網掩碼,網關,DNS,廣播地址等。
- 此操作網卡配置並未生效,需重啟網路才生效。
命令:/etc/rc.d/init.d/network restart
設置系統日期
- data:直接執行,顯示系統當前時間。
data MMDDHHMMCCYY.SS
//修改系統時間,後面字母代表:月月日日時時分分年年年年.秒秒
- 查看日曆(calendar)
查看月曆:cal 5 2016 //查看2016年5月的月曆
查看年曆:cal 2016 //查看2016年的整年日曆
用戶的環境變數:/home/用戶/.bash_profile
系統環境變數:/etc/profile
配置.bashrc 文件可以指定某些程式在用戶登陸的時候自動啟動:
對系統某個用戶在:/home/用戶/.bashrc
整個系統(所有用戶):/etc/bashrc
Linux啟動過程分析
- BIOS自檢;
- 啟動GRUB/LILO;
- 運行Linux內核並檢測硬體;
- 運行系統的第一個進程init;
- init讀取系統引導配置文件/etc/inittab中的信息進行初始化;
- /etc/rc.d/rc,sysinit系統初始化腳本;
- /etc/rc.d/rcX.d/[KS]* 根據運行級別X配置服務;
終止以K開頭的服務,啟動以S開頭的服務(如下圖init為5)
- /etc/rc.d/rc/local 執行本地配置;
- 其他特殊服務。
五. 用戶管理
添加用戶:useradd 用戶名(useradd aaa)
設置/修改密碼:passwd 用戶名(passwd aaa)
添加用戶組:groupadd 用戶組名(groupadd root123)
將用戶添加到某用戶組:
useradd –g 用戶組 用戶(useradd –g root123 aaa)
修改用戶屬性(需root許可權)
usermod –g 用戶組 用戶
usermod –d 目錄 用戶名 //改變用戶登陸的初始目錄
usermod -s shell類型 用戶名
usermod -c 註釋 用戶名
usermod -u 用戶編號 用戶名
刪除用戶:userdel aaa (刪除用戶,但/home下用戶主目錄文件信息仍存在)
userdel –r aaa (徹底刪除用戶及用戶所有文件信息)
查看系統中所有用戶:
cat /etc/passwd
查看系統所有用戶組:
cat /etc/group
預設情況下新建一個用戶,就會生成一個以該用戶名命名的用戶組。
六. 進程/網路狀態管理
進程:
- 在Linux中,每個執行的程式成為一個進程,每個進程都分配一個ID號(PID)。
- 每一個進程都會對應一個父進程,父進程可以複製多個子進程,如www伺服器。
- 每個進程都可能一兩種方式存在,前臺與後臺。
- 一般系統服務都是以後臺進程的方式存在,而且常駐系統中,直到關機才結束。
進程與線程:
進程:正在執行的程式。
線程:1. 輕量級的進程;
- 進程有獨立的地址空間,線程沒有;
- 線程不能獨立存在,它是由進程創建的;
- 線程耗費的cpu和記憶體小於進程。
查看進程:1. ps –aux (當前運行進程,靜態)
- top (動態監控進程)
終止進程:
kill 進程號( PID )
eg:kill 16251 //終止進程號為16251的進程
kill -9 16251 //某些進程不能被殺,使用 -9 參數強制終止進程
顯示網路狀態命令:netstat
此命令用來顯示整個系統目前的網路情況。如連接、數據包、路由表內容。
netstat –an 顯示所有埠和連接信息(包括遠程鏈接到本機的ip)
netstat –anp 與上面想比,多顯示進程號(PID),推薦使用此命令
顯示數據包經過歷程命令:traceroute
此命令用來檢測數據包在網路上傳輸的過程,可顯示本機到目標主機所經歷路由的完整路徑。
traceroute + 參數 + 目標IP或網址 //參數可忽略,相當於win下的tracert。
eg:traceroute www.baidu.com
route –n 顯示本機網關、路由情況。
linux上進程有5種狀態:
1. 運行(正在運行或在運行隊列中等待)
2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
3. 不可中斷(收到信號不喚醒和不可運行, 進程必須等待直到有中斷發生)
4. 僵死(進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調用後釋放)
5. 停止(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後停止運行運行)
ps工具標識進程的5種狀態碼:
D 不可中斷 uninterruptible sleep (usually IO)
R 運行 runnable (on run queue)
S 中斷 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
七. 文件管理
文件所有者:
文件是哪個用戶創建的,它的所有者就是該用戶。
ls –ahl 查看文件所有者
// a代表顯示所有,包括隱藏文件;h代表輸出文件大小;l代表用長列表顯示,顯示更詳細內容。
修改文件所有者:chown 用戶名 文件名
修改文件夾所有者:chown –r 用戶名 文件夾目錄 //Linux中-r 為遞歸的意思。
文件所在組:
文件是哪個用戶創建的,它的所在組就是該用戶所在組。
ls –ahl 查看文件所在組(如上)
修改文件所在組:chgrp 組名 文件名
文件和目錄許可權:
rwx = 421 //讀寫執行
chmod 777 aaa //賦予文件aaa最高許可權
文件賦權執行上面格式即可,下麵做詳細詮釋。
chmod u=rwx,g=rx,o=rx aaa
//相當於chmod 755 aaa;u代表user;g代表group;o代表other
chmod u-x,g+w aaa //給aaa去除用戶執行許可權,增加用戶組寫的許可權
八. 常用命令
Linux運行級別 init [0123456]
運行級別 0:關機 //shutdown –h now也可立即關機
1:單用戶
2:多用戶狀態沒有網路服務
4:系統未使用保留給用戶
5:圖形界面
6:系統重啟 //reboot
常用運行級別是3和5,修改系統啟動預設的運行級別:
/etc/inittab文件中的id:5:initdefault中的數字。
查看用戶當前運行級別命令:runlevel 或 who -r
若不慎將預設運行級別設置為6,系統將不斷重啟。
解決:在啟動界面按e,進入第二個界面選中第二行按e,然後輸入1(以單用戶啟動,且進入不需要密碼,也可用於忘記密碼時進入然後重設密碼),進入init 1級別用命令改迴文件的預設運行級別。
Linux常用命令
有問題用man命令(manual指南,相當於dos下的help)
eg :#man grep(後直接接命令)
ls:查看文件目錄,等於dir
ls –l 用長列表顯示,顯示更詳細內容;
ls –a 顯示隱藏文件;
ls –h 顯示文件大小。
重定向命令:
ls –l > a.txt 將顯示的內容寫入a.txt(覆蓋原內容)
ls –al > aa.txt 將現實的內容追加到文件aa.txt的末尾(不覆蓋原內容)
lsb_release -a //查看版本信息
uname -a //可顯示電腦以及操作系統的相關信息。
cat /proc/version //說明正在運行的內核版本。
cat /etc/issue // 顯示的是發行版本信息
touch:創建空文件
mkdir:創建文件夾
vi:編輯文件,當文件不存在時可創建文件
cat:查看文件內容
cp:複製命令
cp –r aaa bbb (遞歸複製,將aaa文件及子文件複製到bbb)
mv:移動文件或重命名
rm:刪除文件
rm –rf * 刪除文件夾所有內容(包括目錄及子文件)
r 遞歸 f 強制
ln:建立符號鏈接,相當於建立快捷方式link。
ln –s 源文件路徑 目標文件路徑
eg:ln –s /root/abc3.java toabc3
//建立後顯示如下(文件屬性前會多個l,代表ln命令建立的)
more:分頁顯示文件內容,按空格查看下一頁,不可查看上一頁內容
less:分頁顯示文件內容,空格查看下一頁內容,上下鍵也可查看上/下一頁內容
grep:顯示文本中查找的內容(grep只顯示查找的內容,cat顯示文本所以內容)
grep –n 顯示內容所在行數
|:管道命令,把上一個命令的結果交給 | 後面的命令處理。(一條命令可有多個管道命令)
find:文件查找
find 文件路徑 –name 文件名
eg:find / -name aaa.txt 全目錄查找aaa.txt (路徑越詳細查找越快)
★ 搜索一段時間內被存取/變更的文件或目錄:
find /hoem –amin -10 //查找十分鐘記憶體取的文件或目錄
find /hoem –atime -10 //查找十小時記憶體取的文件或目錄
find /hoem –cmin -10 //查找十分鐘內更改過的文件或目錄
find /hoem –ctime +10 //查找十小時前更改過的文件或目錄
find /hoem –size +10k //查找/home目錄下大於10k的文件
a:access 存取 c:change 更改
該查找多用於安全方面,查看黑客在一段時間內動過的系統文件。
pwd:查看當前路徑
whereis:查找目標文件的路徑
whereis ssh //查看ssh的路徑
壓縮與解壓縮
zip(壓縮)和unzip(解壓縮)
zip(壓縮):
- zip a.zip aaa //zip後直接接壓縮後的文件名,將aaa壓縮成a.zip
- zip –m a.zip aaa //壓縮後刪除原文件,將aaa壓縮成a.zip並刪除aaa
- zip –r a.zip aaa //將子目錄一起壓縮,文件夾aaa及其子目錄一起壓縮為a.zip(常用)
- zip -9 a.zip aaa //-9為壓縮率(-1 — -9,-9壓縮率最高)
壓縮當前文件夾,兩種方法:
(1)zip –r 111.zip . //.代表當前文件夾
(2)zip –r 111.zip 文件夾路徑/*(eg:zip –r 111.zip /home/*)
unzip(解壓縮):
- unzip a.zip //解壓縮文件a.zip
- unzip a.zip –x bbb //不解壓某文件,a.zip中除了bbb其他都解壓
- unzip –z a.zip //查看壓縮包內容,也可用“-l”、“-v”查看
將壓縮文件解壓掃某處:unzip *.zip –d /目錄 (如果該目錄下沒某文件會自動創建)
gzip(壓縮)和gunzip(解壓):
- gzip a.gz aaa //壓縮
- gzip –d a.gz //解壓縮
3.gunzip a.gz //解壓縮
tar.gz解壓:tar -zxvf aaa.tar.gz
corntab:用於設置周期性被執行的指令,可用於任務調度。
終止任務調度:
conrtab –r :終止任務調度
conrtab –l :列出當前有哪些任務調度
其他常用命令:
http://www.oschina.net/translate/useful-linux-commands-for-newbies
http://www.tecmint.com/20-advanced-commands-for-middle-level-linux-users/
九. Shell
shell,殼,是指“提供使用者使用界面”的軟體,將命令解析成機器語言。從作用上說,類似於cmd,接受用戶命令然後調用相應應用;從功能上說又類似於bat批處理,可將程式編寫成shell執行。
shell的分類:
shell名稱 開發者 命令名稱
Bourne S.R. Bourne /bin/sh
C Bill Joy /bin/csh
Kom David /bin/ksh
Shell的修改:chsh –s 輸入新的shell //eg:chsh –s /bin/csh
不同shell的命令稍有差別
用戶登陸後自動執行的shell腳本文件:
.bashrc 位於用戶主目錄下,它之前執行系統的腳本/etc/bashrc,主要是配置基礎數據
.bash_profile位於用戶主目錄下,它之前執行系統腳本/etc/profile,主要是配置環境變數
alias(別名),可簡化常用命令的輸入,shell程式用經常使用
命令:alias 自定義命名=’想要替換的命令’
eg:alias cp=’cp -i’
alias ll=’ls –l –color=tty’
十. 軟體的安裝
RPM管理
rpm,RPM Package Manager(RPM軟體包管理器)的縮寫,一種用於互聯網下載包的打包及安裝工具,它包含在某些Linux分發版中。它生成具有.rpm擴展名的文件,與dpkg類似。這一文件格式名稱雖然打上了RedHat的標誌,但是其原始設計理念是開放式的,現在包括OpenLinux、S.u.S.E.以及Turbo Linux等Linux的分發版本都有採用,可以算是公認的行業標準了。
如何查詢linux中安裝了哪些rpm軟體:
rpm –q //查看有沒有安裝mysql
rpm –qa //查看所有rpm軟體
rpm常用命令:
安裝rpm包:
rpm –ivh *.rpm // i=install安裝;v=verbose提示;h=hash進度條
卸載rpm包:
rpm –e *.rpm
//如果其他軟體包依賴於當前要卸載的包,會產生錯誤告警
rpm –e –nodeps *.rpm
//該命令用於強制卸載當前rpm包,但依賴於此包的軟體可能無法運行
升級rpm包:
rpm –U *.rpm
文件共用:
1.Samba伺服器安裝:Linux下開發人員好像喜歡裝這個。
2.FTP伺服器安裝:大多數Linux機器都是用的這個。
3.SCP命令:
scp [OPTIONS] file_source file_target
eg:scp ntp-4.2.8p7-0.10591.1.PTF.959243.x86_64.rpm [email protected]:/home/boco4a
OPTIONS:
-v 和大多數 linux 命令中的 -v 意思一樣 , 用來顯示進度 . 可以用來查看連接、認證、 或是配置錯誤
-C 使能壓縮選項
-P 選擇埠 . 註意 -p 已經被 rcp 使用
4.方便快捷的文件傳輸軟體:sshClient
另外putty、xshell、secureCRT也可用於管理主機,但文件傳輸基於FTP或rz、sz命令。
Mysql資料庫的安裝
Mysql資料庫由於免費、跨平臺、輕、支持多併發,一直是中小型企業資料庫的首選。
安裝:
- 把安裝文件拷貝到 /home 下
- 解壓mysql文件.tar.gz 命令:tar –zxvf
- groupadd mysql //創建用戶組
useradd –g mysql mysql //創建mysql用戶,並放入到mysql組
進入/home下的mysql文件夾
sripts/mysql_install_db –user=mysql //初始化資料庫
chown root . //修改文件所有者(.代表當前文件目錄)
chown –R mysql data
//修改data文件夾所有者(R參數代表遞歸,表示當前文件夾下所有文件/文件夾)
chgrp –R mysql . //改變用戶組
啟動mysql
bin/mysqld_safe –user=mysql & // & 代表以後臺方式啟動
查看埠3306是否起來:netstat –anp | more
進入mysql:
cd bin
./mysql –uroot –p123
//登錄mysql(此種方式只能在/home/mysql/bin下啟動mysql)
如果想在任何目錄都可以啟動mysql,修改環境變數裡面的路徑PATH:
env //可以看到PATH路徑
在root用戶目錄下 ls –al | more 找到 .bash_profile
(此文件存放用戶變數,系統變數在/etc目錄下)
vi .bash_profile在PATH路徑後面加上mysql路徑
註銷/重啟電腦,然後任意路徑都能使用mysql –uroot –p123 進入mysql
(註:只能在此用戶任意目錄,其他用戶照樣修改。如要所有用戶都可以,那就需要改系統變數,在/etc/profile下也存在該文件)
資料庫備份與恢復
備份操作在mysql下的bin目錄下,非在資料庫中。
恢復的時候要先在資料庫中新建個空資料庫。
可以利用任務調度crontab,寫個shell腳本將資料庫自動備份。