Ubuntu命令技巧



Ubuntu命令技巧

前言

下面的命令大都需要在控制檯 /終端/shell 下輸入。

控制檯,終端,shell意味着同樣一件事-一個命令行界面,他可以用來控制系統。

打開一個控制檯:

應用程序-->附件-->終端

任何一個使用'sudo'作爲前綴的命令都需要擁有管理員(root)訪問權限。所以你會被提示輸入你自己的密碼。

 

安裝升級

查看軟件xxx安裝內容

dpkg -L xxx 

查找軟件庫中的軟件

apt-cache search 正則表達式

aptitude search 軟件包

顯示系統安裝包的統計信息

apt-cache stats

顯示系統全部可用包的名稱

apt-cache pkgnames

顯示包的信息

apt-cache show k3b

查找文件屬於哪個包

apt-file search filename

查看已經安裝了哪些包

dpkg -l

查詢軟件xxx依賴哪些包

apt-cache depends xxx

查詢軟件xxx被哪些包依賴

apt-cache rdepends xxx

增加一個光盤源

sudo apt-cdrom add

系統更新

sudo apt-get update (這一步更新包列表)
sudo apt-get dist-upgrade (這一步安裝所有可用更新)
或者
sudo apt-get upgrade (這一步安裝應用程序更新,不安裝新內核等)

查詢程序屬於哪一個debian包

如,程序名是 dh_installdeb
$dpkg  -S `which dh_installdeb`
debhelper: /usr/bin/dh_installdeb
$dpkg -l | grep debhelper
ii  debhelper                              7.4.15ubuntu1                                   helper programs for debian/rules

另一種更強的方法:

apt-file update
apt-file search  filename
   可以找到該文件屬於哪一個deb包。


清除所有已刪除包的殘餘配置文件

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P 

如果報如下錯誤,證明你的系統中沒有殘留配置文件了,無須擔心。


dpkg:--purge needs at least one package name argument

Typedpkg --help for help about installing and deinstalling packages[*];
Use `dselect' or `aptitude' for user-friendly packagemanagement;
Type dpkg -Dhelp for a list of dpkg debug flagvalues;
Type dpkg --force-help for a list of forcing options;
Typedpkg-deb --help for help about manipulating *.deb files;
Type dpkg--license for copyright license and lack of warranty (GNU GPL) [*].

Optionsmarked [*] produce a lot of output - pipe it through `less' or`more' !

 


編譯時缺少h文件的自動處理

sudo auto-apt run ./configure

查看安裝軟件時下載包的臨時存放目錄

ls /var/cache/apt/archives
      如果你有一些自己的deb包需要安裝,可以把它們複製到/var/cache/apt/archives目錄下,然後就可以使用apt-get install 包名   安裝。
       使用apt-get install命令比dpkg -i 命令更好,因爲apt-get install命令會自動安裝依賴的軟件包。  

      dpkg -i 命令安裝時,則可能會遇到軟件包依賴不滿足而無法安裝的錯誤。


備份當前系統安裝的所有包的列表

dpkg --get-selections | grep -v deinstall > ~/somefile

從上面備份的安裝包的列表文件恢復所有包

dpkg --set-selections < ~/somefile
sudo dselect  或者 sudo  apt-get  dselect-upgrade  

安裝debian包時自動回答yes

sudo apt-get install/dselect-upgrade 等命令後,可以加上-y 表示自動回答yes。
但在遇到安裝一個未驗證的deb包,或者刪除一個本質的deb包時,安裝過程會終止。
如果再加上

--force-yes 

那麼不論什麼樣的情況,apt-get都會執行安裝。 但使用這個選項可能會造成系統問題。

清理舊版本的軟件緩存

sudo apt-get autoclean

清理所有軟件緩存

sudo apt-get clean

刪除系統不再使用的孤立軟件

sudo apt-get autoremove

查看包在服務器上面的地址

apt-get -qq --print-uris install ssh | cut -d/' -f2

 

徹底刪除Gnome

apt-get --purge remove liborbit2

徹底刪除KDE

apt-get --purge remove libqt3-mt libqtcore4

一鍵安裝LAMP服務

sudo tasksel install lamp-server

刪除舊內核

sudo aptitude purge ~ilinux-image-.*/(/!`uname -r`/)

導入ppa源的key

#W: GPG簽名驗證錯誤: http://ppa.launchpad.net jaunty Release: 由於沒有公鑰,下列簽名無法進行驗證: NO_PUBKEY 5126890CDCC7AFE0
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 5126890CDCC7AFE0 #5126890CDCC7AFE0替換爲你需要導入的Key

增加一個ppa

sudo add-apt-repository ppa:user/ppa-name  
#使用 ppa 的地址替換 ppa:user/ppa-name

系統升級

  1. 這裏指的是版本間的升級,例如9.04=>10.04

  2. 使用該升級方式通常需要使能backports源。

sudo apt-get update
sudo apt-get install update-manager-core
sudo do-release-upgrade

系統

查看內核

uname -a

查看系統是32位還是64

#查看long的位數,返回3264
getconf LONG_BIT
#查看文件信息,包含32-bit就是32位,包含64-bit就是64
file /sbin/init

查看Ubuntu版本

cat /etc/issue
cat /etc/lsb-release 
lsb_release -dsc

查看內核加載的模塊

lsmod

查看PCI設備

lspci

查看USB設備

lsusb 

#加參數 -v 可以顯示USB設備的描述表(descriptors
lsusb -v

查看網卡狀態

sudo apt-get install ethtool 
sudo ethtool eth0

激活網卡的Wake-on-LAN

sudo apt-get install wakeonlan
sudo ethtool -s eth0 wol g

查看CPU信息

cat /proc/cpuinfo

顯示當前硬件信息

sudo lshw
      這個命令可以顯示詳盡的硬件信息,包括廠商,信號,能力,總線等信息。使用lshw |more 耐心查看。
    lshw -html  > lshw.html 生成網頁形式的頁面。
    lshw  -short  查看硬件的簡要信息。

獲取CPU序列號或者主板序列號

#CPU ID
sudo dmidecode -t 4 | grep ID
#Serial Number
sudo dmidecode  | grep  Serial
#CPU
sudo dmidecode -t 4
#BIOS
sudo dmidecode -t 0
#主板:
sudo dmidecode -t 2
#OEM:
sudo dmidecode -t 11

顯示當前內存大小

free -m |grep "Mem" | awk '{print $2}'

查看硬盤溫度

sudo apt-get install hddtemp
sudo hddtemp /dev/sda

顯示系統運行時間

uptime

查看系統限制

ulimit -a

查看內核限制

ipcs -l

查看當前屏幕分辨率

xrandr

硬盤

查看硬盤的分區

sudo fdisk -l
Blocks字段表示分區的大小,它的單位是1024字節,也就是KB。

硬盤分區

#危險!小心操作。
sudo fdisk /dev/sda

硬盤格式化

#危險!將第一個分區格式化爲 ext3 分區, mkfs.reiserfs mkfs.xfs mkfs.vfat
sudo mkfs.ext3 /dev/sda1

硬盤檢查

#危險!檢查第一個分區,請不要檢查已經掛載的分區,否則容易丟失和損壞數據
sudo fsck /dev/sda1

分區掛載

sudo mount -t 文件系統類型 設備路經 訪問路經 
#常用文件類型如下: iso9660 光驅文件系統, vfat fat/fat32分區, ntfs ntfs分區, smbfs windows網絡共享目錄, reiserfsext3xfs Linux分區
#如果中文名無法顯示嘗試在最後增加 -o nls=utf8 -o iocharset=utf8 
#如果需要掛載後,普通用戶也可以使用,在 -o 的參數後面增加 ,umask=022 如:-o nls=utf8,umask=022

分區卸載

sudo umount 目錄名或設備名

只讀掛載ntfs分區

sudo mount -t ntfs -o nls=utf8,umask=0 /dev/sdb1 /mnt/c

可寫掛載ntfs分區

sudo mount -t ntfs-3g -o locale=zh_CN.utf8,umask=0 /dev/sdb1 /mnt/c

     默認安裝的ubuntu桌面版,會自動只讀mount ntfs格式的分區。    
sudo apt-get install ntfs-3g
    安裝這個軟件包之後,就會自動以讀寫方式mount ntfs格式的分區了。

      如果不安裝這個軟件包,必須使用root權限寫fat格式的磁盤。而且速度很慢。安裝這個軟件包後,可以用一般用戶寫fat格式磁盤,速度恢復正常。
      我曾經寫fat格式的U盤速度非常慢,只有幾百KB/s。安裝這個軟件包後,寫入速度恢復正常,達到30多MB/s。

掛載fat32分區

sudo mount -t vfat -o iocharset=utf8,umask=0 /dev/sda1 /mnt/c

掛載共享文件

sudo mount -t smbfs -o  username=xxx,password=xxx,iocharset=utf8 //192.168.1.1/share /mnt/share

掛載ISO文件

sudo mount -t iso9660 -o loop,utf8 xxx.iso /mnt/iso

查看IDE硬盤信息

sudo hdparm -i /dev/hda

查看軟raid陣列信息

cat /proc/mdstat

參看硬raid陣列信息

dmesg |grep -i raid
cat /proc/scsi/scsi

查看SATA硬盤信息

sudo hdparm -I /dev/sda

sudo apt-get install blktool
sudo blktool /dev/sda id

查看硬盤剩餘空間

df

用法:df[選項]...[文件]...顯示每個<文件>所在的文件系統的信息,默認是顯示所有文件系統。

長選項必須用的參數在使用短選項時也是必需的。
  -a, --all             包括大小爲 0 個塊的文件系統
  -B, --block-size=大小 塊以指定<大小>的字節爲單位
  -h, --human-readable  以容易理解的格式印出文件系統大小 (例如 1K 234M 2G)
  -H, --si              類似 -h,但取 1000 的次方而不是 1024
  -i, --inodes          顯示 inode 信息而非塊使用量
  -k                    --block-size=1K
  -l, --local           只顯示本機的文件系統
      --no-sync         取得使用量數據前不進行同步動作 (默認)
  -P, --portability     使用 POSIX 兼容的輸出格式
      --sync            取得使用量數據前先進行同步動作
  -t, --type=類型       只印出指定文件系統爲指定<類型>的信息
  -T, --print-type      印出文件系統類型
  -x, --exclude-type=類型   只印出文件系統不是指定<類型>信息
  -v                    (忽略)
      --help     顯示此幫助信息並離開
      --version  顯示版本信息並離開

查看目錄佔用空間

du -hs 目錄名

優盤沒法卸載

sync
fuser -km /media/usbdisk

使用文件來增加交換空間

#創建一個512M的交換文件 /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=512 
sudo mkswap /swapfile
sudo swapon /swapfile
#sudo vim /etc/fstab #加到fstab文件中讓系統引導時自動啓動
/swapfile swap swap defaults 0 0

查看硬盤當前讀寫情況

# 首先安裝 sysstat 
sudo apt-get install sysstat
#2秒刷新一次
sudo iostat -x 2

進程

查看當前的內存使用情況

free

usage:free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V]

  -b,-k,-m,-g show output in bytes, KB, MB, or GB
  -l show detailed low and high memory statistics
  -o use old format (no -/+buffers/cache line)
  -t display total for RAM + swap
  -s update every [delay] seconds
  -c update [count] times
  -V display version information and exit

連續監視內存使用情況

watch  -d free
# 使用 Ctrl + c 退出

動態顯示進程執行情況

top
top指令運行時輸入H或?打開幫助窗口,輸入Q退出指令。

查看當前有哪些進程

ps -AFL

查看目前登入用戶運行的程序

w

查看當前用戶程序實際內存佔用,並排序

ps -u $USER -o pid,rss,cmd --sort -rss

統計程序的內存耗用

ps -eo fname,rss|awk '{arr[$1]+=$2} END {for (i in arr) {print i,arr[i]}}'|sort -k2 -nr

按內存從大到小排列進程

ps -eo "%C  : %p : %z : %a"|sort -k5 -nr

cpu利用率從大到小排列進程

ps -eo "%C  : %p : %z : %a"|sort  -nr

查看當前進程樹

pstree

中止一個進程

kill 進程號(就是ps -A中的第一列的數字)
或者 killall 進程名

強制中止一個進程(在上面進程中止不成功的時候使用)

kill -9 進程號
或者 killall -9 進程名

圖形方式中止一個程序

xkill 出現骷髏標誌的鼠標,點擊需要中止的程序即可

 

查看進程打開的文件

lsof -p 進程的pid

顯示開啓文件abc.txt的進程

lsof abc.txt 

顯示22端口現在運行什麼程序

lsof -i :22 

顯示nsd進程現在打開的文件

lsof -c nsd

在後臺運行程序,退出登錄後,並不結束程序

nohup 程序 &
#查看中間運行情況 tail nohup

在後臺運行交互式程序,退出登錄後,並不結束程序

sudo apt-get install screen
screen vim a.txt
#直接退出後使用 
screen -ls   # 1656.pts-0.ubuntu   (Detached)
screen -r 1656  #恢復
#熱鍵,同時按下Ctrla鍵結束後,再按下功能鍵
C-a ?   #顯示所有鍵綁定信息
C-a w   #顯示所有窗口列表
C-a C-a #切換到之前顯示的窗口
C-a c   #創建一個新的運行shell的窗口並切換到該窗口
C-a n   #切換到下一個窗口
C-a p   #切換到前一個窗口(C-a n相對)
C-a 0..9        #切換到窗口0..9
C-a a   #發送 C-a到當前窗口
C-a d   #暫時斷開screen會話
C-a k   #殺掉當前窗口

詳細顯示程序的運行信息

strace -f -F -o outfile <cmd>

增加系統最大打開文件個數

echo 4096 > /proc/sys/fs/file-max
#或者
ulimit -n 4096

清除殭屍進程

ps -eal | awk '{ if ($2 == "Z") {print $4}}' | xargs sudo kill -9

將大於120M內存的php-cgi都殺掉

ps -eo pid,fname,rss|grep php-cgi|grep -v grep|awk '{if($3>=120000) print $1}' | xargs sudo kill -9

Linux系統中如何限制用戶進程CPU佔用率

renice +10 `ps aux | awk '{ if ($3 > 0.8 && id -u $1 > 500) print $2}'` 
#或直接編輯/etc/security/limits.conf文件。

ADSL

配置ADSL

sudo pppoeconf

ADSL手工撥號

sudo pon dsl-provider

激活ADSL

sudo /etc/ppp/pppoe_on_boot

斷開ADSL

sudo poff

查看撥號日誌

sudo plog

如何設置動態域名

#首先去 http://www.3322.org 申請一個動態域名
#然後修改 /etc/ppp/ip-up 增加撥號時更新域名指令
sudo vim /etc/ppp/ip-up
#在最後增加如下行
w3m -no-cookie -dump 'http://username:[email protected]/dyndns/update?system=dyndns&hostname=yourdns.3322.org'

網絡

根據IP查網卡地址

arping IP地址

根據IP查電腦名

nmblookup -A IP地址

查看當前IP地址

ifconfig eth0 |awk '/inet/ {split($2,x,":");print x[2]}'

查看當前外網的IP地址

w3m -no-cookie -dump www.ip138.com/ip2city.asp|grep -o '[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}'
w3m -no-cookie -dump ip.loveroot.com|grep -o '[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}/.[0-9]/{1,3/}'
curl ifconfig.me

查看當前監聽80端口的程序

lsof -i :80

查看當前網卡的物理地址

ifconfig eth0 | head -1 | awk '{print $5}'

同一個網卡增加第二個IP地址

#在網卡eth0上增加一個1.2.3.4IP
sudo ifconfig eth0:0 1.2.3.4 netmask 255.255.255.0
#刪除增加的IP
sudo ifconfig eth0:0 down

立即讓網絡支持nat

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -I POSTROUTING -j MASQUERADE

查看路由信息

netstat -rn
sudo route -n

手工增加一條路由

sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

手工刪除一條路由

sudo route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

修改網卡MAC地址的方法

sudo ifconfig eth0 down #關閉網卡
sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE #然後改地址
sudo ifconfig eth0 up #然後啓動網卡

永久改地址方法

sudo gedit /etc/network/interfaces

ifaceeth0 inet static 後面添加一行:

pre-up ifconfig eth0 hw ether 01:01:01:01:01:01

配置文件應該像如下

iface eth0 inet static
pre-up ifconfig eth0 hw ether 01:01:01:01:01:01
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1

最後是logout或者reboot

統計當前IP連接的個數

netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n
netstat -na|grep SYN|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

統計當前所有IP包的狀態

netstat -nat|awk '{print awk $NF}'|sort|uniq -c|sort -n

統計當前20000IP包中大於100IP包的IP地址

tcpdump -tnn -c 20000 -i eth0 | awk -F "." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | awk ' $1 > 100 '

屏蔽IPV6

echo "blacklist ipv6" | sudo tee /etc/modprobe.d/blacklist-ipv6

察看當前網絡連接狀況以及程序

sudo netstat -atnp

查看網絡連接狀態

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

查看當前系統所有的監聽端口

nc -zv localhost 1-65535

查看網絡的當前流量

#安裝 ethstatus 軟件
sudo apt-get install ethstatus
#查看 ADSL 的速度
sudo ethstatus -i ppp0
#查看 網卡 的速度
sudo ethstatus -i eth0
#或安裝 bwm-ng 
sudo apt-get install bwm-ng
#查看當前網絡流量
bwm-ng

查看域名的註冊備案情況

whois baidu.cn

查看到某一個域名的路由情況

tracepath baidu.cn

重新從服務器獲得IP地址

sudo dhclient

從當前頁面開始鏡像整個網站到本地

wget -r -p -np -k http://www.21cn.com
· -r:在本機建立服務器端目錄結構;
· -p: 下載顯示HTML文件的所有圖片;
· -np:只下載目標站點指定目錄及其子目錄的內容;
· -k: 轉換非相對鏈接爲相對鏈接。

如何多線程下載

sudo apt-get install axel
axel -n 5 http://xxx.xxx.xxx.xxx/xxx.zip
或者
lftp -c "pget -n 5 http://xxx.xxx.xxx.xxx/xxx.zip“

如何查看HTTP

w3m -dump_head http://www.example.com
curl --head http://www.example.com

快速使用http方式共享目錄

#進入需要共享的目錄後運行: 
python -m SimpleHTTPServer
#其它電腦使用http://ip:8000 來訪問
#自定義端口爲8080: 
python -m SimpleHTTPServer 8080

SSH遠程端口轉發

ssh -v -CNgD 7070 username@sshhostipaddress

監控網絡所有的tcp數據

sudo apt-get install snort #安裝snort入侵檢測程序
sudo snort -vde

iptables

防止外網用內網IP欺騙

#eth0 爲外網網卡
sudo iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
sudo iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
sudo iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP 

查看nat規則

sudo iptables -t nat -L

查看filter規則

sudo iptables -L -n

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章