① linux/unix -shell值iptables基礎知識
原文參考:
iptables防火牆可以用於創建過濾判手(filter)與NAT規則。所有Linux發行版都能使用iptables,因此理解如何配置 iptables將會幫助你更有效地管理Linux防火牆。如果你是第一次接觸iptables,你會覺得它很復雜,但是一旦你理解iptables的工 作原理,你會發現其實它很簡單。
首先介紹iptables的結構:iptables -> Tables -> Chains -> Rules. 簡單地講,tables由chains組成,而chains又由rules組成。如下圖所示。 [圖片上傳失敗...(image-ba5408-1536195185275)]
圖: IPTables Table, Chain, and Rule Structure
一、iptables的表與鏈
iptables具有Filter, NAT, Mangle, Raw四種內建表啟沖塵:
1. Filter表
Filter表示iptables的默認表,因此如果你沒有自定義表,那麼就默認使用filter表,它具有以下三種內建鏈:
2. NAT表
NAT表有三種內建鏈:
3. Mangle表
Mangle表用於指定如何處理數據包。它能改變TCP頭中的QoS位。Mangle表具有5個內建鏈:
4. Raw表
Raw表用於處理異常,它具有2個內建鏈:
5.小結
下圖展示了iptables的三個內建表:
[圖片上傳失敗...(image-753d8c-1536195185272)]
圖: IPTables 內建表
二、IPTABLES 規則(Rules)
牢記以下三點式理解iptables規則的關鍵:
目標值(Target Values)
下面是你可以在target里指定的特殊值:
如果你執行iptables –list你將看到防火牆上的可用規則。下例說明當前系統沒有定義防火牆,你可以看悄禪到,它顯示了默認的filter表,以及表內默認的input鏈, forward鏈, output鏈。
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
查看mangle表:
查看NAT表:
查看RAW表:
!注意:如果不指定 -t 選項,就只會顯示默認的 filter 表。因此,以下兩種命令形式是一個意思:
(or)
以下例子表明在filter表的input鏈, forward鏈, output鏈中存在規則:
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all — 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all – 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all – 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp – 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp – 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah – 0.0.0.0/0 0.0.0.0/0
5 ACCEPT udp – 0.0.0.0/0 224.0.0.251 udp dpt:5353
6 ACCEPT udp – 0.0.0.0/0 0.0.0.0/0 udp dpt:631
7 ACCEPT tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
8 ACCEPT all – 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
9 ACCEPT tcp – 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
10 REJECT all – 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
以上輸出包含下列欄位:
三、清空所有iptables規則
在配置iptables之前,你通常需要用iptables –list命令或者iptables-save命令查看有無現存規則,因為有時需要刪除現有的iptables規則:
iptables –flush
或者
iptables -F
這兩條命令是等效的。但是並非執行後就萬事大吉了。你仍然需要檢查規則是不是真的清空了,因為有的linux發行版上這個命令不會清除NAT表中的規則,此時只能手動清除:
iptables -t NAT -F
四、永久生效
當你刪除、添加規則後,這些更改並不能永久生效,這些規則很有可能在系統重啟後恢復原樣。為了讓配置永久生效,根據平台的不同,具體操作也不同。下面進行簡單介紹:
1.Ubuntu
首先,保存現有的規則:
iptables-save > /etc/iptables.rules
然後新建一個bash腳本,並保存到 /etc/network/if-pre-up.d/ 目錄下:
iptables-restore < /etc/iptables.rules
這樣,每次系統重啟後iptables規則都會被自動載入。
!注意:不要嘗試在.bashrc或者.profile中執行以上命令,因為用戶通常不是root,而且這只能在登錄時載入iptables規則。
2.CentOS, RedHat
service iptables save
service iptables stop
service iptables start
查看當前規則:
cat /etc/sysconfig/iptables
五、追加iptables規則
可以使用iptables -A命令追加新規則,其中 -A 表示 Append 。因此, 新的規則將追加到鏈尾。
一般而言,最後一條規則用於丟棄(DROP)所有數據包。如果你已經有這樣的規則了,並且使用 -A 參數添加新規則,那麼就是無用功。
1.語法
iptables -A chain firewall-rule
2.描述規則的基本參數
以下這些規則參數用於描述數據包的協議、源地址、目的地址、允許經過的網路介面,以及如何處理這些數據包。這些描述是對規則的基本描述。
-p 協議(protocol)
-s 源地址(source)
-d 目的地址(destination)
-j 執行目標(jump to target)
-i 輸入介面(input interface)
-o 輸出(out interface)
3.描述規則的擴展參數
對規則有了一個基本描述之後,有時候我們還希望指定埠、TCP標志、ICMP類型等內容。
–sport 源埠(source port)針對 -p tcp 或者 -p udp
–-dport 目的埠(destination port)針對-p tcp 或者 -p udp
-–tcp-flags TCP標志 針對-p tcp
-–icmp-type ICMP類型 針對-p icmp
4.追加規則的完整實例:僅允許SSH服務
本例實現的規則將僅允許SSH數據包通過本地計算機,其他一切連接(包括ping)都將被拒絕。
iptables -F
iptables -A INPUT -i eth0 -p tcp –dport 22 -j ACCEPT
iptables -A INPUT -j DROP
六、更改默認策略
上例的例子僅對接收的數據包過濾,而對於要發送出去的數據包卻沒有任何限制。本節主要介紹如何更改鏈策略,以改變鏈的行為。
1. 默認鏈策略
/!警告 :請勿在遠程連接的伺服器、虛擬機上測試!
當我們使用-L選項驗證當前規則是發現,所有的鏈旁邊都有 policy ACCEPT 標注,這表明當前鏈的默認策略為ACCEPT:
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp – anywhere anywhere tcp dpt:ssh
DROP all – anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
這種情況下,如果沒有明確添加DROP規則,那麼默認情況下將採用ACCEPT策略進行過濾。除非:
a)為以上三個鏈單獨添加DROP規則:
iptables -A INPUT -j DROP
iptables -A OUTPUT -j DROP
iptables -A FORWARD -j DROP
b)更改默認策略:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
糟糕!!如果你嚴格按照上一節的例子配置了iptables,並且現在使用的是SSH進行連接的,那麼會話恐怕已經被迫終止了!
為什麼呢?因為我們已經把OUTPUT鏈策略更改為DROP了。此時雖然伺服器能接收數據,但是無法發送數據:
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT tcp – anywhere anywhere tcp dpt:ssh
DROP all – anywhere anywhere
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy DROP)
target prot opt source destination
七、配置應用程序規則
盡管5.4節已經介紹了如何初步限制除SSH以外的其他連接,但是那是在鏈默認策略為ACCEPT的情況下實現的,並且沒有對輸出數據包進行限 制。本節在上一節基礎上,以SSH和HTTP所使用的埠為例,教大家如何在默認鏈策略為DROP的情況下,進行防火牆設置。在這里,我們將引進一種新的 參數-m state,並檢查數據包的狀態欄位。
1.SSH
iptables -A INPUT -i eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT
如果伺服器也需要使用SSH連接其他遠程主機,則還需要增加以下配置:
iptables -A OUTPUT -o eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT
2.HTTP
HTTP的配置與SSH類似:
iptables -A INPUT -i eth0 -p tcp –dport 80 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp –sport 80 -m state –state ESTABLISHED -j ACCEPT
3.完整的配置
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -i eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp –dport 22 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp –sport 22 -m state –state ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp –dport 80 -m state –state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp –sport 80 -m state –state ESTABLISHED -j ACCEPT
References
[1] Linux Firewall Tutorial: IPTables Tables, Chains, Rules Fundamentals
[2] IPTables Flush: Delete / Remove All Rules On RedHat and CentOS Linux
[3] Linux IPTables: How to Add Firewall Rules (With Allow SSH Example)
[4] Linux IPTables: Incoming and Outgoing Rule Examples (SSH and HTTP)
[5] 25 Most Frequently Used Linux IPTables Rules Examples
[6] man 8 iptables
② 計算機上的shell是什麼
計算機上的shell是殼(用來區別於核)的意思,是指「提供使用者使用界面」的軟體(命令解析器)。
它類似於DOS下的command和後來的cmd.exe。它接收用戶命令,然後調用相應的應用程序。同時它又是一種程序設計語言。作為命令語言,它互動式解釋和執行用戶輸入的命令或者自如鍵動地解釋和執行預先設定好的一連串的命令;作為程序設計語言,它定義了各種變數和參數,並提供了許多在高級語言中才具有的控制結構,包括循環和分支。在排序演算法中,Shell是希爾排序的名稱。
文字操作系統與外部最主要的介面就叫做shell。shell是操作系統最外面的一層。shell管理你與操作系統之間的交互:等待你輸入,向操作系統解釋你的輸入,並且處理各種各樣的操作系統的輸出結果。shell提供了你與操作系統之間通訊的方式。這種通訊可以以交互方式(從鍵團橡搭盤輸入,並且可以立即得到響應),或者以shell script(非交互)方式執行。shell script是放在文件中的一串shell和操作系統命令,它們可以被重復使用。本質上,shell script是命令行命令簡單的組塌拿合到一個文件裡面。
③ linux常用的shell有哪些
最常用的當然是bash這個shell了,不需要多說,因為大部分Linux發行版都默認是這回個shell;還有C shell用戶也很多,答因為它的語法和C語言有點像;還有一個ash,念做A Shell,在智能路由器系統OpenWrt、LEDE上作為默認shell,話說玩路由器Linux系統OpenWrt的也不少啊,好多硬體論壇上都知道這個系統,所以ash也算是常用的Linux shell吧。
④ Linux Shell是什麼
Shell,英文本意是外殼,Linux Shell 就是 Linux 操作系統的外殼,為用戶提供使用操作系統的介面,是 Linux 系統用戶交互的重要介面。登錄 Linux 系統或者打開 Linux 的終端,都將會啟動 Linux 所使用的 Shell。
Linux Shell 一個命令解釋器,是 Linux 下最重要的交互界面,從標准輸入接收用戶命令,將命令進行解析並傳遞給內核,內核則根據命令,作出相應的動作,如果有反饋信息,則輸出到標准輸出上,示意過程如下圖所示。嵌入式 Linux 的標准輸入和輸出都是串口終端。你可以去看一下M283-ARM9核心板
⑤ 求助:LINUX常用SHELL命令
分類: 電腦/網路 >> 操作系統/系統故障
問題描述:
歡迎大家的投稿!!!!!!!
解析:
LINUX常用命令
1 文件與目錄操作命令
1.1文件內容查詢命令
grep、fgrep、egrep
CODE:[Copy to clipboard]語法:grep[選項][查找模式][文件名1,文件名2,……]
選項:
QUOTE:
-E 每個模式作為一個擴展的正則表達式對待
-F 每個模式作為一組固定字元串對待,而不作為正則表達式
-i 比較時不區分大小寫
-l 顯示首次匹配匹配串所在的文件名並用換行符將其分開。當在文件中多次出現匹配串時,不重復顯示次文件名;
-x 只顯示整行嚴格匹配的行
1.2文件查找命令 find、locate
語法:
CODE:[Copy to clipboard]find 起始目錄 尋找條件 操作
以名稱和文件屬性查找
QUOTE:
-name『字串『 查找文件名匹配所給字串的所有文件,字串內可用通配符*、?、[]。
-lname『字串『 查找文件名匹配所給字串的所有符號鏈接文件,字串內可用通配符*、?、[]。
-gid n 查找屬於ID號為n的用戶組的所有文件。
-uid n 查找屬於ID號為n的用戶的所有文件。
-group『字串『 查找屬於用戶組名為所給字串的所有的文件。
-user『字串『 查找屬於用戶名為所給字串的所有的文件。
-path『字串『 查找路徑名匹配所給字串的所有文件,字串內可用通配符*、?、[]。
-perm 許可權 查找具有指定許可權的文件和目錄,許可權的表示可以如711、644。
-type x 查找類型為 x的文件,
語法:locate 相關字
1.3文件的復制、刪除和移動命令
文件復制命令
CODE:[Copy to clipboard]cp [選項] 源文件或目錄 目標文件或目錄
選項:
QUOTE:
- a 通常在拷貝目錄時使用
-d 拷貝時保留連接
-f 刪除已經存在的目標文件而不提示
-i 和f選項相反
-p 此時cp除復制源文件內容外,還將其修改的時間和訪問許可權也復制到新文件中
-r 若給出的源文件是一目錄文件,此時cp將遞歸復制該目錄下的所有的子目錄和文件,此時目標文件必須為一個目錄名;
-l 不作拷貝,只是鏈接文件
文件移動命令
CODE:[Copy to clipboard]mv[選項] 源文件或目錄 目標文件或目錄
QUOTE:
-i 互動式操作
-f 禁止互動式操作
文件刪除命令
CODE:[Copy to clipboard]rm[選項] 文件…
QUOTE:
-f 忽略不存在的文件,從不給出提示
-r 指示rm將參數中列出的全部目錄和子目錄均遞歸地刪除
-i 進行互動式刪除
1.4文件鏈接命令
CODE:[Copy to clipboard]ln [選項] 目標 [鏈接名] 或 ln [選項] 目標 目錄
QUOTE:
選項:
- s 建立符號鏈接
1.5目錄的創建和刪除命令
mkdir 創建一個目錄
語法:
CODE:[Copy to clipboard]mkdir [選項] dirname
選項:
- m 對新建目錄設置存取許可權
-p 可以是一個路徑名稱。此時若路徑中的某些目錄尚不存在,加上此選項後,系統將自動建立好那些尚不存在的目錄,即一次可以建立多個目錄。
rmdir 刪除空目錄
語法:
CODE:[Copy to clipboard]rmdir [選項] dirname
QUOTE:
選項:
- p 遞歸刪除目錄dirname,當子目錄刪除後其父目錄為空時,也一同被刪除。
1.6改變工作目錄,顯示目錄內容命令
1、改變工作目錄:
CODE:[Copy to clipboard]cd [directory]
2、顯示當前工作的目錄的絕對路徑:
CODE:[Copy to clipboard]pwd
3、顯示目錄內容:
CODE:[Copy to clipboard]ls [選項] [目錄或是文件]
QUOTE:
選項:
- a 顯示指定目錄下所有子目錄與文件,包括隱藏文件;
-c 按照文件的修改時間排序
-C 分成多列顯示各項
-d 如果參數是目錄,只顯示其名稱而不顯示其下的個文件
-F 在目錄名後面標記「/」,可執行文件後面標記「*」,符號鏈接後面標記「@」,管道(或FIFO)後面標記「|」,socket文件後面標記「=」。
-l 以長格式來顯示文件的詳細信息
-L 若指定的名稱為一個符號鏈接,則顯示鏈接所指向的文件
-t 顯示時按修改時間而不是名字排序
-u 顯示時按文件上次存取的時間而不是名字排序
4、改變文件或目錄的訪問許可權命令
CODE:[Copy to clipboard]chmod [who] [+| - | = ] [mode] 文件名?
QUOTE:
Who選項:
- u表示用戶,即文件和目錄的所有者
-g表示同組用戶
-o(other)表示其他用戶
-a (all)表示所有用戶
QUOTE:
操作符號:
+ 添加某個許可權 - 取消某個許可權
= 賦予給定許可權並取消其他所有的許可權(如果有的話)
QUOTE:
mode 選項:
- r 可讀
-w 可寫
-x 可執行
CODE:[Copy to clipboard]chgrp [-R] group filename? 改變目錄或文件所屬的組
CODE:[Copy to clipboard]chown [-Rv] 用戶或組 文件
1.7備份與壓縮命令
1、tar命令 為文件和目錄創建檔案
語法:
CODE:[Copy to clipboard]tar [主選項+輔助選項] 文件或者目錄
QUOTE:
u 主選項
c 創建新的檔案文件。如果用戶想備份一個目錄或是一些文件,則選此項
r 把要存檔的文件追加到檔案文件的末尾
t 列出檔案文件的內容,查看已經備份了哪些文件;
u 更新文件
x 從檔案文件中釋放文件;
u 輔助選項
b 該選項為磁帶機設定的,其後跟一位數字,用來說明區塊的大小,系統預設值為20
f 使用檔案文件或設備,這個選項通常是必選的
k 保存已經存在的文件。例如把某個文件還原,在還原的過程中,遇到相同的文件,不會進行覆蓋;
m 在還原文件時,把所有文件的修改時間設定為現在;
M 創建多卷的檔案文件,以便在幾個磁碟中存放;
v 詳細報告tar處理的文件信息
w 每一步都要求確認
z 用gzip來壓縮/解壓縮文件
2、gzip命令 壓縮/解壓縮命令
語法:
CODE:[Copy to clipboard]gzip [選項] 壓縮(解壓縮)的文件名
QUOTE:
選項:
-c 將輸出寫到標准輸出上,並保留原有文件
-d 將壓縮文件解壓
-l 顯示每個壓縮文件的詳細信息
-r 遞歸式地查找指定目錄並壓縮其中的所有文件或者是解壓縮
-t 測試、檢查壓縮文件是否完整
-v 對每一個壓縮和解壓的文件,顯示文件名和壓縮比
3、unzip 命令
用MS windows下的壓縮軟體winzip壓縮的文件在linux系統下展開
語法:
CODE:[Copy to clipboard]unzip [選項] 壓縮文件名.zip
QUOTE:
選項:
-x 文件列表 解壓縮文件,但不包括指定的file文件
-v 查看壓縮文件目錄,但不解壓
-t 測試文件有無損壞 ,但不解壓
-d 目錄 將壓縮文件解到指定目錄下
-z 只顯示壓縮文件的註解
-n 不覆蓋已經存在的文件
-o 覆蓋已經存在的文件且不要求用戶確認
-j 不重建文檔的目錄結構,把所有文件解壓到同一目錄下
1.8在LINUX環境下運行DOS命令
linux系統提供了一組稱為mtools的可移植工具,可以讓用戶輕松地從標準的DOS軟盤上讀寫文件和目錄。
QUOTE:
mcd 目錄名 改變MSDOS目錄
m 源文件 目標文件 在MSDOS和UNIX之間復制文件;
mdel 目錄名 刪除MSDOS目錄
mdir 目錄名 顯示MSDOS目錄
mformat 驅動器號 在低級格式化的軟盤上創建MSDOS文件系統
rnlabel 驅動器號 產生MSDOS卷標
mmd 目錄名 刪除MSDOS目錄
mren 源文件 目標文件 重新命名已存在的MSDOS文件
mtype 文件名 顯示MSDOS文件的內容
2 設備管理命令
1)linux採用下面的形式定義一個IDE硬碟:
CODE:[Copy to clipboard]/dev/hd[drive][partition]
2)SCSI硬碟使用同樣的機製表示:
CODE:[Copy to clipboard]/dev/sd[drive][partition]
3)對於一般的LINUX分區,可以用mkfs將其格式化並生成文件系統,命令如下:
CODE:[Copy to clipboard]mk2fs –c <partition>; <size>;
4)裝載文件系統:
CODE:[Copy to clipboard]mount –t ext2 [-o optioms] partition mountpiont
其中,
QUOTE:
-t為指定裝載文件系統的類型;
-o指定一些選項,如只讀ro,可讀可寫rw等等;
partition定義分區名稱;
mountpiont定義文件系統被裝載的目錄名稱。
5)裝載CD-ROM文件系統:
CODE:[Copy to clipboard]mount –t iso9660 –r /dev/cdrom /mnt/cdrom
6)裝載軟碟機文件系統:
CODE:[Copy to clipboard]mount –t msdos –rw /dev/fd0 /dev/mnt/floppy
7)卸載文件系統
CODE:[Copy to clipboard]umount /mnt/cdrom
磁帶設備的安裝要注意以下幾點:
QUOTE:
1、 首先要選擇一個唯一的SCSI ID號,然後再將設備鏈接到適當的位置
2、 選擇驅動程序。
3、 生成設備文件。SCSI磁帶設備的主要設備號是9,次要設備號是0。設備文件名通常是/dev/nrst0(不支持回繞的磁帶設備)或/dev/nst0(支持回繞的磁帶設備)
用 ls /dev/*rst*
檢查磁帶設備文件是否存在,如果不存在,用
mknod –m 666 /dev/nrst0 c 9 9
mknod –m 666 /dev/rst0 c 9 0 生成
4、 可以對塊長度、緩存、磁帶密度等參數進行一些設置,例如
mt setblk 20 將塊長度指定為20
mt setblk 0 指定塊程度沒有限制
5、 通過檢查系統的啟動信息可以確定系統是否識別了新的磁帶設備。用dmesg命令,查看是否有以下類似的信息:
aha274x:target 4now synchronous at 4.4Mb/s
Vendor:TANDBERG Model:TDC 3800 Rev: =05:
Type: Sequential-Access ANSI SCSI revision: 02
Detected scsi tape st0 at scsi0, id4, lun0
Scsi : detected 1 SCSI tape 1 SCSI crom 1 SCSI disk total
3 軟體包管理命令
3.1軟體安裝的步驟
在LINUX系統上安裝軟體的步驟有:
QUOTE:
1、 查找所要安裝軟體的源文件
2、 把源文件解開放到一個目錄中,命令如下:
tar zxvf <源文件名>;
3、 針對本操作系統配置源文件。可以是編輯make文件或其他文件,也可能是運行該軟體自帶的自動配置工具,如./configure
4、 make源文件,通常是運行make命令,即執行 make
5、 安裝二進制文件和其他支撐文件,運行命令: make install
6、 最後,完成所有其他必須的配置
3.2軟體包管理命令
QUOTE:
rpm –ivh <軟體包>;
安裝指定的軟體包,並在安裝過程中用#表示安裝的進度
rpm –Uvh <軟體包>;
更新一個已經存在的或還沒安裝好的軟體包,並刪除所有該軟體包的舊版本。
rpm –e
卸載一個rpm軟體包
rpm –qa
查看系統中已經安裝的軟體包
rpm –q <軟體包>;
查看系統中某個軟體包的版本號;
rpm –qlp <軟體包>;
列出某個軟體包中的所有文件
rpm –qf <軟體包>;
找出一個文件屬於哪個軟體包
4 LINUX系統常用命令
4.1 與系統管理有關的命令
Wall (Write All)
QUOTE:
對全部已 登錄的用戶發送信息,用戶可以先反要發送的信息寫好存入一個文件中,然後輸入:
# wall < FileName
例:Wall 『Thank you !』
Write
向某一用戶發送信息。
Write xxq
hello
輸入Ctrl+C組合即可終止
Shutdown命令
CODE:[Copy to clipboard]Shutdown [選項] [時間] [警告信息]
QUOTE:
-k 並不真正關機,而只是發出警告信息給所有的用戶。
-r 關機後立即重新啟動。
-h 關機後不重新啟動。
-f 快速關機,啟動時跳過fsck。
-n快速關機,不經過init程序。
-c 取消一個已經運行的shutdown
例:系統馬上關機:Shutdown –h now
Free命令
查看當前系統內存的使用情況,
CODE:[Copy to clipboard]Free [-b] [-k] [-m]
CODE:[Copy to clipboard]-b 以位元組為單位顯示。
-k 以K位元組為單位顯示。
-m 以M位元組為單位顯示。
Uptime
QUOTE:
顯示系統已經運行了多長的時間:現在時間、系統已經運行的時間、目前有多少登錄用戶、系統在過去的1分鍾、5分鍾和15分鍾內的平均負載。
4.2與用戶有關的命令
Passwd命令
設置、更換用戶口令。
CODE:[Copy to clipboard]Passwd [用戶名]
Su
使一個普通的用戶具有超級用戶的權利,離開可用EXIT命令。
4.3其它命令
Echo命令
在顯示器上顯示一段文字,一般起到一個提示的作用。
CODE:[Copy to clipboard]echo [-n] 字元串
Cal命令
顯示某年某月的日歷。
CODE:[Copy to clipboard]cal [選項] [月[年]]
QUOTE:
選項的含義:
-j 顯示也給定月中的每一天是一年中的和幾天(從1月1日算起)。
-y 顯示也整年的日歷。
Date命令
date命令的功能是顯示和設置系統日期和時間。
4.4磁碟管理
磁碟空間管理
df命令
檢查文件系統的磁碟空間佔用局部。
CODE:[Copy to clipboard]Df [選項]
QUOTE:
-a 顯示所有文件系統的磁碟使用情況,包括0塊(block)的文件系統,如/proc文件系統。
-k 以K位元組為單位顯示。
-i 顯示i節點信息,而不是磁碟塊。
- t 顯示各指定類型的文件系統的磁碟空間使用情況。
-x 列出不是某一指定類型文件系統的磁碟窨使用情況(與t相反)。
-T 顯示文件系統類型。
命令
的英文原意為disk usage,含義為顯示磁碟空間的使用情況。功能是統計目錄(或文件)所佔磁碟空間的大小。
CODE:[Copy to clipboard] [選項] [Names…]
QUOTE:
-s 對每人Names 參數只給也佔用的數據塊總數。
-a 遞歸地顯示指定目錄中各文件用子孫目錄中的各文件佔用的數據塊總數。
-b 以位元組為單位列也磁碟窨使用情部(預設以K位元組為單位)
-k 以1024位元組為單位列也磁碟空間使用情況。
-c 最後再加上一個總計(系統預設)
-l 計算所有的文件大小,對硬鏈接文件,則計算多次。
-x 跳過在不同文件系統上的目錄不予統計。
dd命令
把指定的輸入文件拷貝到指定的輸出文件中,並且在拷貝的過程中可以進行格式轉換。語法:
CODE:[Copy to clipboard]dd 〔選項〕
QUOTE:
if =輸入文件(或設備名稱)。
of =輸出文件(或設備名稱)。
ibs = bytes 一次讀取bytes位元組,即讀入緩沖區的位元組數。
skip = blocks 跳過讀入緩沖區開頭的ibs*blocks塊。
obs = bytes 一次寫入bytes位元組,即寫 入緩沖區的位元組數。
bs = bytes 同時設置讀/寫緩沖區的位元組數(等於設置obs和obs)。
cbs = bytes 一次轉換bytes位元組。
count = blocks 只拷貝輸入的blocks塊。
conv = ASCII 把EBCDIC碼轉換為ASCII碼。
conv = ebcdic 把ASCII碼轉換為EBCDIC碼。
conv = ibm 把ASCII碼轉換為alternate EBCDIC碼。
conv = blick 把變動位轉換成固定字元。
conv = ublock 把固定們轉換成變動位
conv = ucase 把字母由小寫變為大寫。
conv = lcase 把字母由大寫變為小寫。
conv = notrunc 不截短輸出文件。
conv = swab 交換每一對輸入位元組。
conv = noerror 出錯時不停止處理。
conv = sync 把每個輸入記錄的大小都調到ibs的大小(用ibs填充)。
fdformat命令
低級格式化軟盤。
CODE:[Copy to clipboard]format [-n] device
QUOTE:
-n 格式化後不做檢驗
4.5常用的網路命令
FTP命令
Tel命令。
Netstat命令
QUOTE:
-a 顯示所有的scoket,包括正在監聽和。
-c 每隔1秒就重新顯示一遍,直到用戶中斷它。
-i 顯示所有網路介面的信息,格式同」ifconfig –e」
-n 以網路IP地址代替名稱,顯示也網路連接情形。
-r 顯示核心路由表,格式同」route –e:。
-t 顯示TCP協議的連接情況。
-u 顯示UDP協議的連接情況。
-v 顯示正在進行的工作。
nslookup命令。
finger命令,功能是查詢用戶的信息。
ping命令。
(用戶和組的管理可以使用工具:TurboUserCfg或是XturboUserCfg。)
4.6有關進程的命令。
進程和啟動
CODE:[Copy to clipboard]at [-V] [-q] [-f文件名] [-mldbv]時間
at –c 作業 [作業….]
AT命令啟動的進程系統只執行一次。
batch [-V] [-q 隊列] [-f 文件名] [-mv] [時間]
在系統負載較小時,資源比較空閑時執行。
cron命令
按一定的時間間隔執行命令。
crontab命令
用於安裝、刪除或列出用於驅支cron後台進程的表格。
進程查看
CODE:[Copy to clipboard]who命令。
w命令
是一個比who命令更強大的命令
w –[husfV] [user]
-h 不顯示標題。
-u 當列出當前進程和CPU時間時忽略用戶名。
-s 使用短模式。不顯示登錄時間JCPU和PCPU時間。
-f 切換顯示FROM項,也就是遠程主機名項。
-V 顯示版本信息。
user 只顯示指定用戶的情況。
ps命令。
-e 顯示所有進程。
-f 全格式
-h 不顯示標題。
-l 長格式。
-w 寬輸出。
a 顯示終端上所有進程,包括其他用戶的進程。
r 只顯示正在運行的進程。
x 顯示沒有控制終端的進程。
top 命令
動態顯示系統當前的進程和其他狀況。
5系統的啟動過程。
5.1初始啟動
在PC機啟動時,BIOS從指定的啟動設備中讀入「主引導記錄」(MBR)。MBR的格式是:
地址偏移量 內容 大小
+00 h 可執行的代碼(啟動模塊) 可能變化
+1BE h 第一分區表項 16位元組
+1CE h 第二分區表項 16位元組
+1DE h 第三分區表項 16位元組
+1EE h 第四分區表項 16位元組
+1FE h 可執行的標記(AA55 h) 2位元組
啟動模塊包含足以裝入操作系統的代碼,或者是第二步的載入代碼的位置。啟動模塊需要使用BIOS調用來從磁碟裝入數據,而這些中斷調用,如INT 13h等,限制了最大磁碟柱面號為1023。這也就是說啟動模塊需要載入的一切內容,如初始內存磁碟、內核、啟動的時間信息等,必須存放在1024個柱面以內。
在MBR中只有四個分區表項,每個表項的格式如下:
地址偏移 內容 大小
+00h 分區狀態:00代表非啟動分區,80h代表啟動分區 1位元組
+01h 分區的起始位置 磁頭 1位元組
+02h 分區的起始位置 柱面和扇區 1位元組
+04h 分區的類型 1位元組
+05h 分區的結束位置 磁頭 1位元組
+06h 分區的結束位置 柱面和扇區 1位元組
+08h 在主引導區和本分區的第一個扇區間的扇區數目 4位元組
+0Ch 分區內的扇區數目 4位元組
5.2 Linux的啟動過程
1啟動的命令行參數
在Linux啟動時,它處理所有傳遞給它的命令行參數。這可以影響Linux的運行方式。命令行參數包括:
QUOTE:
mem=xxxM:定Linux可以使用的內存大小。這在用戶的計算機系統有超過64MB的內存時才需要。因為從前的主板只對第一個64MB內存進行緩存,使用超過64MB的內存會使整個計算機的性能下降,所有內存均按無緩存的速度運行。
single:使Linux按單用戶方式啟動,預設方式是多用戶方式。
root=/dev/xxx:指定Linux要安裝為根文件系統的設備。
init=<file>;:指定作為初始化進程的文件。
initrd=<dev>;:指定作為初始內存磁碟的設備。
ro:指定根文件系統為只讀。
rw:指定根文件系統為可讀可寫。
2 Init進程
在內核初始化自身和找到的硬體設備後,在後台啟動進程init(/ *** in/init),init進程號1運行。
在UNIX世界中有許多啟動過程的版本,一些是基於系統V,一些是基於BSD。大多數Linux版本使用系統V的實現方法,在這里描述的就是這樣。
init是由文件/etc/inittab內容和功能控制的,隨啟動模式是單用戶或多用戶而不同。
QUOTE:
單用戶模式:init進程忽略/etc/inittab文件,在執行少數幾個腳本程序後調用/dev/console shell。這樣,用戶就可以有了一個shell,而且可以執行一定限度的任務。
多用戶模式:init進程把系統帶入/etc/inittab文件指定的運行級別。Init通過標準的Linux方法進入一個指定的進行級別。
3.進行級別
Linux與其他UNIX操作系統一樣,可以任何時刻處於任何一個運行級別。這些運行級別提供的功能不同,為主要是由於其運行的服務方程序(後台daemon)的不同造成的。Linux共有6種運行級別。
QUOTE:
0:關閉計算機或終止計算機運行,這個級別就是系統停止運行。
1:單用戶啟動級別,系統只有一個用戶,就是root,該用戶在控制台登錄。
2:多用戶運行級別,但無網路功能。在這個運行級別,網路功能沒有啟動,但是系統允許多個用戶登錄,可以通過虛擬控制台或串列線路。
3:多用戶模式,有網路功能。在這個運行級別,所有標准網路服務均被啟動。
4:目前沒有實現。
5:X11運行級別,在這個運行級別,X伺服器軟體運行,提供圖形界面的登錄方式。
6:系統重新啟動。
查詢當前運行級別:runlevel;
4在啟動過程中運行的腳本
在init進程運行時,它負責查看預設的運行級別,並進入該運行級別。這是通過運行在/etc/rc.d/rcX.d目錄下的腳本程序來實現的,其中X代表運行的級別,即一個運行級別對應一個目錄。不同的字母開頭的文件有不同的作用。其中:
以K開頭的腳本程序是系統離開某個運行級別時執行的,作用是停止某種服務。當系統從某個支持級別變為其他級別時,首先要進行原運行級別所對應的所有K程序。
以S開頭的腳本程序是系統進入某個運行級別時所執行的,作用是啟動某種服務。當系統改變為某個運行級別時,就要運行新運行級別所對應的所有S程序。
5增加啟動腳本程序
用戶可能有一些特定的硬體設備要初始化,或需要在系統啟動時初始化一些其他應用程序,用戶可以增加自己的初始化腳本程序來完成這些工作。通常步驟是:
復制一個已經存在的腳本,這樣可以得到一個通用的框架格式。
修改這個腳本,以完成自己的需求,要注意使程序可以處理啟動和關閉的參數,盡管可能關閉處理什麼也不需要干。
把這個肢本拷貝到/etc/rc.d/init.d目錄下,命名為」serv」。
按下面的方法在相應的目錄下建立運行控制鏈接:
CODE:[Copy to clipboard]ln –s ../init.d/serv/etc/rc.d/rc3.d/s99 serv
進行測試。
6 LILO和其他的啟動模塊
要啟動Linux,啟動模塊是必須的。一般用於Linux的啟動模塊是LILO,LILO用自己的主引導區代替一般的主引導區。LILO可以通過修改/etc/lilo.conf文件內容來進行配置,對引導區內容的更新通過lilo命令來完成。
下面給也了一個裝有DOS,TurboLinux3.4.0和RedHat 5.2系統的計算機的lilo.conf文件。在例子中的數字標號是用戶加上去並要在文中詳細解釋的。
CODE:[Copy to clipboard]# more /etc/lilo.conf
boot=dev/had
map=/boot/map
instll/boot/boot.b
prompt
#表示啟動盤是/dev/had,這是主IDE硬碟。
timeout=50
#表示等待用戶輸入的時間是50秒。
default=TL3.4
other=dev/hda1
#表示如果在上述的時間內沒有輸入,預設的啟動系統是TL3.4,即TurboLinux 3.4.0
label=dos
table=dev/had
#表示如果在LILO提示用戶輸入啟動系統時,用戶按了<Tab>;鍵,各個系統將以label的內容顯示出來,供用戶選擇。
image=/mnt/tl3.4/boot/vmlinuz
label=TL3.4
root=/dev/hda3
read-only
TurboLinux的啟動文件,/mnt/tl3.4/boot/vmlinuz被確定,根文件系統在/dev/hda3,根文件系統是只讀方式的。
CODE:[Copy to clipboard]image=/mnt/rh5.2/boot/vmlinuz-2.0.36-0.7
label=RH5.2
root=/dev/hda4
read-only
RedHat的啟動文件,/mnt/rh5.2/boot/vmlinuz-2.0,36-0.7被確定,根文件系統在/dev/hda4,根文件系統可讀寫。
⑥ linux/unix shell 中expr 字元串匹配問題請教~
個人認為,就是完全匹配與部分匹配的差別。
grep
只要字元串中有部分能夠與正則匹配即可,並且會輸出匹配的一整行。幫助里這樣講:
grep
searches
the
named
input
FILEs
(or
standard
input)
for
lines
containing
(注意,是containing)
a
match
to
the
given
PATTERN.
By
default,
grep
prints
the
matching
lines.
如果你在終端里正確設置了顏色顯示,那麼可以看到:
echo
"abcde"
|
grep
"cde"
結果輸出
abcde,其中cde是高亮紅色顯示的(只匹配了部分)。
echo
"abcde"
|
grep
".*cde"
結果也是輸出
abcde,其中abcde全是高亮紅色顯示的。
這表示grep是部分匹配的,只要有部分字元串匹芹轎配就OK。
expr
STRING
:
REGEXP
則是完整匹配,輸出最後匹配的那個位置(anchor)。幫助里這樣說的:
STRING
:
REGEXP
anchored
pattern
match
of
REGEXP
in
STRING
規定了:後面必須跟正則表達式,用於格式匹配。
.*b
是正則表達式,可用於匹配任何以b結尾的字元串。
但「cde」如果被用作完全匹配的話,就是必須匹配以嫌爛肆c開頭的字元串,顯然匹配歷搭不到,因為:前的字元串以a開頭。^_^
如果改為
expr
"cdeab"
:
"cde"
,這樣就可以匹配成功並且返回3。
看看源碼應該能更清楚內部實現方式的區別。我沒看過,因此也不好多說了。以上純屬個人看法,僅供探討。
⑦ 在linux下 什麼是bash.什麼又是shell
bash 是一個為GNU項目編寫的Unix shell,也就是linux用的shell。
Shell俗稱殼(用來區別於內核),是指「提供使用者使用界面」的軟體,就是一個命令行解釋器。
BASH是SHELL的一種,是大多數LINUX發行版默認的SHELL,除BASH SHELL外還有C SHELL等其它類型的SHELL。
linux主要特性:
1,基本思想:
Linux的基本思想有兩點:第一,一切都是文件;第二,每個軟體都有確定的用途。其中第一條詳細來講就是系統中的所有都歸結為一個文件,包括命令、硬體和軟體設備、操作系統、進程等等對於操作系統內核而言,都被視為擁有各自特性或類型的文件。至於說Linux是基於Unix的,很大程度上也是因為這兩者的基本思想十分相近。
2,完全免費:
Linux是一款免費的操作系統,用戶可以通過網路或其他途徑免費獲得,並可以任意修改其源代碼。這是其他的操作系統所做不到的。正是由於這一點,來自全世界的無數程序員參與了Linux的修改、編寫工作,程序員可以根據自己的興趣和靈感對其進行改變,這讓Linux吸收了無數程序員的精華,不斷壯大。
3,完全兼容POSIX1.0標准:
這使得可以在Linux下通過相應的模擬器運行常見的DOS、Windows的程序。這為用戶從Windows轉到Linux奠定了基礎。許多用戶在考慮使用Linux時,就想到以前在Windows下常見的程序是否能正常運行,這一點就消除了他們的疑慮。
4,多用戶、多任務:
Linux支持多用戶,各個用戶對於自己的文件設備有自己特殊的權利,保證了各用戶之間互不影響。多任務則是現在電腦最主要的一個特點,Linux可以使多個程序同時並獨立地運行。
5,良好的界面:
Linux同時具有字元界面和圖形界面。在字元界面用戶可以通過鍵盤輸入相應的指令來進行操作。它同時也提供了類似Windows圖形界面的X-Window系統,用戶可以使用滑鼠對其進行操作。在X-Window環境中就和在Windows中相似,可以說是一個Linux版的Windows。
⑧ 什麼是Shelllinux Shell有什麼特性
Shell是Linux系統的外殼,它是用戶和Linux操作系統之間的介面,並且具有很多種類型。那麼什麼是Shell?Shell分為哪猜啟敬幾類?linux
Shell有什麼特性?我們來看看具體的內容介紹。
什麼是Shell?
Shell本身是一個用C語言編寫的程序,它是用戶使用Unix/Linux的橋梁,用戶的大部分工作都是通過Shell完成的。Shell既是一個命令語言,又是一個程序設計語言。作為命令語言,它互動式地解釋和穗慎執行用戶輸入的命令;作為程序設計語言,它定義了各種變數和參數,並提供了許多在高級語言中才具有的控制結構,包括循環和分支。
Shell是一個應用程序,是用戶管理應用程序的一個介面。
廣義上Shell的分類?
GUI:圖形旁侍用戶界面,KDE、GNOME、XFCE。
CLI:命令行介面,bash、zsh、fishsh、csh、tcsh、ksh。
linux Shell有什麼特性?
Shell是一個簡單得腳本語言,適合自動化命令執行。
Shell是Linux系統必備的語言,我們操作Linux就是通過命令行bash解釋給系統的。
大多數應用軟體的啟動和配置都是Shell腳本完成的。
要想學好Linux,掌握shell是必不可少的。
⑨ Linux命令解釋器——Shell
Shell是應用於Linux系統中的命令解釋器,其作用和Windows系統的命令提示符一樣。都是為當前用戶提供與系統內核進行交互操作的一種用戶界面。
⑩ 使用Unix/Linux系統中的Shell命令上機完成以下操作
#!/bin/bash
ls -l
mkdir mydir
cd mydir
pwd
touch myshell
chmod +x myshell
cat myshell
cp myshell ..
rm -f myshell
mv ../myshell .
-----------------------------------
~/work/shell/test $ cat xx.sh
#!/bin/bash
ls -l
mkdir mydir
cd mydir
pwd
touch myshell
chmod +x myshell
cat myshell
cp myshell ..
rm -f myshell
mv ../myshell .
~/work/shell/test $ ./xx.sh
total 4
-rwxr-xr-x 1 oliver oliver 131 2012-12-17 11:21 xx.sh
/home/oliver/work/shell/test/mydir
~/work/shell/test $ ls -ltr mydir
total 0
-rwxrwxr-x 1 oliver oliver 0 2012-12-17 11:22 myshell
~/work/shell/test $