動作

Linux Tools

出自 Itsmw

簡介

 本文介紹各式 linux 指令工具,以期管理者只要使用 SSH 遠端連線,便可完成所有網管工作,不必再靠圖形化介面工具。這樣的好處是,因為不靠遠端圖形介面,降低了頻寬的需求及終端平台的要求(NB, Andorid 附鍵盤手機, MID... etc皆可),因而加強了管理者的管理彈性。

 本文所介紹的指令,若沒特別說明,皆是以 root (最高管理者)身份執行,若您安裝的是 OB2D ,預設以個別 user 登入,可以用下列方式切換成 root 身份。

指令 說明 範例
su OB2D 啟用 su
註:只有安裝時新增的 user 才
      有 sudo 執行權
user@dns:~$ sudo passwd
  • password for xxx: (先輸入目前登入者密碼 )
  • password: (輸入 root 密碼)
  • password: (再一次)
同時切換身份與資料夾 user@dns:~$ su -
密碼: xxxxx
root@dns:~#
sudo -i 不必設定 root 密碼, 便可
同時切換身份與資料夾
user@dns:~$ sudo -i
密碼: xxxxx(user的密碼)
root@dns:~#



相對路徑 vs 絕對路徑

  • 相對路徑是指,以目前所處的資料夾,向上/向下跑到其他資料夾
    • 例:從 /var/www 跑到 /var/lib/mysql 資料夾
      root@dns:/var/www# cd ../lib/mysql
      說明:目前在 /var/www ,「../」是指回到上一層,也就是先回到「/var」,再到其下的「lib/mysql

    • ./」留在本地
      ../」是指回到上一層
  • 絕對路徑是指,不管身在何處,直接跑到指定位置
    • 例:從家目錄(/root)到 /var/lib/amavis
      root@dns:~# cd /var/lib/amavis



善用 TAB 鍵

 當使用者只記得指令的前幾個字母或指令太長,我們懶得打出全部字母。此時,可以只要打出前幾個字,再點「Tab」鍵。若沒重覆,會直接列出完整指令。若有重覆,會列出所有清單。您再多一兩個字母,使其不再重覆,再點一次「Tab」鍵。即可輕鬆完成指令的輸入。



Win & Linux 指令習慣差異

 另外要再提示一點:Linux 對【目錄】的表達方法與 MS Windows 有異,簡單比較如下:

比 較 項 目 Linux WIN 範例說明
現行目錄底下所有檔案 * *.*

Win:   copy c:\home\*.* c:\home2\

Linux: cp -rf /home/* /home2

在現行目錄下執行 nvu 這執行檔 ./nvu nvu Linux 一定要加 〔./〕代表是要從現行目錄底下執行
「執行檔」定義 rwxr-xr-x
x 便是
*.exe
*.com
*.bat
*.msi
判斷依據
  • Linux   → 檔案權限
  • Windows → 副檔名




系統操作

系統工具

系統管理

指令 說明 範例 範例解說
w 誰登入並執行什麼 w
hostname 列出主機名稱 hostname 如果要修改 hostname , 要改
/etc 底下之 hosts 及 hostname
cat 列出檔案內容 cat /proc/cpuinfo 列出 CPU 訊息
uname 列出 Kernel 版本 uname -a 列出 Kernel 細目
lsb_release 列出Linux 發行版本(CentOS or Ubuntu...) lsb_release -a -a 是指全部資訊
dmesg 列出硬體訊息
主機版、網卡等
dmesg |grep eth 列出網卡相關訊息
dmesg |grep sda 列出磁碟機載入相關訊息
lspci 列出週邊介面訊息 lspci 列出主機上的設備, 但不一定已驅動
lsmod 列出核心模組
(驅動程式)
lsmod |grep r8169 尋找是否啟用螃蟹卡 r8169 模組
rmmod 停止某驅動程式 rmmod r8169 移除 r8169 模組
modprobe 手動載入驅動程式 modprobe r8169 載入 r8169 驅動程式
載入後用 dmesg 指令檢視 eth 代號
shutdown 關機 shutdown -h now 立即關機
reboot 重新開機 reboot 重新開機



B2D Server 兩張網卡修改網卡代號

 B2D Server 所有的設備驅動程式寫在 /etc/modules ,每一列就是一組驅動。若兩張網卡,例如:8139too(主機板內建), r8169。在設定檔內由上而下,第一組就是 eth0 ,第二組是 eth1,舉例如下:

  :
  :
mii
r8169  --> eth0
8139too  --> eth1
snd_page_alloc
soundcore
  :
  :



OB2D 兩張網卡修改網卡代號

 轉自南縣教網郭主任說明,OB2D 使用 udev 來管理設備,所以要由 udev 來下手,方法如下:

  • root@dns:~# cd /etc/udev/rules.d
    找到一個檔名為 "數字-persistent-net.rules" 的設定檔,比如: 70-persistent-net.rules
  • 編輯其內容,如以下範例:
# PCI device 0x10ec:0x8139 (8139too)

SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:40:ca:8a:20:86",
ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x8086:0x107c (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1b:21:51:ce:ba",
ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

 把其中的 NAME 改成你要的 ethX (ethX 表 eth0 或 eth1),再重新開機即可。

記憶體暨執行程式管理

指令 說明 範例 範例解說
free 記憶體檢查 free
top 執行中程式占記憶體檢查 top "q" 鍵離開
htop 另一套同功能程式 htop 要額外安裝
ps 檢查執行中的程式 root@dns:~# ps aux | grep firefox

user   7643 0.0 0.0  4088  620 ?.../firefox
上面的 7643 是 pid 值

kill 中斷執行 kill -9 7643 強制中止 firefox(7643)執行



套件管理

 B2D/OB2D Server 皆是基於 Debian 所開發而成,所以,整個套件管理原理與 debian 一致。以下,筆者先列幾個重點:

  • Debian 如同 Windows 一樣,也是有版本之分
    • Debian 3.0 → Sarge → B2D Server Jacana/Lapue
    • Debian 4.0 → Etch → OB2D t1 ~ t3
    • Debian 5.0 → Lenny → OB2D e1 ~ e2
    • Debian 6.0(目前仍在 testing 階段) → Squeeze → OB2D sqz
    • 每個版本皆有其自有的套件庫,一些獨立開發 for Debian 的套件亦是如此
    • 舊版本的 Debian 不能直接拉新版 Debian 上的軟體安裝,會有相依性困擾
      例如:在 Sarge(B2D Server)上,無法安裝屬於 Lenny(OB2D e系列) 上 php5
    • 不過新版 Debian 若某些套件不見了,大多可以直接下載舊版 Debian 的 deb 檔手動安裝。例子請見在 OB2D sqz 上安裝 OpenWebmail 一文,就是基於這個原則。
  • 套件來源管理
    /etc/apt/sources.list
    /etc/apt/sources.list.d 資料夾內所有設定檔

    來源一旦有所修改,或隔大多天,一定要更新清單內容: apt-get update
  • 軟體套件會被打包成 deb 檔(副檔名 deb)
  • 基本管理工具: dpkg
    可以「看/安裝/移除」套件,但容易因相依性問題(需要其他額外未安裝套件時),中斷安裝。
  • 進階管理工具: apt
    會自動處理套件相依性問題,也就是所缺的套件,皆會自動安裝


指令 說明 範例 範例解說
dpkg deb檔管理 dpkg -i abc.deb 安裝自行下載的 abc.deb
dpkg -l 列出所有已安裝套件
dpkg -l |grep php5 找出有 php5 部份字串的 deb 套件
dpkg -l php5 列出 php5 deb檔資訊
並顯示其安裝狀態
dpkg -L php5 列出 php5 內之檔案列表
dpkg -S libntfs.so.10
libntfs10: /usr/lib/libntfs.so.10
搜尋 libntfs.so 屬於那個 deb 檔
dpkg -r inkscape 刪除 inkscape 軟體
dpkg -P inkscape 刪除 inkscape 軟體及其設定檔
dpkg-reconfigure 重新設定 dpkg-reconfigure phpmyadmin 重設 phpmyadmin 套件
apt 套件管理 apt-cache search 3dchess 搜尋含 3dchess 部分字串之軟體名
apt-get update 更新軟體清單
apt-get install 3dchess 安裝 3dchess 及其相關套件
apt-get remove 3dchess 移除 3dchess 套件
apt-get upgrade 整體升級


  • dpkg, rpm 與 apt-get 之間的關係(註: 新版的 Fedora 已捨棄 apt 管理)
Aptmgr.png



帳號管理

指令 說明 範例 範例解說
adduser 新增帳號 adduser myname 新增 myname 這個帳號
建立個人網頁 cd /home/myname
mkdir public_html
chown myname.myname public_html
在家目錄下建立 public_html
並把擁有改回 myname
userdel 刪除帳號 userdel -r myname 刪除 myname 及其家目錄
passwd 變更自己密碼 passwd 變更目前登入者的密碼
變更別人密碼 passwd myname 變更 myname 的密碼



磁碟、檔案、資料夾

檔案、資料夾權限

我們在某一資料夾下「 ls -l 」指令(列出該資料夾底所有檔案的詳細資料) 例:

drwxr-sr-x 2 root staff 4096 2004-12-19 17:10 Desktop
drwxr-xr-x 5 root root 4096 2004-09-30 01:57 GNUstep
drwxr-xr-x 2 root root 4096 2004-09-30 01:57 tmp

我們發現,最左側有「drwxr-xr-x」的英文字

  • d → 目錄
  • r → 讀取權
  • w → 寫入權
  • x → 執行權(也就所謂的《執行檔》或《批次檔》)
  • 如果出現「-」代表該位置這個功能沒了

例:「drwxr-sr-x 2 root staff 4096 2004-12-19 17:10 Desktop 」這資料夾,是「root」這個人的,歸屬「staff」這個群組,而:

  • 「 root 」這個人可以「讀取|寫入|執行」
  • 與「staff」同群組的使用者只可以「讀取| |執行」
  • 其他人可以「讀取| |執行」


由以上的例子,我們知這樣三次的 rwx 代表:

  • 第一次 → 「本檔案擁有者」可以做什麼事
  • 第二次 → 「與本檔案擁有者同群組的人」可以做什麼事
  • 第三次 → 「其他人」可以做什麼事


有了以上概念,下文繼續列出幾個管理指令

指令 說明 範例 範例解說
chmod 改變檔案權限 chmod -R 777 /var/www/upload 把 /var/www/upload 改成所
有人皆可讀寫 rwxrwxrwx
(-R 代表含子目錄)
chown 改變檔案擁有者 chown name.mail /var/mail/name 把 /var/mail/name 改成隷屬
帳號 name;  群組 mail
Chmod own.png



磁碟管理

指令 說明 範例 範例解說
cfdisk 硬碟分割中文版 -- --
fdisk 硬碟分割英文版 fdisk /dev/sdb 分割硬碟 sdb
df 顯示磁碟空間狀況 -- --
du 顯示資料夾大小 du --max-depth=1 /var 列出 /var 下第一層資料夾大小
預設計量單位為 MB
blkid 列出磁區資訊 blkid  
mount 手動掛載磁碟

mount -t vfat -o iocharset=cp950 /dev/sda2 /mnt/sda2
把 vfat 格式的隨身碟掛至 /mnt/sda2 資料夾底下

umount 卸載隨身碟 umount /mnt/sda2 卸載 /mnt/sda2
必須先 cd 離開 /mnt/sda2 才可




檔案搜尋

指令 說明 範例 範例解說
updatedb 更新檔案清單資料庫 -- 須安裝 locate 套件才會有此功能
locate 搜尋任意檔案 locate rsync 尋找所有含「rsync」部份字串
的檔案
whereis 搜尋任意檔案 whereis mail.log 找出 mail.log 位置
find 找出特定要求的檔案,如果用來找檔名太浪費了! find / -size +100000k 從根目錄起,找出所有大於 100Mbytes 的檔案


檔案資料夾異動

指令 說明 範例 範例解說
cd 更換資料夾位置 cd /etc/apache2/conf.d 切換至 /etc/apache2/conf.d
cp -rf 強制複製檔案&目錄 cp -rf /mnt/sdb1/home/* /home 複製 sdb1/home 下資料夾至 /home
cp -rf ./-ok.doc /home/user 複製帶有減號「-」的檔名
(會誤判為加參數)
cp -rfp 保留原有權限複製 cp -rfp /mnt/sdb1/home/* /home 除以上,可保留原有權限
ln 建立同步檔案 ln /var/log/mail.log /root/m.log 把 /var/log/mail.log 同步至 /root/m.log
ln -snf 建立檔案捷徑 ln -snf /usr/share/phpmyadmin 在本地建立 phpmyadmin 目錄捷徑
ls 列出檔案名稱 ls /etc/bind 列出 /etc/bind 底下所有檔案
ls -l 列出檔案詳細資料 ls -l 列出本地資料夾下所有檔案細目
mkdir 建立資料夾 mkdir /mnt/sdf 建立 /mnt/sdf 這個資料夾
mv 搬移 mv /mnt/sdb1/home/* /home 搬移 sdb1/home 下資料夾至 /home
mv 重新命名 mv named.conf named.conf.bak 把 named.conf 重新命名
pwd 列出目前資料夾位置 pwd
rm -f 強制刪除檔案 rm -f /root/mytest.txt 刪除 mytest.txt
rm -rf 強制刪除資料夾檔案 rm -rf /var/lib/amavis/clamav-* 刪除 clamav-開頭的所有資料夾
scp -r 複製至遠端機器
(含資料夾)
scp -r /var/www/* root@myip.tw:/var/www
把本機 /var/www 底下的所有東西複製到 myip.tw 的 /var/www 底下
touch 建立空檔 touch /root/newtest.log 建立 newtest.log 空白檔
wget 自 Internet 下載 wget http://yh.tnc.edu.tw/download/ob2de_window.sh
到 yh.tnc.edu.tw 使用 http 通訊協定抓 ob2de_window.sh 檔案
tree 顯示資料夾/檔案結構 tree -L 2 顯示目前位置起,二階層的資料夾樹狀圖



純文字檔(記錄檔,設定檔...等)操作

指令 說明 範例 範例解說
cat 列出檔案所有內容 cat mail.log 列出郵件記錄檔
cat > 內容送至他檔 cat /dev/null > /var/mail/nobody 把 nobody 內容清空
tail 列出檔尾 10 行內容 tail mail.log 列出郵件記錄檔倒數 10 行內容
tail -45 列出檔尾 45 行內容 tail -45 mail.log 列出郵件記錄檔倒數 10 行內容
tail > 把檔尾內容轉至他檔 tail -90 mail.log > /root/m.log 把 mail.log 倒數 90 行寫入 m.log
grep 只列特定字串行 tail -500 mail.log |grep yh@mail 把含 yh@mail 字串的文字列出



檔案壓縮工具

指令 說明 範例 範例解說
tar 包裝壓縮 tar czvf /root/www.tgz /var/www 把 /var/www 壓至 /root/www.tgz
tar xzvf www.tar.gz 解 tar.gz 格式壓縮檔
tar xjvf www.tar.bz2 解 tar, bzip2 格式壓縮檔
zip zip 格式壓縮 zip /root/www.zip /var/www 把 /var/www 壓至 /root/www.zip
unzip 解 zip 格式 unzip www.zip 解 www.zip



網路操作

網卡操作

指令 說明 範例 範例解說
ifconfig 手動設定網卡 ifconfig 檢查目前網卡狀態
ifconfig eth0 up 啟動 eth0 網卡
ifconfig eth0 down 關閉 eth0 網卡
route 檢查或設定路由 route -n 查看目前的 gateway 值
ifup 啟動網卡 ifup eth0 依 /etc/network/interfaces 設定值啟動 eth0 網卡
ifdown 關閉網卡 ifdown eth0 停止使用 eth0 網卡
networking 網卡服務 service networking restart 重新啟動 /etc/network/interfaces 設定下所有網路介面


網路狀態

指令 參數 範例 範例解說
tcpdump -t tcpdump -t 不顯示時間
-n tcpdump -n 不解析主機名稱(印出IP位址)
not port tcpdump -t -n not port 22 and ip6 除以上, 只印 IPv6 不含 22 埠的封包
-i tcpdump -i eth0 監聽 eth0 網卡
udp tcpdump -t -n upd 只列 UDP 封包
tcp tcpdump -t -n tcp 只列 TCP 封包
tcp tcpdump -t -n arp 只列 ARP 封包
port tcpdump port 53 列出 tcp, upd 53埠
broadcast tcpdump -t -n ip broadcast 列出 IPv4 廣播封包
multicast tcpdump -t -n ip multicast 列出 IPv4 多點廣播封包
tcptrack -i tcptrack -i eth0 動態顯示目前 eth0 網路連線狀況



開埠狀態

指令 參數 範例 範例解說
netstat -n netstat -n IP,Port以數字顯示
-l netstat -nl 用數字列出 Listening 中的埠值
-p netstat -nlp 再加執行程式名及其 PID 值
-t netstat -nltp 僅列 TCP 通道
-u netstat -nlup 僅列 UDP 通道
-a netstat -tna 即時 TCP 連線狀況
-c netstat -tna -c 3 即時 TCP 連線狀況, 每三秒更新一次



別台主機掃描

 本功能不可輕易對外面主機使用,通常掃描外面主機通訊埠值會被視為一種敵意的行為。如果對方網段有安裝 Firewall/IDS/IPS/UTM 這一類的資安設備,會直接把我們的 IP Address 抯擋起來。它的使用時機,大多數是在查校內不明主機用,藉由 OS、通訊埠的偵測,協助了解其硬體訊息,進而知道其位置及其主人。

指令 參數 範例 範例解說
nmap -sP nmap -sP 192.168.0.0/24 掃描 192.168.0.0/24 網段連線主機概況
-sS nmap -sS 192.168.0.1 使用半開掃描 192.168.0.1 , 以避對方防火牆
-sA nmap -sA 192.168.0.1 使用 ACK 封包掃描 192.168.0.1 , 以避對方防火牆
-P0 nmap -sS -P0 192.168.0.1 不需事先 ping 對方
-sU nmap -sU 192.168.0.1 掃描 UPD 埠狀態
-O nmap -O 192.168.0.1 猜測對方作業系統
-p nmap -p 80 192.168.0.1 只查特定埠值
-p nmap -p 22,25 192.168.0.1 只查 22 及 25 埠開啟狀態
-p nmap -p 22-443 192.168.0.1 查 22 到 443 埠開啟狀態



伺服器管理

伺服器啟閉管理

指令 說明 範例 範例解說
service 手動啟動/關閉服務
(開關埠)
service apache2 start 啟動 apache2 服務,開啟 80 埠
service apache2 stop 關閉 apache2 服務,開啟 80 埠
service apache2 restart 重新啟動 apache2
通常用於修改設定值之後
ntsysv 開機時要啟動的服務 ntsysv OB2D 上不得更新 chkconfig
套件才有的用
sysvconfig 開機時要啟動的服務 sysvconfig 推薦改用此工具


DNS查詢

DIG指令

指令 參數 範例及解說
dig @163.26.200.1 dig @163.26.200.1 dc1es.tnc.edu.tw
向 163.26.200.1 詢問 dc1es.tnc.edu.tw 的網址
AAAA dig @163.26.182.1 dc1es.tnc.edu.tw AAAA
查詢 dc1es.tnc.edu.tw IPv6 位址
MX dig @163.26.182.1 dc1es.tnc.edu.tw MX
查詢 xxx@dc1es.tnc.edu.tw 的信件會先轉到那兒去
NS dig @168.95.1.1 dc1es.tnc.edu.tw NS
向中華電信DNS查詢 dc1es.tnc.edu.tw 名稱伺服器狀態
+trace dig @163.26.200.1 2001:288:75a6:182::1 +trace
追查dns反解授權狀態
-x dig @163.26.200.1 -x 163.26.182.1
向教網DNS查詢 163.26.182.1 的網路主機名稱(反解)
-x dig @163.26.182.1 -x 2001:288:75a6::1
向 163.26.182.1 查詢 2001:288:75a6::1 的反解


其他指令

指令 說明 範例 範例解說
nslookup 查詢正反解(IPv4) nslookup dc1es.tnc.edu.tw 查詢大成國小IP位址
host 查詢正反解 host dc1es.tnc.edu.tw. 168.95.1.1 向 168.95.1.1 查詢 DC1ES
註:hostname後一定要加 "."



WWW(Apache2+PHP+MySQL)

Apache2

指令 說明 範例 範例解說
/etc/init.d/apache2 Apache2控制器 /etc/init.d/apache2 reload 重新載入設定檔
a2enmod 啟動模組 a2enmod userdir 啟動個人網頁模組
a2ensite 啟用虛擬站台 a2ensite ssl /etc/apache2/sites-avaliable/
啟用已準備好的站台設定檔


MySQL

指令 說明 範例 範例解說
/etc/init.d/mysql MySQL控制器 /etc/init.d/mysql restart 重新啟動 MySQL 服務
mysqladmin 初設 MySQL root密碼 mysqladmin -u root password "newpwd"
myisamchk ISAM 格式資料表修復 myisamchk -r -q --set-character-set=charset
忘記 MySQL root密碼
  • 建立 /root/mysql-init, 內容如下
    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPwd');
  • root@dns:~# mysqld_safe --init-file=~/mysql-init &
  • 刪除 /root/mysql-init
建立 MySQL USER
(使用 SQL 語法)

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
   ON dbname.*
   TO 'user'@'localhost'
   IDENTIFIED BY 'user_pwd';



MAIL(Postfix)

指令 說明 範例 範例解說
/etc/init.d/postfix Postfix控制器 /etc/init.d/postfix restart 重新啟動
postfix Postfix主程式 postfix check 檢查 main.cf 語法
postfix reload 重新載入 main.cf 設定
postfix flush 強迫把佇列中的信件寄出
postqueue 郵件佇列處理 postqueue -p 列出所有佇列中郵件
postsuper 刪除 postsuper -d ALL 刪除所有佇列中郵件
postcat 看郵件內容 postcat -q QUEUE_ID 查看某佇列中信件



RDesktop

  • rdesktop 指令
    root@dns:~# rdesktop -g 1024x768 -a 16 163.26.x.x



本文小檔案

__NORICHEDITOR__

題名: Title::Linux 工具指令
作者: Creator::itsmw作者群
主題/關鍵詞: Subject:: linux command, cmd, tools
簡述: Description:: Linux 常用工具指令集
出版者: Publisher::台南縣教網中心 itsmw 計畫
其他參與者: Contributor::itsmw作者群
日期: Date::2010-6-11
文件類型: Type::05作業系統
Type::06工具類應用軟體
資料格式: Format::text/html
文件識別代號: Identifier::http://myip.tw/itsmw/index.php/Linux_Tools
來源: Source::http://myip.tw/b2ddoc/LinuxBase
語言: Language::zh-TW
相關資源: Relation::http://b2d-linux.com
文件涵蓋範圍: Coverage::Linux平台
版權規範: Rights::GNU Free Documentation License 1.2