**shell:**命令解釋器,根據輸入的命令執行相應命令。java
察看當前系統下有哪些shell:node
cat /etc/shells
複製代碼
察看當前系統正在使用的shelllinux
echo $SHELL
複製代碼
常見shell:spring
/bin/sh (已經被 /bin/bash 所取代)
/bin/bash (就是 Linux 默認的 shell)
/bin/ksh (Kornshell 由 AT&T Bell lab. 發展出來的,兼容於 bash)
/bin/tcsh (整合 C Shell ,提供更多的功能)
/bin/csh (已經被 /bin/tcsh 所取代)
/bin/zsh (基於 ksh 發展出來的,功能更強大的 shell)
複製代碼
bash 是一個爲GNU計劃編寫的Unix shell。它的名字是一系列縮寫:Bourne-Again SHell — 這是關於Bourne shell(sh)的一個雙關語(Bourne again / born again) bash 是 許 多 Linux 平 臺 的 內 定 Shell, 事 實 上, 還 有 許 多 傳 統 UNIX 上 用 的 Shell, 像 tcsh、csh、ash、bsh、ksh等等,Shell Script大體都類同,當您學會一種Shell之後,其 它的Shell會很快就上手,大多數的時候,一個Shell Script一般能夠在不少種Shell上使用。docker
bash是大多數Linux系統以及Mac OS X v10.4默認的shell,它能運行於大多數Unix風格 的操做系統之上,甚至被移植到了Microsoft Windows上的Cygwin系統中,以實現windows的POSIX虛擬接口。此外,它也被DJGPP項目移植到了MS-DOS上。shell
在bash下敲命令時,Tab鍵能夠補全已經敲了一部分的文件名和目錄名。若是是Ubuntu 系統,系統默認啓用了bash completion,還能夠補全命令的某些參數、Makefile目標等 等。若是是Debian系統,能夠用如下命令啓用bash completion:express
$ source /etc/bash_completion
複製代碼
建議將這一行加入∼/.bashrc
啓動腳本中。好比使用sudo後面接命令,若是沒有bash completion則只有sudo能夠補全,後面的命令不能補全。若是啓用了bash completion,則 後面的命令,包括命令的某些參數(好比aptitude命令的install)均可以補全了。ubuntu
好比在主目錄下要列出桌面目錄的內容,輸入(不回車)vim
$ ls De
複製代碼
而後敲Tab鍵,若是以De開頭的文件或文件夾只有Desktop一個,就自動補全爲windows
$ ls Desktop
複製代碼
不然,再敲一次Tab鍵,將會把全部以De開頭的文件或文件夾列在下面供你選擇(在這裏 咱們手動建立另一個以De開頭的文件)
$ touch Death
$ ls De
Death Desktop/
複製代碼
你能夠再補敲一個s再Tab,此次Desktop就會補全到命令後面了。有 的 人 是 從 DOS 時 代 過 來 的, 留 下 一 個 很 不 好 的 習 慣 就 是 在 找 一 個 文 件 時 反 復 地cd、ls、cd、ls
等找到了要找的文件時再想回到先前的目錄,已經不記得先前是 從哪一個目錄轉到這裏來的了。
咱們從上面能夠看出,Tab補全自己就具有了ls的功能,上面的Tab補全至關於ls -Fd De*
命令。因此咱們徹底沒必要反覆地cd到別的目錄而後ls去找文件,多按幾回Tab就能夠一條 命令完成了,這樣的好處是咱們的當前目錄不用變,不須要找完了文件再cd回來,同時省去 了大量的按鍵次數。更重要的是,自動補全同時兼具了檢查拼寫錯誤的功能,若是前面幾個 字母拼寫錯了,就補全不出東西來,用戶就知道拼寫錯了,若是前面幾個字母沒有拼寫錯, 那麼由系統補全出來的文件名確定也不會有拼寫錯誤,避免了用戶在敲很長的文件名時易犯 的拼寫錯誤。
history
複製代碼
歷史記錄是另一個很是方便的功能。按上下移動光標鍵(或者Ctrl-p、Ctrl-n
)能夠 一條一條瀏覽之前輸過的命令。若是有須要重複輸入的命令就不用輸第二次了。若是你能記 住之前輸過的某條命令中的某個關鍵字,能夠按Ctrl-r,而後輸入關鍵字,隨着你每輸入一 個字母,bash會作增量式(increasingly)查找,也能夠反覆按Ctrl-r或Ctrl-s向前向後查 找。若是找到了,按左右移動光標鍵或Home鍵(Ctrl-a)或End鍵(Ctrl-e)將該命令帶回提示 符下進一步修改,或者直接按Enter鍵原封不動地執行該命令。
bash的快捷鍵和emacs保持一致,用慣其中之一再用另外一個程序會很順手的。請記住一條原則:儘可能使用主鍵盤快捷鍵而不使用移動光標鍵和編輯鍵。由於手沒必要離開主鍵盤是效 率最高的,這樣在你一輩子之中所節省的來回移動手的時間絕對能夠用星期來計算,是絕對值 得你花十分鐘的時間記住這些快捷鍵的。
功能 | 快捷鍵 | 助記 |
---|---|---|
上 | Ctrl-p | previous |
下 | Ctrl-n | next |
左 | Ctrl-b | backward |
右 | Ctrl-f | forward |
Del | Ctrl-d | delete光標後面的 |
Home | Ctrl-a | the first letter |
End | Ctrl-e | end |
Backspace | Backspace | delete光標前面的 |
ubuntu沒有盤符這個概念,只有一個根目錄/,全部文件都在它下面
/ 根目錄
bin //系統可執行程序,如命令
boot //內核和啓動程序,全部和啓動相關的文件都保存在這裏 grub //引導器相關文件
dev //設備文件
etc //系統軟件的啓動和配置文件,系統在啓動過程當中須要讀取的文件都在這個目錄。如LILO參數、用 戶帳戶和密碼。
home //用戶的主目錄。下面是本身定義的用戶名的文件夾
lib //系統程序庫文件,這個目錄裏存放着系統最基本的動態連接共享庫,相似於Windows下的system32 目錄,幾乎全部的應用程序都須要用到這些共享庫。
media //掛載媒體設備,如光驅、U盤等
mnt //目錄是讓用戶臨時掛載別的文件系統,如掛載Windows下的某個分區,ubuntu默認仍是掛載在/media 目錄。
opt //可選的應用軟件包(不多使用)
proc //這個目錄是系統內存的映射,咱們能夠直接訪問這個目錄來獲取系統信息。也就是說,這個目錄 的內容不在硬盤上而是在內存裏。
sbin //管理員系統程序 selinux
srv
sys //udev用到的設備目錄樹,/sys反映你機器當前所接的設備 tmp //臨時文件夾
usr //這是個最龐大的目錄,咱們要用到的不少應用程序和文件幾乎都存放在這個目錄下。] bin // 應用程序
game //遊戲程序 include
lib //應用程序的庫文件 lib64
local //包含用戶程序等 sbin //管理員應用程序
複製代碼
位於/home/user
,稱之爲用戶工做目錄或家目錄,表示方式:
/home/user
~
複製代碼
絕對路徑
從/目錄開始描述的路徑爲絕對路徑,如:
cd /home ls /usr
複製代碼
相對路徑
從當前位置開始描述的路徑爲相對路徑,如:
cd ../../ ls abc/def
複製代碼
.和..
每一個目錄下都有**.和..** . 表示當前目錄 .. 表示上一級目錄,即父目錄 根目錄下的.和..都表示當前目錄
ls [OPTION]… [FILE]…
複製代碼
ls是英文單詞list的簡寫,其功能爲列出目錄的內容。這是用戶最經常使用的一個命令,因 爲用戶須要不時地查看某個目錄的內容。該命令相似於DOS下的dir命令。 對於每一個目錄, 該命令將列出其中的全部子目錄與文件。對於每一個文件,ls將輸出其文件名以及所要求的其 他信息。默認狀況下,輸出條目按字母順序排序。當未給出目錄名或是文件名時,就顯示當 前目錄的信息。
主要的OPTION有:
-a 列出隱藏文件,文件中以「.」開頭的均爲隱藏文件,如:~/.bashrc
-l 列出文件的詳細信息
-R 連同子目錄中的內容一塊兒列出
複製代碼
用ls -l
命令顯示的信息中,開頭是由10個字符構成的字符串,其中第一個字符表示文 件類型,它能夠是下述類型之一:
- 普通文件 d 目錄
l 符號連接
b 塊設備文件
c 字符設備文件
s socket文件,網絡套接字 p 管道
複製代碼
後面的9個字符表示文件的訪問權限,分爲3組,每組3位。第一組表示文件屬主的權 限,第二組表示同組用戶的權限,第三組表示其餘用戶的權限。每一組的三個字符分別表示 對文件的讀、寫和執行權限。各權限以下所示:
r 讀
w 寫
x 可執行。對於目錄,表示進入權限。
s 當文件被執行時,把該文件的UID或GID賦予執行進程的UID(用戶ID)或GID(組 ID)。
t 設置標誌位(sticky bit)。若是是有sticky bit的目錄,在該目錄下任何用戶只要有適當的權限便可建立文 件,但文件只能被超級用戶、目錄擁有者或文件屬主刪除。若是是有sticky bit的可執行文件,在該文件執行後, 指向其正文段的指針仍留在內存。這樣再次執行它時,系統就能更快地裝入該文件。
- 沒有相應位置的權限。
複製代碼
訪問權限後面的數字表示與該文件共享inode的文件總數,即硬連接數(參見下面ln命 令)。
change dir 改變當前所在路徑
cd ~
cd dir1/dir2 cd ..
複製代碼
查看指定命令所在路徑
which ls
複製代碼
查看當前所在路徑
pwd
複製代碼
mkdir [OPTION] DIRECTORY…
複製代碼
建立目錄DIRECTORY,能夠一次建立多個。OPTION若是是-p,表示能夠連同父目錄一塊兒 建立。
rmdir [OPTION]… DIRECTORY…
複製代碼
刪除空目錄,能夠一次刪除多個。OPTION若是是-p,表示能夠連同空的父目錄一塊兒刪 除。mkdir和rmdir的用法舉例:
$ mkdir a
$ mkdir a/b
$ ls a b
$ rmdir a/b
$ ls a
$ rmdir a
$ mkdir a/b
mkdir: cannot create directory `a/b': No such file or directory $ mkdir -p a/b $ rmdir -p a/b 複製代碼
touch [OPTION]… FILE…
複製代碼
刪除文件:
rm file
複製代碼
刪除目錄:
rm dir -rf
複製代碼
重命名:
mv file1 file2
複製代碼
移動文件:
mv file1 ~/
複製代碼
拷貝文件:
cp file1 file2 cp file1 dir/ cp file1 ../
複製代碼
拷貝目錄:
cp dir1 dir2 -r cp dir1 ~/ -r
複製代碼
查看文件裏內容,輸出到終端,若是cat時沒跟文件名,則讀標準輸入,遇到\n後,輸 出到標準輸出,終端下輸入Ctrl-d表示結束
more [OPTION] FILE…
複製代碼
查看文本文件的內容,屏幕顯示完一屏就等待用戶按下任意鍵再滾動到下一屏,若是中 途不想繼續看下去了,能夠按Ctrl+C或q終止顯示。
less [OPTION] FILE…
複製代碼
查看文本文件的內容,屏幕顯示完一屏就等待用戶按鍵,用戶能夠向上或向下查看,如 果中途不想繼續看下去了,能夠按Ctrl+C或q終止顯示。
head [OPTION]… FILE…
顯示指定文件的前面幾行。若是沒有指定文件,將從標準輸入(鍵盤)上讀取。若是沒 有指定要顯示的行數,則默認顯示前10行。若是要顯示文件的前5行:
$ head -5 file1
複製代碼
tail [OPTION]… FILE…
顯示文件的最後幾行。若沒有指定顯示的行或字符數,則默認顯示末尾10行。若是要顯 示文件末5行:
$ tail -5 file1
複製代碼
連接有兩種,一種被稱爲硬連接(Hard Link),另外一種被稱爲符號連接(Symbolic Link)。創建硬連接時,連接文件和被連接文件必須位於同一個文件系統中,而且不能創建 指向目錄的硬連接。而對符號連接,則不存在這個問題。默認狀況下,ln產生硬連接。若是 給ln命令加上-s選項,則創建符號連接。舉例以下,注意ls -l列出文件的硬連接數和字節 數:
硬連接:
touch hello
ln hello word_h
複製代碼
軟連接:
ln -s hello word_s
複製代碼
這個命令須要下載安裝,ubuntu下
sudo apt-get install tree
複製代碼
按結構樹的形狀顯示目錄和文件
利用 wc 指令咱們能夠計算文件的 Byte 數、字數、或是列數,若不指定文件名稱、或 是所給予的文件名爲「-」,則 wc 指令會從標準輸入設備讀取數據。
wc -l ./*
複製代碼
-c 或–bytes 或–chars 只顯示 Bytes 數。 -l 或–lines 只顯示列數。 -w 或–words 只顯示字數。
od -tcx file1
複製代碼
-t 指定數據的顯示格式,主要的參數有: c ASCII字符或反斜槓序列 d[SIZE] 有符號十進制數,每一個整數SIZE字節。 f[SIZE] 浮點數,每一個整數SIZE字節。 o[SIZE] 八進制(系統默認值爲02),每一個整數SIZE字節。 u[SIZE] 無符號十進制數,每一個整數SIZE字節。 x[SIZE] 十六進制數,每一個整數SIZE字節。
查看某個目錄的大小: 以M爲單位
du -hm /home/sihai/test
複製代碼
以B爲單位
du -hb ./*
複製代碼
以K爲單位,4k的整數倍
du -hk ./*
複製代碼
df查看磁盤使用狀況
df --block-size=GB df --block-size=MB
複製代碼
查看當前登錄用戶
chmod [who] [+|-|=] [mode] 文件名
操做對象who但是下述字母中的任一個或者它們的組合:
u 表示「用戶(user)」,即文件或目錄的全部者。 g 表示「同組(group)用戶」,即與文件屬主有相同組ID的全部用戶。 o 表示「其餘(others)用戶」。 a 表示「全部(all)用戶」。它是系統默認值。
操做符號能夠是:
設置mode所表示的權限可用下述字母的任意組合:
r 可讀。 w 可寫。 x 可執行。
chmod [mode] 文件名 咱們必須首先了解用數字表示的屬性的含義:
0表示沒有權限, 1表示可執行權限, 2表示可寫權限, 4表示可讀權限,
而後將其相加。因此數字屬性的格式應爲3個從0到7的八進制數,其順序是 (u)(g)(o)。
例如,若是想讓某個文件的屬主有「讀/寫」二種權限,須要把4(可讀)+2(可寫)= 6(讀/寫)。
好比設置一個文件容許全部用戶可寫
$ chmod a+w file1
複製代碼
設置一個文件容許全部用戶可讀、可寫、不可執行
$ chmod 666 file1
複製代碼
chown [OPTION]… [OWNER:GROUP] FILE…
chown [OPTION]… –reference=RFILE FILE…
更改某個文件或目錄的屬主和屬組。這個命令也很經常使用。例如root用戶把本身的一個文件拷貝給用戶A, 爲了讓用戶A可以存取這個文件,root用戶應該把這個文件的屬主設爲A, 不然,用戶A沒法存取這個文件。
OPTION的主要參數:
$ sudo chown sihai:nogroup file1
複製代碼
注意:
chgrp [OPTION]… GROUP FILE…
chgrp [OPTION]… –reference=RFILE FILE…
該命令改變(指定)指定文件所屬的用戶組。其中group能夠是用戶組ID,也能夠是/etc/group文件中用戶組的組名。
文件名是以空格分開的要改變屬組的文件列表,支持通配 符。若是用戶不是該文件的屬主或超級用戶,則不能改變該文件的組。
OPTION的主要參數:
根據文件名查找
find [OPTION] path… [expression]
在目錄中搜索文件,path指定目錄路徑,系統從這裏開始沿着目錄樹向下查找文件。它是一個路徑列表,相互用空格分離,若是不寫path,那麼默認爲當前目錄。Expression 是 find命令接受的表達式,find命令的全部操做都是針對表達式的。
一條最經常使用的find命令--在當前目錄及子目錄下查找全部以file開頭的文件名。
$ find . -name 'file*'
$ find / -name 'vimrc'
$ find ~ -name '*.c'
複製代碼
根據內容檢索
grep [options] PATTERN [FILE...]
複製代碼
在指定文件中搜索特定的內容,並將含有這些內容的行輸出到標準輸出。若不指定文件 名,則從標準輸入讀取。 [options]部分包含的主要參數:
-c:只輸出匹配行的計數。
-I:不區分大小寫(只適用於單字符)。
-h:查詢多文件時不顯示文件名。
-l:查詢多文件時只輸出包含匹配字符的文件名。
-n:顯示匹配行及行號。
-s:不顯示不存在或無匹配文本的錯誤信息。
-v:顯示不包含匹配文本的全部行。
-R: 連同子目錄中全部文件一塊兒查找。
好比到系統頭文件目錄下查找全部包含printf的文件
$ grep 'printf' /usr/include -R
複製代碼
更新源服務器列表
sudo vi /etc/apt/sources.list
複製代碼
更新完服務器列表後須要更新下源
sudo apt-get update 更新源 sudo apt-get install package 安裝包 sudo apt-get remove package 刪除包 sudo apt-cache search package 搜索軟件包 sudo apt-cache show package 獲取包的相關信息,如說明、大小、版本等 sudo apt-get install package --reinstall 從新安裝包 sudo apt-get -f install 修復安裝 sudo apt-get remove package --purge 刪除包,包括配置文件等 sudo apt-get build-dep package 安裝相關的編譯環境 sudo apt-get upgrade 更新已安裝的包 sudo apt-get dist-upgrade 升級系統 sudo apt-cache depends package 瞭解使用該包依賴那些包 sudo apt-cache rdepends package 查看該包被哪些包依賴 sudo apt-get source package 下載該包的源代碼 sudo apt-get clean && sudo apt-get autoclean 清理無用的包 sudo apt-get check 檢查是否有損壞的依賴
安裝deb軟件包命令: sudo dpkg -i xxx.deb 刪除軟件包命令: sudo dpkg -r xxx.deb 連同配置文件一塊兒刪除命令: sudo dpkg -r --purge xxx.deb 查看軟件包信息命令: sudo dpkg -info xxx.deb 查看文件拷貝詳情命令: sudo dpkg -L xxx.deb 查看系統中已安裝軟件包信息命令: sudo dpkg -l 從新配置軟件包命令: sudo dpkg-reconfigure xxx
命令格式:
mount [-t vfstype] -o options device dir
其中:
光盤或光盤鏡像:iso9660
DOS fat16文件系統:msdos Windows 9x fat32文件系統:vfat Windows NT ntfs文件系統:ntfs
Mount Windows文件網絡共享:smbfs UNIX(LINUX) 文件網絡共享:nfs
-o options 主要用來描述設備或檔案的掛接方式。經常使用的參數有: loop:用來把一個文件當成硬盤分區掛接上系統 ro:採用只讀方式掛接設備 rw:採用讀寫方式掛接設備 iocharset:指定訪問文件系統所用字符集
device 要掛接(mount)的設備。
dir設備在系統上的掛接點(mount point)。
由 於 近 年 來 磁 盤 技 術 的 巨 大 進 步, 新 的 電 腦 系 統 都 配 備 了 大 容 量 的 磁 盤 系 統, 在 Windows下許多人都習慣把軟件和資料作成光盤鏡像文件經過虛擬 光驅來使用。這樣作有 許多好處:1、減輕了光驅的磨損;2、如今硬盤容量巨大存放幾十個光盤鏡像文件不成問 題,隨用隨調十分方便;3、硬盤的讀取速度要遠 遠高於光盤的讀取速度,CPU佔用率大大 下降。其實linux系統下製做和使用光盤鏡像比Windows系統更方便,沒必要借用任何第三方軟 件包。
1.從光盤製做光盤鏡像文件。將光盤放入光驅,執行下面的命令。
cp /dev/cdrom /home/sunky/mydisk.iso
複製代碼
或
dd if=/dev/cdrom of=/home/sunky/mydisk.iso
複製代碼
**注:**執行上面的任何一條命令均可將當前光驅裏的光盤製做成光盤鏡像文件/home/ sunky/mydisk.iso
2.文件和目錄製做成光盤鏡像文件,執行下面的命令。
mkisofs -r -J -V mydisk -o /home/sunky/mydisk.iso /home/sunky/ mydir
複製代碼
**注:**這條命令將/home/sunky/mydir目錄下全部的目錄和文件製做成光盤鏡像文件/ home/sunky/mydisk.iso
,光盤卷標爲:mydisk
3.光盤鏡像文件的掛接(mount)
mkdir /mnt/vcdrom
複製代碼
**注:**創建一個目錄用來做掛接點(mount point)
mount -o loop -t iso9660 /home/sunky/mydisk.iso /mnt/vcdrom
複製代碼
**注:**使用/mnt/vcdrom就能夠訪問盤鏡像文件mydisk.iso裏的全部文件了。
1.檢測存儲設備名稱
sudo fdisk -l
複製代碼
2.掛載存儲設備sdb1到掛載點/mnt目錄
sudo mount /dev/sdb1 /mnt
複製代碼
3.訪問/mnt
4.卸載/mnt
sudo umount /mnt
複製代碼
卸載命令
sudo umount 掛在點
複製代碼
dd:拷貝
例1:拷貝光碟(注意,你的光碟是標準的 iso9660格式才能夠這麼作)
dd if=/dev/cdrom of=cdrom.iso
複製代碼
例2:將文件sfile拷貝到文件 dfile中。
$ dd if=sfile of=dfile
複製代碼
例3:建立一個100M的空文件
dd if=/dev/zero of=hello.txt bs=100M count=1
複製代碼
/dev/null,外號叫無底洞,你能夠向它輸出任何數據,它通吃,而且不會撐着!
/dev/zero,是一個輸入設備,你可你用它來初始化文件,從裏面讀出來的數據都是0。
tar [主選項+輔選項] 文件或者目錄 tar能夠爲文件和目錄建立檔案。
利用tar命令用戶能夠爲某一特定文件建立檔案(備份文件),也能夠在檔案中改變文件,或者向檔案中加入新的文件。使用該命令時,主選項是 必需要有的,輔選項是輔助使用的,能夠選用。
主選項包括:
輔選項包括:
f 使用檔案文件或設備,這個選項一般是必選的。(經常使用) k 保存已經存在的文件。
m 在還原文件時,把全部文件的修改時間設定爲如今。 M 建立多卷的檔案文件,以便在幾個磁盤中存放。
v 詳細報告tar處理的文件信息。如無此選項,tar不報告文件信息。(經常使用) w 每一步都要求確認。
z 用gzip來壓縮/解壓縮文件,加上該選項後能夠將檔案文件進行壓縮,但還原時也必定要使用該選項進行解壓 縮。(經常使用)
j 用bzip2來壓縮/解壓縮文件,加上該選項後能夠將檔案文件進行壓縮,但還原時也必定要使用該選項進行解壓 縮。(經常使用)
要將文件備份到一個特定的設備,只需把設備名做爲備份文件名。 打包:
tar cvf dir.tar dir tar xvf dir.tar dir
複製代碼
打gz壓縮包:
tar zcvf dir.tar.gz dir tar zxvf dir.tar.gz
複製代碼
打bz2壓縮包:
tar jcvf dir.tar.bz2 dir tar jxvf dir.tar.bz2
複製代碼
指定目錄解壓縮:
tar zxvf dir.tar.gz -C ~/test
複製代碼
打包:把dir壓縮成newdir.rar
rar a -r newdir dir
複製代碼
解包:把newdir.rar解壓縮到當前目錄
unrar x newdir.rar
複製代碼
####7.3zip 打包:
zip -r dir.zip dir
複製代碼
解包:
unzip dir.zip
複製代碼
查看當前在線上的用戶狀況。全部的選項都是可選的,不使用任何選項時,who命令將 顯示如下三項內容:
login name:登陸用戶名; terminal line:使用終端設備; login time:登陸到系統的時間。
sihai@ubuntu:~/demo$ who -uH
名稱 線路 時間 空閒 進程號 備註 sihai tty2 2014-08-14 13:31 . 6798
sihai tty7 2014-08-14 01:31 舊 2423
sihai pts/1 2014-08-14 01:31 12:00 2843 (:0)
sihai pts/3 2014-08-14 10:39 . 2843 (:0)
複製代碼
####8.2 ps
ps [選項]
ps命令用於監控後臺進程的工做狀況,由於後臺進程是不和屏幕鍵盤這些標準輸入/輸 出設備進行通訊的,因此若是須要檢測其狀況,即可以使用ps命令了。選項部分以下:
-e 顯示全部進程。
-f 全格式。
-h 不顯示標題。
-l 長格式。
-w 寬輸出。
a 顯示終端上的全部進程,包括其餘用戶的進程。 r 只顯示正在運行的進程。
x 顯示沒有控制終端的進程。
這個命令參數有不少,但通常的用戶只需掌握一些最經常使用的命令參數就能夠了。
最經常使用的三個參數是u、a、x
, 咱們首先以root身份登陸系統,查看當前進程情況
sihai@ubuntu:~$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 3672 2008 ? Ss 08:46 0:01 /sbin/init
sihai@ubuntu:~$ ps ajx
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 4592 6948 6948 4592 pts/3 6948 R+ 1000 0:00 ps ajx
sihai@ubuntu:~$ ps -Lf 2423
UID PID PPID LWP C NLWP STIME TTY STAT TIME CMD
1000 2423 2282 2423 0 4 08:46 ? Ssl 0:00 gnome-session --session=ubuntu
1000 2423 2282 2465 0 4 08:46 ? Ssl 0:00 gnome-session --session=ubuntu
1000 2423 2282 2466 0 4 08:46 ? Ssl 0:00 gnome-session --session=ubuntu
1000 2423 2282 2468 0 4 08:46 ? Ssl 0:00 gnome-session --session=ubuntu
複製代碼
Head標頭:
USER 用戶名 UID 用戶ID(User ID) PID 進程ID(Process ID) PPID 父進程的進程ID(Parent Process id) SID 會話ID(Session id) %CPU 進程的cpu佔用率 %MEM 進程的內存佔用率 VSZ 進程所使用的虛存的大小(Virtual Size) RSS 進程使用的駐留集大小或者是實際內存的大小,Kbytes字節。 TTY 與進程關聯的終端(tty) STAT 進程的狀態:進程狀態使用字符表示的(STAT的狀態碼) R 運行 Runnable (on run queue) 正在運行或在運行隊列中等待。 S 睡眠 Sleeping 休眠中, 受阻, 在等待某個條件的造成或接受到信號。 I 空閒 Idle Z 僵死 Zombie(a defunct process) 進程已終止, 但進程描述符存在, 直到父進程調用wait4()系統調 用後釋放。 D 不可中斷 Uninterruptible sleep (ususally IO) 收到信號不喚醒和不可運行, 進程必須等待直到有中 斷髮生。 T 中止 Terminate 進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後中止運行運行。 P 等待交換頁 W 無駐留頁 has no resident pages 沒有足夠的記憶體分頁可分配。 X 死掉的進程 < 高優先級進程 高優先序的進程 N 低優先 級進程 低優先序的進程 L 內存鎖頁 Lock 有記憶體分頁分配並縮在記憶體內 s 進程的領導者(在它之下有子進程); l 多進程的(使用 CLONE_THREAD, 相似 NPTL pthreads)
fg [job…]
把指定的後臺做業或掛起做業移到前臺運行。 參數job是一個或多個進程的PID,或者 是命令名稱,或者是做業號(做業號前面要帶一個%號)。
一般在shell中輸入命令啓動進程後,若是該進程須要與用戶交互,那麼此後用戶的鍵 盤輸入都被該進程讀取,直到該進程退出後纔出現shell提示符$,這種進程爲前臺進程。
若是在命令行的末尾加上&字符,則shell爲這個命令建立一個後臺進程,它雖然也能夠 輸出到屏幕,可是不能讀取鍵盤輸入,無論執行命令的進程有沒有退出都馬上回到shell提 示符接受下一條命令的輸入。若是該進程也須要讀取鍵盤輸入,則被掛起等待直到用戶用fg 命令把它變成前臺進程。若是一個命令須要較長的處理時間而且不須要與用戶交互,就適合 把它放在後臺執行。
bg [job…]
把被掛起的進程提到後臺執行。 其中,job是一個或多個進程的PID、命令名稱或者做 業號,在參數前要帶%號。
向指定進程發送信號
kill [ -signal | -s signal ] pid ...
查看信號編號
kill -l [ signal ]
複製代碼
給一個進程發信號,或終止一個進程的運行。
kill命令若是不帶參數而直接跟pid,就是發給該進程SIGTERM信號,大部分進程收到該 信號就會終止。可是被掛起的進程不能處理信號,因此必須發SIGKILL信號,由系統強制終 止進程。
查看當前進程環境變量
$env
複製代碼
sudo useradd -s /bin/bash -g sihai -d /home/sihai -m sihai sudo useradd -s /bin/sh -g group -G adm,root xwp
複製代碼
此命令新建了一個用戶xwp,該用戶的登陸Shell是/bin/sh,他屬於group用戶組,同時 又屬於adm和root用戶組,其中group用戶組是其主組。
-s 指定新用戶登錄時shell類型
-g 指定所屬組,該組必須已經存在
-G 指定附屬組,該組必須已經存在
-d 用戶家目錄
-m 用戶家目錄不存在時,自動建立該目錄
sudo groupadd sihai
複製代碼
sudo passwd sihai
複製代碼
su 用戶名
su sihai
複製代碼
變成root用戶
sudo su
複製代碼
設置root密碼
passwd
複製代碼
userdel 選項 用戶名
經常使用的選項是-r,他的做用是把用戶的主目錄一塊兒刪除。 例如:
sudo userdel -r sihai
複製代碼
此命令刪除用戶sihai在系統文件(主要是/etc/passwd,/etc/shadow,/etc/ group等)中的記錄,同時刪除用戶的主目錄。
1.查看網卡信息
ifconfig
複製代碼
2.關閉網卡
sudo ifconfig eth0 down
複製代碼
3.開啓網卡eth0
sudo ifconfig eth0 up
複製代碼
4.給eth0配置臨時IP
sudo ifconfig eth0 IP
複製代碼
ping [選項] 主機名/IP地址
查看網絡上的主機是否在工做。它向該主機發送ICMP ECHO_REQUEST包。有時咱們想從網絡上的某臺主機上下載文件,但是又不知道那臺主機是否開着,就須要使用ping命令查看。
命令中各選項的含義以下:
-c 數目 在發送指定數目的包後中止。 -d 設定SO_DEBUG的選項。 -f 大量且快速地送網絡封包給一臺機器,看它的迴應。 -I 秒數 設定間隔幾秒送一個網絡封包給一臺機器,預設值是一秒送一次。 -l 次數 在指定次數內,以最快的方式送封包數據到指定機器(只有超級用戶可使用此選項)。 -q 不顯示任何傳送封包的信息,只顯示最後的結果。 -r 不經由網關而直接送封包到一臺機器,一般是查看本機的網絡接口是否有問題。 -s 字節數 指定發送的數據字節數,預設值是56,加上8字節的ICMP頭,一共是64ICMP數據字節。
netstat [選項]
顯示網絡鏈接、路由表和網絡接口信息,可讓用戶得知目前都有哪些網絡鏈接正在運 做。命令中各選項的含義以下:
-a 顯示全部socket,包括正在監聽的。 -c 每隔1秒就從新顯示一遍,直到用戶中斷它。 -i 顯示全部網絡接口的信息,格式同「ifconfig -e」。 -n 以網絡IP地址代替名稱,顯示出網絡鏈接情形。 -r 顯示核心路由表,格式同「route -e」。 -t 顯示TCP協議的鏈接狀況。 -u 顯示UDP協議的鏈接狀況。 -v 顯示正在進行的工做。
####10.4nslookup
nslookup name
查詢一臺機器的IP地址和其對應的域名。它一般須要一臺域名服務器來提供域名服務。 若是用戶已經設置好域名服務器,就能夠用這個命令查看不一樣主機的IP地址對應的域名。
不帶參數使用nslookup命令時,出現提示符「>」,在後面輸入要查詢的IP地址或域名 並回車便可。若是要退出該命令,輸入exit並回車便可。
sihai@ubuntu:~$ nslookup
> www.sihai.cn
Server: 127.0.0.1
Address: 127.0.0.1#53
複製代碼
finger [-lmsp] user [user@host …]
查詢用戶的信息,一般會顯示系統中某個用 戶的用戶名、主目錄、停滯時間、登陸時間、登陸shell等信息。若是要查詢遠程機上的用 戶信息,須要在用戶名後面接「@主機名」,採用[用戶名@主機名]的格式,不過要查詢的網 絡主機須要運行finger守護進程。
命令中各選項的含義以下:
-s 顯示用戶的註冊名、實際姓名、終端名稱、寫狀態、停滯時間、登陸時間等信息。 -l 除了用-s選項顯示的信息外,還顯示用戶主目錄、登陸shell、郵件狀態等信息,以 及用戶主目錄下的.plan、.project和.forward文件的內容。 -p 除了不顯示.plan文件和.project文件之外,與-l選項相同。
sihai@ubuntu:~$ finger sihai
Login: sihai Name: sihai
Directory: /home/sihai Shell: /bin/bash
On since Mon Sep 8 08:55 (CST) on tty7 14 hours 48 minutes idle On since Mon Sep 8 21:57 (CST) on pts/1 from :0
11 minutes 18 seconds idle
On since Mon Sep 8 23:12 (CST) on pts/2 from :0 6 seconds idle
No mail. No Plan.
複製代碼
1.安裝vsftpd服務器
sudo apt-get install vsftpd
複製代碼
2.配置vsftpd.conf文件
sudo vi /etc/vsftpd.conf
複製代碼
添加下面設置
anonymous_enable=YES
anon_root=/home/sihai/ftp
no_anon_password=YES
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=0022
複製代碼
3.重啓服務器,從新加載/etc/vsftpd.conf配置文件
ubuntu12.04下
sudo /etc/init.d/vsftpd restart
ubuntu14.04下
sudo /lib/init/upstart-job vsftpd restart
複製代碼
4.進入你的/home/sihai/ftp目錄下建立一個空目錄,供用戶上傳
cd ~/ftp
mkdir anonymous chmod 777 anonymous
複製代碼
5.測試上傳功能,登錄ftp服務器,進入到anonymous目錄
ftp IP
cd anonymous
複製代碼
6.上傳命令,能夠把你當前目錄下的文件上傳到ftp服務器的anonymous目錄
put somefile
get somefile
複製代碼
Ubuntu 默認已經安裝ftp客戶端
lftp 也 是 一 種 ftp 客 戶 程 序。 它 是 以 文 本 方 式 操 做 的, 但 是 比 起 圖 形 界 面 更 爲 方 便。lftp幾乎具備bash的全部方便功能,Tab 補全,bookmark, queue, 後臺下載等能夠 獲得支持。用法與ftp相似,主要的指令以下:
put 上傳文件 mput 上傳多個文件 get 下載文件 mget 下載多個文件 mirror 下載整個目錄及其子目錄 mirror –R 上傳整個目錄及其子目錄 !command 調用本地shell執行命令command
注意,有的發行版可能缺省沒有安裝lftp工具,須要用戶本身安裝。若是是Debian或 Ubuntu系統,則安裝lftp軟件包。
sudo apt-get install lftp
複製代碼
1.安裝nfs服務器
sudo apt-get install nfs-kernel-server
複製代碼
2.設置/etc/exports配置文件
sudo vi /etc/exports
複製代碼
添加這行配置
/home/用戶名/nfs *(rw,sync,no_root_squash)
複製代碼
3.在用戶目錄下建立nfs目錄
mkdir /home/用戶名/nfs
複製代碼
4.重啓服務器,從新加載配置文件
sudo /etc/init.d/nfs-kernel-server restart
複製代碼
5.在/home/用戶名/nfs目錄下建立測試文件hello
cd /home/用戶名/nfs touch hello
複製代碼
6.測試服務器,把服務器共享目錄nfs掛在到/mnt節點
sudo mount -t nfs -o nolock -o tcp IP:/home/用戶名/nfs /mnt
複製代碼
7.進入/mnt目錄能夠看到hello文件,表示構建成功
8.卸載網絡共享目錄
sudo umount /mnt
複製代碼
1.安裝ssh服務器
sudo apt-get install openssh-server
複製代碼
2.遠程登錄
ssh 用戶名@IP
複製代碼
Shift-pageup
Shift-pagedown
複製代碼
看手冊(叫作manual或man page)。每個命令和系統函數都有本身的man page。
man man
複製代碼
man read
複製代碼
查看read命令的man page
man 2 read
複製代碼
查看read系統函數的man page(在第二個section中,表示爲read(2)) man -k read 以read爲關鍵字查找相關的man page
清屏。使光標和提示符回到屏幕第一行。
快捷鍵:Ctrl-l
####12.4 alias alias [-p] name=value …
將 value 字 符 串 起 個 別 名 叫 name, 以 後 在 命 令 行 輸 入 name,shell 自 動 將 其 解 釋 爲value,若是不帶參數執行本命令,或以參數-p執行,則顯示當前定義的別名列表。
$ alias
alias ls='ls --color=auto' alias rm='rm -i'
複製代碼
echo [-n] 字符串
在顯示器上顯示一段文字,通常起到一個提示的做用。其中選項n表示輸出文字後不換 行;字符串能夠加引號,也能夠不加引號。用echo命令輸出加引號的字符串時,將字符串原 樣輸出;用echo命令輸出不加引號的字符串時,將字符串中的各個單詞做爲字符串輸出,各 字符串之間用一個空格分割。
查看上一個程序退出數值,正常狀況程序退出值是0
echo $?
複製代碼
查看當前時間
umask [-p] -S [mode]
umask指定用戶建立文件時的掩碼,其中的mode和chmod的命令中的格式同樣。若是不用 mode參數,則顯示當前的umask設置。若是用-S參數,則以符號形式顯示設置。
$ umask 0022
$ umask -S u=rwx,g=rx,o=rx
複製代碼
好比該用戶touch或gedit建立一個文件,則其默認權限爲-rw-r-r–
,若是該用戶創 建一個可執行文件(好比編譯生成的程序),則其默認權限爲-rwxr-xr-x
。也就是說,因爲 umask的設定,建立的文件默認是不具備g的w權限和o的w權限的,除非用chmod更改權限。
建立終端標籤
Ctrl + Shift + t
複製代碼
切換標籤
Alt+n(n=1)
複製代碼
新開終端
Ctrl + Shift + n
複製代碼
關機重啓這些操做都須要有root權限
shutdown -t 秒數 [-rkhncfF] 時間 [警告訊息]
選項:
-t 秒數 : 設定在切換至不一樣的runlevel以前, 警告和刪除二訊號之間的延遲時間(秒). -k : 僅送出警告訊息文字, 但不是真的要 shutdown. -r : shutdown 之後從新開機 -h : shutdown 之後關機. -n : 不通過 init , 由 shutdown 指令自己來作關機動做.(不建議你用) -f : 從新開機時, 跳過 fsck 指令, 不檢查檔案系統. -F : 從新開機時, 強迫作 fsck 檢查. -c : 將已經正在 shutdown 的動做取消.
例子:
shutdown -r now 馬上從新開機 shutdown -h now 馬上關機
shutdown -k now 'Hey! Go away! now....' 發出警告訊息, 但沒有真的關機 shutdown -t3 -r now 馬上從新開機, 但在警告和刪除processes 之間, 延遲3秒鐘. shutdown -h 10:42 'Hey! Go away!' 10:42 分關機
shutdown -r 10 'Hey! Go away!' 10 分鐘後關機
shutdown -c 將剛纔下的 shutdown 指令取消,必須切換至其它tty, 登入之後, 才能下此一指令. shutdown now 切換至單人操做模式(不加任何選項時)
複製代碼
注意事項: 時間參數務必要加: 不是用 now, 即是用 hh:mm 或 mm now 其實就是 0 的意思.
uname -a
複製代碼
lsb_release -a
複製代碼
free -m
複製代碼
vi是「Visual interface」的簡稱,它在Linux上的地位就彷彿Edit程序在DOS上同樣。 它能夠執行輸出、刪除、查找、替換、塊操做等衆多文本操做,並且用戶能夠根據本身的需 要對其進行定製。Vi不是一個排版程序,它不象Word或WPS那樣能夠對字體、格式、段落等 其餘屬性進行編排,它只是一個文本編輯程序。 vi沒有菜單,只有命令,且命令繁多。
Vi有三種基本工做模式:
任什麼時候候,無論用戶處於何種模式,只要按一下ESC鍵,便可使Vi進入命令模式;咱們 在shell環境(提示符爲$)下輸入啓動Vi命令,進入編輯器時,也是處於該模式下。在該模式 下,用戶能夠輸入各類合法的Vi命令,用於管理本身的文檔。此時從鍵盤上輸入的任何字符 都被當作編輯命令來解釋,若輸入的字符是合法的Vi命令,則Vi在接受用戶命令以後完成相 應的動做。但需注意的是,所輸入的命令並不在屏幕上顯示出來。若輸入的字符不是Vi的合 法命令,Vi會響鈴報警。
在命令模式下輸入插入命令i、附加命令a 、打開命令o、修改命令c、取代命令r或替換 命令s均可以進入文本輸入模式。在該模式下,用戶輸入的任何字符都被Vi當作文件內容保 存起來,並將其顯示在屏幕上。在文本輸入過程當中,若想回到命令模式下,按鍵ESC便可。
末行模式也稱ex轉義模式。在命令模式下,用戶按「:」鍵便可進入末行模式下,此時 Vi會在顯示窗口的最後一行(一般也是屏幕的最後一行)顯示一個「:」做爲末行模式的提示 符,等待用戶輸入命令。多數文件管理命令都是在此模式下執行的(如把編輯緩衝區的內容 寫到文件中等)。末行命令執行完後,Vi自動回到命令模式。例如:
:sp newfile
複製代碼
則分出一個窗口編輯newfile文件。若是要從命令模式轉換到編輯模式,能夠鍵入命令a 或者i;若是須要從文本模式返回,則按Esc鍵便可。在命令模式下輸入「:」便可切換到末 行模式,而後輸入命令。
進入插入模式:
i: 插入光標前一個字符 I: 插入行首 a: 插入光標後一個字符 A: 插入行未 o: 向下新開一行,插入行首 O: 向上新開一行,插入行首
進入命令模式: ESC:從插入模式或末行模式進入命令模式 移動光標:
h: 左移 j: 下移 k: 上移 l: 右移 M: 光標移動到中間行 L: 光標移動到屏幕最後一行行首 G: 移動到指定行,行號 -G w: 向後一次移動一個字 b: 向前一次移動一個字 {: 按段移動,上移 }: 按段移動,下移 Ctr-d: 向下翻半屏 Ctr-u: 向上翻半屏 Ctr-f: 向下翻一屏 Ctr-b: 向上翻一屏 gg: 光標移動文件開頭 G: 光標移動到文件末尾
刪除命令:
x: 刪除光標後一個字符,至關於 Del X: 刪除光標前一個字符,至關於 Backspace dd: 刪除光標所在行,n dd 刪除指定的行數 D: 刪除光標後本行全部內容,包含光標所在字符 d0: 刪除光標前本行全部內容,不包含光標所在字符 dw: 刪除光標開始位置的字,包含光標所在字符
撤銷命令:
u: 一步一步撤銷 U: 一次性撤銷當前行所做的全部操做 Ctr-r: 反撤銷
重複命令:
.: 重複上一次操做的命令
文本行移動:
: 文本行右移
複製粘貼:
yy: 複製當前行,n yy 複製 n 行 p: 在光標所在位置向下新開闢一行,粘貼
可視模式:
v: 按字符移動,選中文本 V: 按行移動,選中文本可視模式能夠配合 d, y, >>, << 實現對文本塊的刪除,複製,左右移動
替換操做:
r: 替換當前字符 R: 替換當前行光標後的字符
查找命令:
/: str查找 n: 下一個 N:上一個
替換命令: 把abc所有替換成123
:%s/abc/123/g
複製代碼
代碼排版:
gg=G: 代碼自動縮進排版
分屏操做:
sp: 上下分屏,後可跟文件名 vsp: 左右分屏,後可跟文件名 Ctr+w+w: 在多個窗口切換
啓動分屏
1.使用大寫O參數進行垂直分屏
$ vim -On file1 file2 ...
複製代碼
2.使用小寫o參數進行水平分屏
$ vim -on file1 file2 ...
複製代碼
注: n是數字,表示分屏的數量,n要大於等於文件個數
關閉分屏
1.關閉當前窗口
ctrl+w c
複製代碼
2.關閉當前窗口,若是隻剩最後一個,則退出vim
ctrl+w q
複製代碼
編輯中分屏
1.上下分割當前打開的文件
ctrl+w s
複製代碼
2.上下分割,並打開一個新的文件
:sp filename
複製代碼
3.左右分割當前打開的文件
ctrl+w v
複製代碼
4.左右分割,並打開一個新的文件
:vsp filename
複製代碼
分屏編輯中光標的移動 vi中的光標鍵是h,j,k,l,要在各個屏之間切換,只須要先按一下ctrl+w
1.把光標移動到上邊的屏
ctrl+w k
複製代碼
2.把光標移動到下邊的屏
ctrl+w j
複製代碼
3.把光標移動到右邊的屏
ctrl+w l
複製代碼
4.把光標移動到左邊的屏
ctrl+w h
複製代碼
5.把光標移動到下一個的屏
ctrl+w w
複製代碼
移動分屏 1.向上移動
ctrl+w K
複製代碼
2.向下移動
ctrl+w J
複製代碼
3.向右移動
ctrl+w L
複製代碼
4.向左移動
ctrl+w H
複製代碼
屏幕尺寸
1.增長高度
ctrl+w +
複製代碼
2.減小高度
ctrl+w -
複製代碼
3.讓全部屏的高度一致
ctrl+w =
複製代碼
4.左加寬度
ctrl+w >
複製代碼
5.右加寬度
ctrl+w <
複製代碼
6.右增長n寬 (如:n=30)
ctrl+w n <
複製代碼
文章有不當之處,歡迎指正,若是喜歡微信閱讀,你也能夠關注個人微信公衆號:
好好學java
,獲取優質學習資源。