韓順平Linux視頻教程—筆記(全)
Linux****操作系統(tǒng)學習
linux****的特點
優(yōu)點:
1、免費的/開源的系統(tǒng)
2、支持多線程/多用戶的系統(tǒng)
3、安全性好
4、對內(nèi)存和文件管理優(yōu)越
linux體積最少只需要內(nèi)存4M,由于小所以可以做嵌入式開發(fā)
缺點:
操作相對困難
Linus于1991年至1994年將unix的微型版minis加以開發(fā)出linux
現(xiàn)在redhat紅帽子、BSD、SUN等公司進行再發(fā)行
在windows環(huán)境下可以使用(VM等)虛擬機來運行l(wèi)inux
在linux****運行startx****命令****可以****進入圖形操作界面
root****是linux****下的系統(tǒng)管理員
普通用戶登陸后可以用**su- **切換為系統(tǒng)管理員
關機命令
shutdown -h now 立刻進行關機
shutdown -r now 現(xiàn)在重新啟動計算機
reboot 現(xiàn)在重新啟動計算機
logout 注銷
vi****編輯器是linux下最有名的編輯器,也是學習linux必須掌握的工具,
在unix下也可使用vi進行程序的開發(fā)
linux可以做java/c開發(fā)
在linux的vi編輯器內(nèi)寫一下簡單的java程序“hello,world”
1、Vi Hello.java
2、輸入i[進入到插入模式]
public class hello{
public static void main(String []args){
System.out.println("hello,world");
}
}
3、輸入esc鍵[進入命令模式]
4、輸入wq保存退出/q!退出但不保存
6、編譯javac hello.java
javac Hello.java
7、運行 java Hello [java運行的是class文件]
ls命令顯示當前文件
ls -l命令顯示詳細文件列表
如何在linux下開發(fā)c程序或是c++(cpp)程序
建立vi hello.cpp
include <stdio.h>
int main(){
printf("hello!");
return 0;
}
gcc hello.cpp 用gcc編譯器編譯出來未命名會是a.out文件
gcc -o [文件名] [源文件名] 用gcc編譯器編譯文件命名
/a.out 在linux下運行c程序只要輸入/就可以運行
linux****下的文件目錄
linux的文件系統(tǒng)是采用級層式的樹狀目錄結(jié)構(gòu),在此結(jié)構(gòu)中的最上層
是根目錄“/”,然后在此目錄下再創(chuàng)建其他的目錄
深刻理解linux文件目錄是非常重要的。
linux下的根目錄中重要的目錄如下是系統(tǒng)自動分配的
root目錄、home目錄、bin目錄、sbin目錄、mnt目錄、etc目錄、var目錄、boot目錄、usr目錄、tmp目錄(均為同級目錄)
root目錄:用于存放root用戶相關文件的目錄
home目錄:用于存放普通用戶的相關文件的目錄
bin目錄:用于存放常用命令的目錄
sbin目錄:用于存放要具有一定權(quán)限才可以使用的命令的目錄
mnt目錄:用于默認掛載軟驅(qū)、光驅(qū)的目錄
etc目錄:用于存放配置相關的文件的目錄
var目錄:用于存放經(jīng)常變化的文件的目錄
boot目錄:用于存放系統(tǒng)引導文件的目錄(重要)
usr目錄:用于存放安裝的默認目錄(安裝文件會默認安裝在usr目錄里)
tmp目錄:用于存入臨時文件的目錄
cd /返回到主目錄下
ls與dir功能相同顯示目錄名
顯示當前在哪個路徑下面
pwd命令是顯示當前在哪個路徑下
linux****的用戶管理(普通用戶無法使用)
useradd命令:useradd 用戶名(添加用戶)
passwd命令:passwd 用戶名 (修改用戶密碼)
userdel命令:userdel 用戶名 (刪除用戶)
userdel -r 用戶名(刪除用戶以及用戶主目錄)
linux****的常用命令
指定運行級別
命令:init[012356]
運行級別
0:關機
1:單用戶
2:多用戶狀態(tài)沒有網(wǎng)絡服務
3:多用戶狀態(tài)有網(wǎng)絡服務
4:系統(tǒng)未使用保留給用戶
5:圖形界面
6:系統(tǒng)重啟
常用運行級別是3和5,要修改默認的運行級別可改文件/etc/inittab的
id:5:initdefault:這一行中的數(shù)字
在啟動引導界面的時候按e進入編輯,在進入grub引界面時,請輸入e在選中第二個選項按e,在最后輸入 1[單用戶級別] 然后按b進入單用戶模式。
*******:可通過此方法進行l(wèi)inux用戶密碼的修改**
linux****常用命令(2)
命令pwd [顯示當前工作目錄]
命令cd [改變目錄]
命令ls [列出文件和目錄]
ls -a 顯示隱藏文件
ls -l 顯示長列表格式
命令mkdir [建立目錄]
命令rmdir [刪除空目錄]
linux****常用命令(3)
tab鍵可以補全相應內(nèi)容
命令touch [建立空文件]
命令cp [復制命令]
cp -r dir1 dir2遞歸復制命令(復制子目錄信息)
命令mv [移動文件和改文件名]
命令rm [刪除文件和目錄]
rm -rf * [刪除所有內(nèi)容(包括目錄和文件)r遞歸f強制]
命令ln [建立符號連接]
ln -s 源目標
ln -s /etc/inittab inittab [inittab指向?qū)嶋H文件/etc/inittab]
linux****常用命令(4)
命令more [顯示文件內(nèi)容,帶分頁]
命令less [顯示文件內(nèi)容帶分頁]
命令grep [在文本中查詢內(nèi)容] grep -n "查找內(nèi)容" [文件名]
命令| [管道命令] 在linux和unix系統(tǒng)中|就是管道命令,把上一個命令的
結(jié)果交給|的后面的命令進行處理
命令man [相當于dos下的help]
例:Grep –n “查找內(nèi)容” [文件名] | more
linux****常用命令(5)
命令find [搜索文件及目錄]
在linux中,因為文件系統(tǒng)是以級別式的結(jié)構(gòu)來組成的,所以要在整個系統(tǒng)中找到特定的文件和目錄并不是件容易的事。而"find"命令可以解決上述問題。
1、在特定的目錄下搜索并顯示指定名稱的文件和目錄
find / -name man:意思是說從根目錄開始搜索名稱為man的文件或目錄
2、搜索一段時間內(nèi)被存取/變更的文件或目錄。
find /home -amin -10:十分鐘內(nèi)存取的文件或目錄
find /home -atime -10:十小時內(nèi)存取的文件或目錄
find /home -cmin -10:十分鐘內(nèi)更改過的文件或目錄
find /home -ctime +10:十小時前更改過的文件或目錄
3、搜索指定大小的文件。
find /home -size +10k:意思是說查找/home目錄下大小為10k的文件
linux****常用命令(6) 以文件頭字段來判定文件類型,并非以文件后綴名來判定。
重定向命令:管道定向命令">"為覆蓋,">>"追加寫在原文件內(nèi)容后面
ls -l > a.txt 列表的內(nèi)容寫入文件a.txt中(覆蓋寫)
ls -al >> aa.txt列表的內(nèi)容追加到文件aa.txt的末尾
從文件中輸入信息database_program<database_data
文件所有者、所在組和其它組
在linux中的每個用戶必需屬于一個組,不能獨立于組外。在linux中每個文件有所有者、所在組、其它組的概念。
(1)所有者
一般為文件的創(chuàng)建者,誰創(chuàng)建了該文件,就是天然的成為該文件的所有者。
用[ls -ahl]命令可以看到文件的所有者
你也可以用[chown 用戶名 文件名]來修改文件的所有者。
(2)所在組
當某個用戶創(chuàng)建了一個文件后,這個文件的所在組就是該用戶所在的組。
用[ls -ahl]命令可以看到文件的所有組。
你可以通過[chgrp 組名 文件名]來修改文件所在的組
(3)其它組
除開文件的所有者和所在組的用戶外,系統(tǒng)的其它用戶都是文件的其它組。
(4)改變用戶所在的組
在添加用戶時,可以指定將該用戶添加到哪個組中,同樣的用root的管理權(quán)限可以改變某個用戶所在的組:
usermod -g 組名 用戶名
你可以用
usermod -d 目錄名 用戶名 改變該用戶登陸的初始目錄
如何在linux中添加組
需要用root用戶來添加,普通用戶無法進行用戶和組的添加
添加組命令:groupadd 組名
查看linux中所有組的信息
命令:vi /etc/group
查看命令:cat /etc/group
組名:x:組ID號:
創(chuàng)建用戶,并同時指定將該用戶分配到指定組。
命令:useradd -g 組名 用戶名
查看linux中所有用戶信息
可編輯查看命令:vi /etc/passwd
查看命令:cat /etc/passwd
用戶名:x:用戶ID:用戶所在組ID:注釋:/用戶主目錄/:該用戶所用的shell解釋器
設定密碼
命令:passwd 用戶名
- rw- r-- r--
-為文件類型,-為普通文件,d為文件夾,l為鏈接
rw-文件的所有者對該文件的權(quán)限。權(quán)限分三種1、r可讀也會用4表示;2、W可寫也會用2表示;3、X可執(zhí)行也會用1表示。
r--文件所在組對該文件的權(quán)限
r--其它組的用戶對該文件的權(quán)限
如何修改文件的訪問權(quán)限的問題?
注:修改文件訪問權(quán)限只有root用戶和文件所有者。
查看當前操作人員命令who am i
命令chmod為修改文件訪問權(quán)限的命令。
chmod 777 用戶名
解釋:
--- --- --- 000
r-- r-- r-- 444
rw- rw- rw- 666
rwx rwx rwx 777
rwx rw- r-- 764
Linux****下程序安裝
javaee****開發(fā)環(huán)境搭建,JDK的安裝
概述:要在linux下開發(fā)java程序,則需要安裝JDK。實際上目前有很多java后臺程序就是運行在linux環(huán)境下運行的。也是將來的發(fā)展趨勢。
JDK****的安裝步驟:
1、把鏡像ISO文件掛載到linux操作系統(tǒng)上。(linux系統(tǒng)是用掛載和卸載來管理分區(qū)文件的。)
在虛擬機上做好配置,在根目錄下進行操作:
掛載光驅(qū)命令:mount /mnt/cdrom/
掛載光驅(qū)
卸載光驅(qū)命令:umount /mnt/cdrom/
2、把安裝文件copy到/home目錄下(文件名過長要用tab鍵來自動補全文件名)
命令:cp 文件名 /home
3、切換目錄到/home
命令:cd /home
4、安裝(./)是解壓縮命令
命令 ./ 安裝文件名.bin
輸入yes后開始安裝,輸入no不安裝。
5、看看一個文件 /etc/profile (環(huán)境配置文件)
linux下用#來作注釋。
6、配置profile環(huán)境配置文件
javaee****開發(fā)環(huán)境搭建 eclipse的安裝
概述:要在linux下開發(fā)java程序。則需要安裝JDK,如果要在集成開發(fā)工具(IDE)下開,可以安裝eclipse軟件。
eclipse****安裝
1、掛載eclipse.iso文件
2、將eclipse復制到/home目錄下
3、安裝
tar.gz文件的安裝命令:tar -zxvf 文件名.tar.gz
4、啟動eclipse[進入圖開界面]
打開終端控制臺
進入eclipse文件后
./eclipse
myeclipse****安裝同上需在圖形界面下安裝
JDK/eclipse/myeclipse三個按順序安裝后才可以使用J2EE的開發(fā)
javaee****開發(fā)環(huán)境搭建 tomcat的安裝
概述:我們知道javaee的服務器有tomcat、jboss、weblogic、websphere、resin...這些都可以安裝到linux下,我們給大家安裝tomcat
tomcat用于開發(fā)小、中型項目(免費)jboss也是免費的。
weblogic、websphere用于開發(fā)大型項目(收費)
安裝同上
注釋重點:
bin文件安裝使用./ 文件名.bin
tar.gz文件安裝使用tar -zxvf 文件名.tar.gz
unzip解壓縮zip文件:unzip 文件名.zip
zip壓縮文件:zip 壓縮包文件名.zip 要壓縮的文件名
在圖形界面下運行文件后要加&進行后臺運行
控制臺下運行文件命令./文件名 &
./eclipse &
javaee開發(fā)環(huán)境搭建 Mysql數(shù)據(jù)庫的安裝
概述:毫無疑問,沒有數(shù)據(jù)庫,javaee項目將會暗淡無光,所以我們必須掌握如何在linux下安裝和使用數(shù)據(jù)庫。在linux下除了microsoft的sql server不能安裝外,其它主流的數(shù)據(jù)庫都可以安裝。比如Mysql、oracle、db2...關于如何在linux下安裝Mysql數(shù)據(jù)庫我們在后面講解,各位同學可以問問google大神,看看能不能自己搞定!
linux下娛樂軟件 realplay
概述:linux下一樣有很多娛樂軟件,比如播放影的軟件之王realplay。我們給大家演示一下。請注意這次我用的是.bin的安裝文件。
安裝realplay
1、把安裝文件copy到home目錄去
2、安裝./realplay
linux****分區(qū)(1)
概述:首先我們要對硬盤分區(qū)的基本概念進行一些初步的了解,硬盤的分區(qū)主要分為基本分區(qū)(Primary Partion)和擴展分區(qū)(Extension Partion)兩種,基本分區(qū)和擴展分區(qū)的數(shù)目之和不能大于四個。且基本分區(qū)可以馬上被使用但不能再分區(qū)。擴展分區(qū)必須再進行分區(qū)后才能使用,也就是說它必須還要進行二次分區(qū)。那么由擴展分區(qū)再分下去的是什么呢?它就是邏輯分區(qū)(Logical Partion),而且邏輯分區(qū)沒有數(shù)量上限制。
linux****分區(qū)(2)
對windows的用戶來說,有幾個分區(qū)就有幾個驅(qū)動器,并且每個分區(qū)都會獲得一個字母標識符,然后就可以選用這個字母來指定在這個分區(qū)上的文件和目錄,它們的文件結(jié)構(gòu)都是獨立的,非常好理解。但對這些用戶初上手Red Hat Linux嗎,可就有點惱人了。因為對Red Hat Linux用戶來說無論有幾個分區(qū),分給哪一目錄使用,它歸根結(jié)底就只有一個根目錄,一個獨立且唯一的文件結(jié)構(gòu)。Red Hat Linux中每個分區(qū)都是用來組成整個文件系統(tǒng)的一部分,因為它采用了一種叫“載入”的處理方法,它的整個文件系統(tǒng)中包含了一整套的文件和目錄,且將一個分區(qū)和一個目錄聯(lián)系起來。這時要載入的一個分區(qū)將使它的存儲空間在一個目錄下獲得。下面我們先來看看Red Hat Linux的驅(qū)動器是如何標識的。
/dev/sda1
sda1:sd硬盤類型,a第一塊硬盤,1代表分區(qū)
linux****分區(qū)(3)
對于IDE硬盤,驅(qū)動器標識符為"hdx",其中"hd"表明分區(qū)所在設備的類型,這里是指IDE硬盤了。"x"為盤號(a為基本盤,b為基本從屬盤,c為輔助主盤,d為輔助從屬盤),""代表分區(qū),前四個分區(qū)用數(shù)字1到4表示,它們是主分區(qū)或擴展分區(qū),從5開始就是邏輯分區(qū)。例,hda3表示為第一個IDE硬盤上的第三個分區(qū)或擴展分區(qū),hdb2表示為第二個IDE硬盤上的第二個主分區(qū)或擴展分區(qū)。對于SCSI硬盤則標識為"sdx",SCSI硬盤是用"sd"來表示分區(qū)所在設備的類型的,其余則和IDE硬盤的表示方法一樣。
linux****分區(qū)(4) 幾個重要的命令
掛載命令
mount [-參數(shù)][設備名稱][掛載點]
特別說明:在掛載光驅(qū)時,可直接使用mount /mnt/cdrom/
卸載命令
umount [設備名稱]
查看磁盤使用情況
df [參數(shù)]
比如 df -l
查看某個目錄是在哪個分區(qū)
df -h
查看分區(qū)(磁盤)使用情況
df [目錄全路徑]
查看linux系統(tǒng)分區(qū)具體情況
fdisk -l
linux****安裝
linux安裝有兩種方式
1、雙操作系統(tǒng)
2、完全獨立安裝
linux安裝時,分區(qū)是關鍵
1、/boot引導分區(qū) 100M
2、/swap交換分區(qū)一般是你的物理內(nèi)存的2倍,但不要大于256M
3、/根分區(qū)盡可能大
*:samba****服務是必需掌握的,用來于windows文件共享
linux****下shell介紹 shell的概念
概述:每個人在成功登錄linux后,系統(tǒng)會出現(xiàn)不同的提示符號。例如$、~、#等,然后你就可以開始輸入需要的命令,若是命令正確,系統(tǒng)就會依據(jù)命令的要求來執(zhí)行,直到注銷系統(tǒng)為止,在登錄到注銷期間,輸入的每個命令都會經(jīng)常解譯及執(zhí)行。而這個負責的機制就是shell
linux****下shell介紹 shell編程
概述:其實作為命令語言互動式地解釋和執(zhí)行用戶輸入的命令只是shell功能的一個方面,shell還可以用來進行程序設計。它提供了定義變量和參數(shù)的手段以及豐富的程序控制結(jié)構(gòu)。使用shell編程類似于DOS中的處理文件,稱為shell script,雙叫shell程序或shell命令文件。(推薦書《linux命令、編輯器和shell編程》)shell與windows下的批處理文件類似
linux****下shell介紹 shell的分類
概述:shell有很多,但常用的就幾種:
Shell名稱 開發(fā)者 命令名稱
Bourne S.R.Bourne /bin/sh
C Bill Joy /bin/csh
Kom David /bin/ksh
1、查看目前使用的是哪種shell
命令:env (該命令可以顯示當前操作系統(tǒng)的環(huán)境變量)
2、shell的修改
命令:chsh -s /bin/[shell文件名] (不同的shell對命令的解釋不一樣)
linux****下shell介紹 shell的命令補全功能
概述:是指用戶輸入命令時,并不需要輸入完整的命令,而系統(tǒng)自動會找出最符合的名稱。這種功能可以節(jié)省經(jīng)常輸入命令的時間。直接輸入"mk"再按兩下"tab"鍵,出現(xiàn)兩頭兩個字母為"mk"的命令。cat p再按兩下"tab"鍵會出現(xiàn)開頭字母為"p"的所有文件或目錄。
linux****下shell介紹 查閱歷史記錄命令****history
概述:在linux下,我們有時可能希望知道或是使用最近執(zhí)行的命令,history可能會幫上大忙。
1、history 5 :此項說明會顯示最近使用的5個命令
2、!5 :此項說明執(zhí)行歷史編號為5的命令
3、!ls :此項說明執(zhí)行最后一次以"ls"開頭的命令
tcp/ip****基礎 tcp/ip的由來
概述:linux/unix的世界就是網(wǎng)絡的世界。而網(wǎng)絡的基礎就是tcp/ip,所以一個優(yōu)秀的linux/unix程序員必須了解并掌握tcp/ip。
tcp/ip是什么
tcp/ip是unix/linux世界的網(wǎng)絡基礎,在某種意義上,unix網(wǎng)絡就是tcp/ip,而且tcp/ip就是網(wǎng)絡互聯(lián)的標準。它不是一個獨立的協(xié)議,而是一組協(xié)議。(tcp,ip,udp,arp,rarp等協(xié)議)
tcp/ip****基礎 osi與tcp/ip參考模型
|
osi模型(理論)
|
tcp/ip模型(現(xiàn)實)
|
|
應用層(application)
|
應用層:(application)smtp,ftp,telnet
|
|
表示層(presention)
|
傳輸層:(transport)解釋數(shù)據(jù)
|
|
會話層(session)
|
網(wǎng)絡層:(ip)定位ip地址和連接路徑
|
|
傳輸層(transport)
|
鏈路層:(link)與硬件驅(qū)動對話
|
|
網(wǎng)絡層(ip)
| |
|
數(shù)據(jù)鏈路層(link)
| |
|
物理層(physical)
| |
tcp/ip****基礎 ip地址與包的路由傳遞(1)
概述:每個internet上的主機和路由器都有一個ip地址。它包括網(wǎng)絡號和主機號,所有ip地址都是32位的,ip地址按照國際標準的劃分為a,b,c,d,e五種類型。
a類:1.0.0.0至127.255.255.255
b類:128.0.0.0至191.255.255.255
c類:192.0.0.0至223.255.255.255
d類:224.0.0.0至239.255.255.255
e類:240.0.0.0至247.255.255.255
a,b,c類目前用的最多
dos下追蹤IP路由命令:tracert 目標IP或域名
dos下測試網(wǎng)絡是否暢通:ping 目標IP
windows查看ip情況是ipconfig
在linux/unix下查看ip情況的命令是ifconfig
linux****網(wǎng)絡環(huán)境配置(1)
第一種方法:
(1)用root身份登陸,運行setup命令進入到text mode setup utiliy對網(wǎng)絡進行配置,這里可以進行ip,子網(wǎng)掩碼,默認網(wǎng)關,dns的設置。
(2)這時網(wǎng)卡的配置沒有生效,運行/etc/rc.d/init.d/network restart命令
我們剛才作的設置才生效
第二種方法:
(1)ifconfig eth0 X.X.X.X 對網(wǎng)卡進行設置。(臨時生效)
(2)ifconfig eth0 network X.X.X.X 對子網(wǎng)掩碼設置。
對廣播地址和DNS使用默認。
注意:這樣配置網(wǎng)絡將會立即生效。(臨時生效)
第三種方法:
(1)修改/etc/sysconfig/network-scripts/ifcfg-eth0這個文件里屬性可以修改。包括ip,子網(wǎng)掩碼。廣播地址,默認網(wǎng)關。
(2)這時網(wǎng)卡的配置沒有生效。運行/etc/rc.d/init.d/network restart命令
我們剛才作的設置才生效。
這種方法是最底層的修改方法。
****linux****下所有的設備都是一個文件。(這個方法文便以后在linux下編程)**
/etc/sysconfig/network-scripts/ifcfg-eth0文件內(nèi)容
DEVICE=eth0 (驅(qū)動名稱)
ONBOOT=yes (系統(tǒng)啟動時默認設備啟動)
BOOTTPROO=static (指定IP還是自動分配IP。指定IP:static;自動分配IP:dhcp)
IPADDR=192.168.44.22 (本機IP地址)
NETMASK=255.255.255.0 (子網(wǎng)掩碼)
GATEWAY=192.168.44.254 (網(wǎng)關)
在虛擬機下linux與windows如何ping通?
可以使用直接物理橋連;也可以使用自定義特定虛擬網(wǎng)絡。(必需在同一IP段內(nèi)才可以)
RPM****管理
概述:一種用于互聯(lián)網(wǎng)下載包的打包及安裝工具,它包含在某些linux分發(fā)版中。它生成具有.RPM擴展名的文件。RPM是RedHat Package Manager(RedHat軟件包管理工具)的縮寫,這一文件格式名稱雖然打上了RedHat的標志,但是其原始設置理念是開放式的,現(xiàn)在包括OpenLinux/S.U.S.E以及Turbo Linux等Linux的分發(fā)版本都有采用,可以算是公認的行業(yè)標準了。
RPM****包的名稱格式:(適于與以后軟件編程打包命名使用)
apache-1.3.23-11.i386.rpm
apache軟件名稱
1.3.23-11軟件版本號;1.3.23為主版本號,11為副版本號
i386軟件運行的硬件平臺
rpm文件擴展名,代表RPM包
RPM****常用命令
RPM****查詢
rpm -qa :查詢所安裝的所有rpm軟件包
rpm -qa | more
rpm -qa | grep X
rpm -ql 軟件包名 :查詢軟件包中的文件
rpm -ql file
rpm -ql jdk
rpm -q 軟件包名 :查詢軟件包是否安裝
rpm -q xinetd
rpm -q foo
rpm -q xinetd file bash
rpm -qf 文件全路徑名 :查詢文件所屬的軟件包
rpm -qf /etc/passwd
rpm -qf /root/install.log
rpm -qi 軟件包名 :查詢軟件包信息
rpm -qi file
rpm -qp 包文件名 :查詢包的信息對這個軟件包的介紹
rpm -qp jdk-1_5_0-linux-i586.rpm
rpm -qpi jdk-1_5_0-linux-i586.rpm
rpm -qpl jdk-1_5_0-linux-i586.rpm
安裝RPM包
rpm -i RPM包全路徑名稱 :安裝包到當前系統(tǒng) 參數(shù)i=install
rpm -ivh RPM包全路徑名稱 :安裝包到當前系統(tǒng)有提示信息
參數(shù)說明:i=install 安裝;v=verbose 提示;h=hash 進度條
刪除RPM包
rpm -e RPM包的名稱
rpm -e jdk
如果其它軟件包依賴于您要卸載的軟件包,卸載時則會產(chǎn)生錯誤信息。
如:$ rpm -e foo
removing these packages would break dependencies:foo is needed by bar-1.0-1
若讓RPM忽略這個錯誤繼續(xù)卸載(這可不是一個好主意,因為依賴于該軟件包的程序可能無法運行),請使用--nodeps命令行選項。
升級RPM包
rpm -U RPM包全路徑名
rpm -U cvs-1.11.2-10.i386.rpm
samba****詳解
什么是samba
這些年來,windows與linux操作系統(tǒng)各自擁有自己的用戶群和市場。然而在一般公司或?qū)W校里,可能同時有windows和linux主機,windows主機彼此之間可以得用"網(wǎng)上鄰居"來訪問共享資源,NFS也能使linux主機之間實現(xiàn)資源訪問。而samba服務軟件能夠使windows與linux之間實現(xiàn)資源共享。
SMB通信協(xié)議采用的是C/S結(jié)構(gòu),所以SAMBA軟件可分為客戶端及服務端兩部分,通過執(zhí)行SAMBA客戶端程序,linux主機便可使用網(wǎng)絡上的windows主機所共享的資源。而在linux主機上安裝SAMBA服務器,則可以使windows主機訪問SAMBA服務器共享的資源。
samba****軟件的安裝
步驟如下:
1、檢查是否安裝了:samba
rpm -qa | grep samba :此命令會檢查出已經(jīng)安裝了samba軟件包。
若是已經(jīng)安裝了,下面會出現(xiàn)samba軟件包的具體名稱。
2、 mount /mnt/cdrom
cd /mnt/cdrom 找到samba-common-2.2.7a-7.9.0.i386.rpm
客戶和服務器均需要的文件
rpm -ivh samba-common-2.2.7a-7.9.0.i386.rpm
rpm -ivh samba-2.2.7a-7.9.0.i386.rpm (服務器端軟件)
rpm -ivh samba-client-2.2.7a-7.9.0.i386.rpm (客戶端軟件)
cd ~
umount /mnt/cdrom
3、設置samba密碼文件
//先在linux中建立一個普通用戶
//將/etc/passwd中的用戶都加到smbpasswd中
** cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd**
//設置用戶的samba密碼
smbpasswd 用戶名
4、啟動samba服務
service smb start 啟動
service smb stop 停止
service smb restart 重啟
samba****配置
共享資源的基本設置 /etc/samba/smb.conf
1、comment : 針對共享資源所做的說明文字。默認值為空字符串。
comment = dir for todayhero :共享這個目錄為todayhero這個用戶
2、path : 若共享的資源是目錄,是指定該目錄的位置。
path = /tmp : 共享tmp這個目錄
3、guset ok :是否允許用戶不使用帳號和密碼訪問此資源
guset ok = yes : 允許用戶不使用帳號和密碼訪問此資源
guset ok = no : 不允許用戶不使用帳號和密碼訪問此資源
4、hosts allow : 設置連接主機的地址
hosts allow = 192.168.0. server.abc.com :意思是說允許來自192.168.0.或server.abc.com訪問
5、hosets deny : 設置禁止連接的主機地址
hoset deny =192.168.2. : 意思是說不允許來自192.168.2主機訪問此samba服務器的資源。
6、read only : 用于設置共享的資源是否為只讀。
read only = yes : 允許只讀
read only = no : 可以讀寫
7、writable : 設置是否允許寫入
writable = yes : 允許寫入
writable = no : 不允許寫入
8、browseable : 設置用戶是否可看到此共享資源
browseable = yes : 允許用戶看到此資源
browseable = no : 不允許用戶看到此資源
9、available : 設置是否啟用資源共享
available = yes : 啟用資源共享
available = no : 不啟用資源共享
任務調(diào)度命令
概述:
任務調(diào)度:是指系統(tǒng)在某個時間執(zhí)行的特定的命令或程序。
任務調(diào)度分類:
1、系統(tǒng)工作:有些重要的工作必須周而復始的執(zhí)行。如病毒掃描等。
2、個別用戶工作:個別用戶可能希望執(zhí)行某些程序。
設置任務調(diào)度文件:/etc/crontab
設置個人任務調(diào)度。執(zhí)行crontab -e命令。接著輸入任務到調(diào)度文件
例:5 * * * * ls -l /etc/ > /tmp/to.txt
意思說每小時的第五分鐘執(zhí)行l(wèi)s -l /etc/ > /tmp/to.txt命令
任務調(diào)度的使用crontab
1、設置任務 crontab -e
2、每隔一定時間去執(zhí)行
date > /home/mydatal (將當前時間覆蓋寫入mydata1文件中。>為覆蓋寫)
date顯示當前時間
1)希望每天凌晨2:00去執(zhí)行 date >> /home/mydate2 (>>為追加寫)
0 2 * * * date >> /home/mydate2
2)希望每分鐘去執(zhí)行
- date >> /home/mydate2
調(diào)度文件規(guī)則:
字段名稱 說明 范圍
分鐘 每小時中的第幾分鐘執(zhí)行 0-59
小時 每日的第幾個小時執(zhí)行 0-23
日期 每月的第幾天執(zhí)行 1-31
月歷 每年的第幾個月執(zhí)行 1-12
星期 每周的第幾天執(zhí)行 0-6
命令名稱 欲執(zhí)行的命令名稱及其參數(shù)
*1 *2 *3 *4 *5
*1代表分鐘 *2代表小時 *3代表日期 *4代表月歷 *5代表星期
如:0 22 26 5 * 表示星期* 5月 26日 22小時 0分鐘
完整意思為每年5月26日22小時0分執(zhí)行對應任務。*表示設置為無設定
- *代表每分鐘執(zhí)行一次
3、怎樣去調(diào)度多個任務?
1)在crontab -e 中直接寫多個任務 (優(yōu)點:簡單;缺點:太多太亂修改不方便)
2)可以把所有的任務,寫入到一個可執(zhí)行文件(shell編程)
.sh文件為shell文件,chmod 744 mytask.sh
vi mytask.sh
date >> /home/mydate2
cp /home/mydate2 /root/
:wq
crontab -e
* * * * * /root/mytask.sh
4、如何終止任務
終止任務調(diào)度:
crontab -r :終止任務調(diào)度 (多任務多用戶使用時禁用此命令)
crontab -l :列出當前有那些任務調(diào)度
進程的概念和管理
基本概念
1、在linux中,每個執(zhí)行的程序都稱為一個進程。每一個進程都分配一個ID號。
2、每一個進程,都會對應一個父進程,而這個父進程可以復制多個子進程。例如WWW服務器。
3、每個進程都可能以兩種方式存在的。前臺與后臺,所謂前臺進程就是用戶目前的屏幕上可以進行操作的。后臺進程則是實際在操作,但由于屏幕上無法看到的進程,通常使用后臺方式執(zhí)行。
4、一般系統(tǒng)的服務都是以后臺進程的方式存在,而且都會常駐在系統(tǒng)中。直到關機才會結(jié)束。
進程就是正在執(zhí)行的程序
線程(1)輕量級的進程
(2)進程有獨立的地址空間,線程沒有
(3)線程不能獨立存在,它是由進程創(chuàng)建的。(在linux下是fork,在java下是Thread)
(4)相對來講,線程耗費的CPU和內(nèi)存小于進程。
靜態(tài)顯示系統(tǒng)執(zhí)行的進程
ps命令是用來查看目前系統(tǒng)中,有哪些正在執(zhí)行,以及它們執(zhí)行的狀況??梢圆患尤魏螀?shù)
顯示詳細的進程信息
1、 ps -a :意思是說顯示當前終端的所有進程信息。
2、以用戶的格式顯示進程信息。
ps -u :以用戶的格式顯示進程信息。
3、顯示后臺進程運行參數(shù):
ps -x :顯示后臺進程運行的參數(shù)。
4、可以使用ps -aux 顯示全面的進程信息。
PS:顯示的信息選項
字段 說明
PID 進程識別號
TTY 終端機號
TIME 此進程所消CPU的時間
CMD 正在執(zhí)行的命令或進程名
終止進程kill/killall
若是某個進程執(zhí)行一半需要停止時,或是已消耗了很大的系統(tǒng)資源時,此時可以考慮停止該進程。使用kill命令來完成此項任務。
終止某個進程:kill 進程號
kill 16251 :表示終止進程號為16251的進程。
kill -9 16251 :因為有些進程會捕捉某些信號。如果直接不能結(jié)束進程可以用“-9”傳送信息。
killall可以清除進程及進程相關的子進程
動態(tài)監(jiān)控進程top 退出top按q鍵或ctrl+c鍵即可退出
top與ps命令很相似。它們都用來顯示正在執(zhí)行的進程。top與ps最大的不同之處,在于top在執(zhí)行一段時間可以更新正在運行的進程。
1、監(jiān)視特定用戶
top :輸入此命令,按回車鍵,查看執(zhí)行的進程。
u :然后輸入"u"回車,再輸入用戶名,即可。
2、終止指定的進程
top :輸入此命令,按回車鍵,查看執(zhí)行的進程。
k :然后輸入"k"回車,再輸入要結(jié)束的進程ID號。
3、指定系統(tǒng)狀態(tài)更新的時間
top -d 10 :指定系統(tǒng)更新進程的時間為10秒。
14:06:22 up系統(tǒng)時間
4 min, 系統(tǒng)啟動多久
1 user, 當前登陸到linux有多少用戶
load avcragc: 0.02, 0.12, 0.07負載平衡,當前系統(tǒng)的負載情況(可全加除3大
于0.6表示系統(tǒng)負載緊張)
37 processes:當前進程數(shù)
36 sleeping, 休眠狀態(tài)進程數(shù)
1 running, 正在運行進程數(shù)
0 zombie,僵尸進程數(shù) 進程無用后仍占用內(nèi)存的進程數(shù)
0 stopped處于停止狀態(tài)的進程數(shù)
CPU states: 0.0% user 0.1% system 0.0% nice 0.0% iowait 99.8% idle
CPU的狀態(tài) idle為CPU閑置狀態(tài)(越大越好)
Men: 255264k av, 39420k used, 215836k free, 0k shrd, 5520k buff
30632k actv, 140k in_d, 292k in_c
內(nèi)存使用情況
255264k av,內(nèi)存總數(shù)量
39420k used,正在使用內(nèi)存數(shù)量
215836k free,空閑內(nèi)存數(shù)量
Swap: 257032k av, 0k used, 257032k free 19376k cached
swap分區(qū)(虛擬內(nèi)存)使用情況
swap: 257032k av,swap分區(qū)(虛擬內(nèi)存)數(shù)量
0k used, 正在使用虛擬內(nèi)存數(shù)量
257032k free空閑虛擬內(nèi)存數(shù)量
19376k cached緩存內(nèi)存
可用此命令進行釋放echo 3 > /proc/sys/vm/drop_caches 一般不刻意去釋放。
設置系統(tǒng)日期
1、date命令:顯示系統(tǒng)的時間??梢栽谥苯虞斎?date"命令。來查看系統(tǒng)的時間。
2、利用date命令來更改系統(tǒng)的時間。
date MMDDHHMMCCYY.SS:意思是指月月日日時時分分年年年年.秒秒。
3、查看月歷:
cal 3 2002 :查看2002年3月的月歷。
4、查看年歷:
cal 2008 :查看2008的年歷
監(jiān)控網(wǎng)絡狀態(tài)信息
顯示網(wǎng)絡統(tǒng)計信息的命令netstat
此命令用來顯示整個系統(tǒng)目前的網(wǎng)絡情況。例如目前的連接、數(shù)據(jù)包傳遞數(shù)據(jù)、或是路由表內(nèi)容。此命令直接輸入即可使用。
如:netstat -anp (參數(shù)an按端口排序,參數(shù)p是顯示進程號)
檢測主機連接命令ping:
是一種網(wǎng)絡檢查檢測工具。它主要是用檢測遠程主機是否正常,或是兩部主機間的介質(zhì)是否為斷、網(wǎng)線是否脫落或網(wǎng)卡故障。
如:ping 對方IP地址
顯示數(shù)據(jù)包經(jīng)過歷程命令:traceroute
traceroute 目標IP或地址
此命令可以直接輸入使用,用來檢測數(shù)據(jù)包在網(wǎng)絡上傳輸?shù)倪^程。從本機到遠程的主機完整路徑。幫助管理員解決問題。
route
所謂路由是指將數(shù)據(jù)由來源網(wǎng)絡送往目的地網(wǎng)絡的操作。在大型網(wǎng)絡中,路由是非常復雜的,因為數(shù)據(jù)包在抵達目的地時,可能經(jīng)過的節(jié)點有很多,路由表是存儲在路由器或一些其它鏈接設置上的窗體。其中記錄著了到指定目的地的網(wǎng)絡路徑,以及這些路徑的相關數(shù)值。
此命令可以直接輸入使用,來查看本機路由的情況。
MySql****數(shù)據(jù)庫在linux下的使用
概述:Mysql數(shù)據(jù)庫在linux下可以充分發(fā)揮威力,Mysql數(shù)據(jù)庫越來越受到軟件公司的青睞,為什么呢?
(1)免費(2)跨平臺(3)輕(4)支持多并發(fā)
在北京很多軟件公司屬于創(chuàng)業(yè)型的中、小公司。從節(jié)約成本的角度考慮。Mysql特別適合中、小項目。
如何在linux下使用Mysql數(shù)據(jù)庫。
1)把mysql數(shù)據(jù)庫的安裝文件準備好,mount / copy
2)把安裝文件解壓縮
3)繼續(xù)安裝
groupadd mysql
useradd -g mysql mysql
scripts/mysq1_install_db --user=mysql
chown -R root . (修改文件的所有者)
chown -R mysql data (修改date文件夾的所有者)
chgrp -R mysql . (改變用戶組)
啟動mysql
bin/mysqld.safe --user=mysql &
檢查一下,OK,正常啟動
1)把MYSQL安裝文件copy到/home下
2)tar -zxvf 文件名.tar.gz
mv命令為linux下文件改名命令
-
groupadd mysql (創(chuàng)建mysql用戶組)
useradd -g mysql mysql (創(chuàng)建mysql用戶并將mysql用戶放到mysql用戶組)
進入mysql文件夾后才可以執(zhí)行下面語句
scripts/mysq1_install_db --user=mysql (初始化數(shù)據(jù)庫)
chown -R root . (修改文件的所有者, .代表當前文件 ..代表上一級文件或文件夾;參數(shù)R是遞歸也就是文件或文件夾下所有的都繼承)
chown -R mysql data (修改date文件夾的所有者)
chgrp -R mysql . (改變用戶組)
啟動mysql
bin/mysqld.safe --user=mysql & (&表示以后臺的方式啟動)
檢查一下,OK,正常啟動
如何進入mysql
cd /bin
./mysql -u root -p
如果希望在任何目錄下都可以進入mysql則需要在/root/.bash_profile中添加路
徑。(所有用戶都可以使用可以在/etc/.bash_profile文件)
****修改env PATH路徑需在.bash_profile
cd /root
.bash_profile
注銷后登陸
Mysql****數(shù)據(jù)庫在linux下的使用
3)測試mysql數(shù)據(jù)庫是否可以在linux下正確使用。
建立數(shù)據(jù)庫和表
加入部分數(shù)據(jù)
編寫一個showUsers.java文件,在控制臺顯示用戶
**********特別注意mysql的驅(qū)動要存放的位置!要放在jdk下,主目錄下/jre/lib/ext**
mysql****數(shù)據(jù)庫的使用 quit命令是退出mysql操作;drop table 表名;(刪除表)
1)進入mysql
2)建立數(shù)據(jù)庫和表
mysql> create database spdb1; (建立數(shù)據(jù)庫)
mysql> show database; (查看數(shù)據(jù)庫)
3)建表
首先
mysql> use spdb1; (在spdb1數(shù)據(jù)庫中建表)
mysql> create table users(userId varchar(8),userName varchar(8)); (建立users表)
mysql> show tables; (查看表)
4)加入數(shù)據(jù)
mysql> insert into users valucs('0001','alex');p (將數(shù)據(jù)寫入users表中)
mysql> select * from users; (查看users表中數(shù)據(jù))
mysql> desc users; (查看數(shù)據(jù)庫users表結(jié)構(gòu))
5)使用java編寫一個ShowUser.java文件,顯示數(shù)據(jù)庫中的數(shù)據(jù)
vi ShowUser.java
java****源碼
** import java.sql.;*
** public class Showusers{**
** //main function**
** public static void main(String []args){**
** //conect to mysql database**
** try{**
** Class.forName("com.mysql.jdbc.Driver");**
** Connection ct=DriverManager.getConnection**
**("jdbc:mysql://127.0.0.1:3306/spdb1?user=root&password="); **
** Statement sm=ct.createStatement();**
** ResultSet rs=sm.executeQuery("select * from users")**
** while(rs.next()){**
** System.out.println("username="+rs.getString(2));**
** }**
** }catch(Exception e){**
** e.printStackTrace();**
** }**
** } **
** }**
}
:wq
javac ShowUsers.java
找到jdk
jdk****在/home/j2sdk1.4.2_07/jre/lib/ext
java ShowUsers
4)****如何使用命令行來備份和恢復mysql數(shù)據(jù)庫
備份: mysqldump -u root -p密碼 數(shù)據(jù)庫名 > data.bak (在mysql下的bin目
錄下執(zhí)行)
建空數(shù)據(jù)庫mysql> create database spdb1;
恢復: mysql -u root -p密碼 數(shù)據(jù)庫名 < data.bak (在mysql下的bin目錄下
執(zhí)行,必須先建立一個空的數(shù)據(jù)庫才可以恢復)
cd /mysql/bin
備份:./mysqldump -u root -p密碼 數(shù)據(jù)庫名 > /路徑/data.bak
恢復: mysql -u root -p密碼 數(shù)據(jù)庫名 < data.bak
神奇的ssh
概述:ssh(securt shell)是一款集遠程操作linux和進行文件上傳和下載的軟件,那是相當?shù)暮糜醚剑谲浖編缀跛械膌inux程序員都會使用ssh。安全,方便是它最大的特點。
1、安裝
linux的ssh服務端是在安裝linux時自動安裝一個sshd并默認是啟動的。ssh
服務端的端口是22
windows下安裝ssh客戶端
2、使用ssh客戶端登陸到linux(前提是linux下的sshd服務啟動)
補充講解linux重要內(nèi)容
linux目錄結(jié)構(gòu)
/bin 普通用戶的可執(zhí)行命令,系統(tǒng)的任何用戶都可以執(zhí)行該目錄中的命令
/boot 存放linux操作系統(tǒng)啟動時所需使用的文件
/dev 系統(tǒng)中的所有設備文件
/etc 系統(tǒng)中的配置文件
/home 普通用戶的宿主目錄,每個用戶在該目錄下都有一個與用戶名同名的目錄
/mnt 中的子目錄用于系統(tǒng)中可移動設備的掛載點
/root 超級用戶root的宿主目錄
/sbin 系統(tǒng)的管理命令,普通用戶不能執(zhí)行他們
/tmp 系統(tǒng)的臨時目錄
/usr 系統(tǒng)應用程序和相關文件
/var 系統(tǒng)中經(jīng)常變化的文件如日志文件和用戶郵件
當前目錄 pwd命令可以顯示當前目錄
相對路徑 以當前目錄開始詢找目標文件或文件夾 . .. ~
絕對路徑 以根目錄開始詢找目錄文件或文件夾 /目錄
工作目錄 就是執(zhí)行文件所在的目錄
運行級別
命令:init [0123456]
運行級別 0:關機
1:單用戶
2:多用戶狀態(tài)沒有網(wǎng)絡服務
3:多用戶狀態(tài)有網(wǎng)絡服務
4:系統(tǒng)未使用保留給用戶
5:圖形界面
6:系統(tǒng)重啟
常用運行級別是3和5,要修改默認的運行級別可改文件
/etc/inittab的id:5:initdefault:這一行中的數(shù)字
常用命令
pwd :顯示當前工作目錄
cd :改變目錄 (cd直接回到用戶目錄)
ls :列出文件和目錄
ls -a :顯示隱藏文件
ls -l :顯示長列表格式
mkdir :建立目錄
rmdir :刪除空目錄
touch :建立空文件
cp :復件命令 cp -r dir1 dir2 遞歸復制命令(復制子目錄信息) 參數(shù)f
覆蓋
mv :移動文件和改文件名
rm :刪除文件和目錄
rm -rf * :刪除所有內(nèi)容(包括目錄和文件) 參數(shù)r遞歸 參數(shù)f強制
ln :建立符號連接(類似windows的快捷方式)
ln -s 源 目錄
ln -s /etc/inittab inittab (inittab指向?qū)嶋H文件/etc/initab)
more :顯示文件內(nèi)容,帶分頁
less :顯示文件內(nèi)容帶分頁
grep :在文本中查詢內(nèi)容 (grep -n "內(nèi)容" 文件名/目錄*)
| :管道命令 | : find / -name *.html |grep bookmark
在find的結(jié)果中查找字符串"bookmark",顯示包含這個字符串的文件
find :搜索文件及目錄
在linux中,因為文件系統(tǒng)是以級別式的結(jié)構(gòu)來組成的,所以要在整
個系統(tǒng)中找到特定的文件和目錄并不是件容易的事,而"find"命令
可以解決上述問題。
find的使用
在特定的目錄下搜索并顯示指定名稱的文件和目錄
搜索一段時間內(nèi)被存取/變更的文件或目錄
find /home -amin -10 十分鐘內(nèi)存取的文件或目錄
find /home -atime -10 十小時內(nèi)存取的文件或目錄
find /home -cmin -10 十分鐘內(nèi)更改過的文件或目錄
find /home -ctime +10 十小時前更改過的文件或目錄
按文件大小進行搜索文件
find /home -size +10k 意思是說查找/home目錄下大小為10k的文件
重定向命令 > 覆蓋 >>追加 <導入
ls -l > a.txt 列表的內(nèi)容寫入文件a.txt中(覆蓋寫)
ls -al >> aa.txt 列表的內(nèi)容追加到文件aa.txt
從文件中輸入信息database.program < database.data
shell****使用
命令歷史和互動:用上下箭頭鍵可以重復以前所輸入的命令
命令完成功能:用tab鍵能自動完成相關命令,再次按tab可得到清單
shell腳本文件:是一個文本文件/命令集合/有執(zhí)行的權(quán)限chmod 744 文件名
執(zhí)行方式(./文件名)/(.sh后綴名的文件是shell文件)
用戶登錄后自動執(zhí)行的shell腳本文件:
.bashrc位于主目錄下
它之前執(zhí)行系統(tǒng)的腳本/etc/bashrc主要是基本配置數(shù)據(jù) (/etc/bashrc相當于windows下的自動批處理文件autoexec.bat)
.bash_profile位于主目錄下
它之前執(zhí)行系統(tǒng)的腳本/etc/profile主要是配置環(huán)境變更
當希望臨時加入一個路徑時,可使用export
用export PATH=HOME/bin:/root/test/tl
輸出環(huán)境變量PATH引用原來的值HOME表示工作主目錄:是路徑分隔符
已定義好的環(huán)境變量:
SHELL :默認shell
PATH :路徑
USER :當前登錄用戶的用戶名
顯示變量內(nèi)容:echo $PATH
echo $USER
echo $SHELL
通配符: * 代表多個字母或數(shù)字
? 代表一個字母或數(shù)字
ls a* ls a? ls ?at? ls f080[1-6].tif
轉(zhuǎn)義字符: \
ls /mnt/winl/My\ Documents
引號:
export NAME-Michael
echo Welcome $NAME,the date is date單引號 - shell不處理
任何變量和命令
echo 'Welcome $NAME,the date is date'雙引號 - 處理變量但不處理命令
echo "Welcome $NAME,the date is date"反引號 - 把引號中的每個單詞作
為一個命令,如果是變量則先求值然后作為一個命令處理
echo "Welcome $NAME,the date is `date`"
別名命令:alias顯示系統(tǒng)當前定義的所有alias
alias 別名='命令或命令組'
alias cp='cp -i'
alias ll='ls -l --color=tty'
linux****啟動過程分析
runlevel命令 可以查看當前的運行級別
linux系統(tǒng)啟動過程如下:
a)BIOS自檢
b)啟動GRUB/LILO
c)運行LINUX內(nèi)核并檢測硬件
d)運行系統(tǒng)的第一個進程init
e)init讀取系統(tǒng)引導配置文件/etc/inittab中的信息進行初始化
f)/etc/rc.d/rc.sysinit系統(tǒng)初始化腳本
g)/etc/rc.d/rcX.d/[KS]* - 根據(jù)運行級別X配置服務
終止以"K"開頭的服務
啟動以"S"開頭的服務
h)/etc/rc.d/rc.local 執(zhí)行本地特殊配置
i)其他特殊服務
壓縮和解壓問題
以zip和unzip處理.zip文件
1、zip命令的基本使用方法:
zip file.zip [要壓縮的文件]
zip后接壓縮后的文件名,在它的后面輸入要壓縮的文件即可。
2、壓縮后,自動刪除原文件
zip -m file.zip to.txt
意思是說把to.txt文件壓縮成file.zip文件,to.txt會自動刪除的。
3、將子目錄一起壓縮
zip -r file.zip [文件夾路徑]
將當前目錄下的子目錄一起壓縮
4、忽略子目錄的內(nèi)容
zip -j file.zip
5、將已壓縮的或沒有必要壓縮的文件去掉
zip -n .mpg: .jpg: .gif
第一種文件中間要用“:”分開。
6、壓縮某一日之后的文件
zip -t 102002 file.zip
意思是指將當前目錄下的2002年10月20日之后文件壓縮
7、不壓縮鏈接文件的原文件
zip -y file.zip
8、壓縮率問題。-1—-9:-9的壓縮率最高
zip -9 file.zip
9、將不需要壓縮的文件排除在外
zip file.zip * -x file2.txt
在壓縮時,將當前目錄內(nèi)的file2.txt文件排除在外
以unzip命令進行.zip文件的解壓縮
1、直接解壓縮文件
unzip file.zip
2、排除不需要解壓縮的文件
unzip file.zip -x file2
意思是說除了file2文件外,其他的文件解壓縮
3、查看壓縮包的內(nèi)容
unzip -Z file.zip
查看file.zip壓縮包的內(nèi)容。也可用"-l"、"-v"來查看壓縮包的內(nèi)容
以gzip和gunzip處理.gz文件
1、直接解壓縮文件
unzip file.zip
2、排除不需要解壓縮的文件
unzip file.zip -x file2
意思是說除了file2文件外,其他的文件都解壓縮
3、查看壓縮包的內(nèi)容
unzip -Z file.zip
查看file.zip壓縮包的內(nèi)容。也可以使用"-l"、"-v"來查看壓縮包的內(nèi)容
4、解壓命令
gunzip file.gz或gzip -d file.gz
gzip****與gunzip壓縮與解壓縮的用法
Linux壓縮保留源文件的方法:
gzip –c filename > filename.gz
Linux解壓縮保留源文件的方法:
gunzip –c filename.gz > filename
gunzip的用法
1.作用
gunzip命令作用是解壓文件,使用權(quán)限是所有用戶。
2.格式
gunzip [-acfhlLnNqrtvV][-s ][文件...]
或者gunzip [-acfhlLnNqrtvV][-s ][目錄]
3.主要參數(shù)
-a或--ascii:使用ASCII文字模式。
-c或--stdout或--to-stdout:把解壓后的文件輸出到標準輸出設備。
-f或-force:強行解開壓縮文件,不理會文件名稱或硬連接是否存在,以及該文
件是否為符號連接。
-h或--help:在線幫助。
-l或--list:列出壓縮文件的相關信息。
-L或--license:顯示版本與版權(quán)信息。
-n或--no-name:解壓縮時,若壓縮文件內(nèi)含有原來的文件名稱及時間戳記,則將其忽略不予處理。
-N或--name:解壓縮時,若壓縮文件內(nèi)含有原來的文件名稱及時間戳記,則將其回存到解開的文件上。
-q或--quiet:不顯示警告信息。
-r或--recursive:遞歸處理,將指定目錄下的所有文件及子目錄一并處理。
-S或--suffix:更改壓縮字尾字符串。
-t或--test:測試壓縮文件是否正確無誤。
-v或--verbose:顯示指令執(zhí)行過程。
-V或--version:顯示版本信息。
4.說明
gunzip是個使用廣泛的解壓縮程序,它用于解開被gzip壓縮過的文件,這些壓縮文件預設最后的擴展名為“.gz”。事實上,gunzip就是gzip的硬連接,因此不論是壓縮或解壓縮,都可通過gzip指令單獨完成。
linux****下java網(wǎng)絡編程 -my qq
linux下網(wǎng)絡編程是linux最讓程序員著迷的地方,我們看看如何在linux進行網(wǎng)絡編程。最終大家可以在這個基礎上擴展為my qq的程序,并且會使用到mysql數(shù)據(jù)庫。
你將學習到:
1、如何使用java進行socket編程
2、如何在java中對mysql數(shù)據(jù)庫操作
3、windows和linux網(wǎng)絡通訊
4、了解什么是網(wǎng)絡服務這個晦澀的概念
**linux****下java開發(fā)my qq server **
vi MyServerText.java
import java.io.*; //引用java.io包
import java.net.*; //引用.net包
//服務器端
public class MyServerText {
public static void main(String []args){
try{
//創(chuàng)建ServertSocket
ServertSocket ss=new ServerSocket(8888);
System.out.println("i am listening");
//監(jiān)聽,直到某個客戶端來連接,一但連接成功,就會得到
//Socket[好象是一個數(shù)據(jù)管道]
Socket s=ss.accept();
//可以讀取從客戶端發(fā)送的信息
InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(isr);
String kk=br.readLine();
System.out.println("client send :::"+kk);
//從服務器端,回一個消息
OutputStreamWriter osw=new OutputStreamWriter(s.getOutputStream());
PrintWriter pw=new PrintWriter(osw,true);
pw.println("i get your mes:"+kk);
} cath (Excption e) {
e.printStackTrace();
//TODO: handle exception
}
}
}
MyClient
import java.io.*; //引用java.io包
import java.net.*; //引用.net包
//客戶端
public class MyClient {
public static void main(String []args){
try {
//連接ip:和port
Socket s=new Socket("192.168.222.66",8888);
//通過文件流發(fā)送消息
OutputStreamWriter osw=new OutputStreamWriter(s.getOutputStream());
BufferedWriter bw=new BufferedWriter(osw);
PrintWriter pw=new PrintWriter(bw,true);
//發(fā)送
pw.println("hello,world!!");
//讀取從服務器回送的信息
InputStreamReader isr=new InputStreamReader(s.getInputStream());
BufferedReader br=new BufferedReader(isr);
String response=br.readLine();
System.out.println("server response is :::"+response);
} cath (Excption e) {
e.printStackTrace();
}
}
}