Linux-基礎學習(一)-基本命令

開始今日份整理node

1.Linux的文件目錄操做

1.1 ls

簡述:ls是list的縮寫,用於列出指定目錄或文件python

經常使用的選項mysql

1 -a:顯示全部檔案及目錄(ls內定將檔案名或目錄名稱爲「.」的視爲隱藏,不會列出)
2 -A:顯示除影藏文件「.」和「..」之外的全部文件列表;
3 -d:僅顯示目錄名,而不顯示目錄下的內容列表。顯示符號連接文件自己,而不顯示其所指向的目錄列表;
4 -l:以長格式顯示目錄下的內容列表。輸出的信息從左到右依次包括文件名,文件類型、權限模式、硬鏈接數、全部者、組、文件大小和文件的最後修改時間等

ls-l的結果linux

1.2 Linux的目錄結構

如下是對這些目錄的解釋:nginx

/bin:
bin是Binary的縮寫, 這個目錄存放着最常用的命令。
/boot:
這裏存放的是啓動Linux時使用的一些核心文件,包括一些鏈接文件以及鏡像文件。
/dev :
dev是Device(設備)的縮寫, 該目錄下存放的是Linux的外部設備,在Linux中訪問設備的方式和訪問文件的方式是相同的。
/etc:
這個目錄用來存放全部的系統管理所須要的配置文件和子目錄。
/home:
用戶的主目錄,在Linux中,每一個用戶都有一個本身的目錄,通常該目錄名是以用戶的帳號命名的。
/lib:
這個目錄裏存放着系統最基本的動態鏈接共享庫,其做用相似於Windows裏的DLL文件。幾乎全部的應用程序都須要用到這些共享庫。
/lost+found:
這個目錄通常狀況下是空的,當系統非法關機後,這裏就存放了一些文件。
/media:
linux系統會自動識別一些設備,例如U盤、光驅等等,當識別後,linux會把識別的設備掛載到這個目錄下。
/mnt:
系統提供該目錄是爲了讓用戶臨時掛載別的文件系統的,咱們能夠將光驅掛載在/mnt/上,而後進入該目錄就能夠查看光驅裏的內容了。
/opt:
這是給主機額外安裝軟件所擺放的目錄。好比你安裝一個ORACLE數據庫則就能夠放到這個目錄下。默認是空的。
/proc:
這個目錄是一個虛擬的目錄,它是系統內存的映射,咱們能夠經過直接訪問這個目錄來獲取系統信息。
這個目錄的內容不在硬盤上而是在內存裏,咱們也能夠直接修改裏面的某些文件,好比能夠經過下面的命令來屏蔽主機的ping命令,使別人沒法ping你的機器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

/root:
該目錄爲系統管理員,也稱做超級權限者的用戶主目錄。
/sbin:
s就是Super User的意思,這裏存放的是系統管理員使用的系統管理程序。
/selinux:
這個目錄是Redhat/CentOS所特有的目錄,Selinux是一個安全機制,相似於windows的防火牆,可是這套機制比較複雜,這個目錄就是存放selinux相關的文件的。
/srv:
該目錄存放一些服務啓動以後須要提取的數據。
/sys:
這是linux2.6內核的一個很大的變化。該目錄下安裝了2.6內核中新出現的一個文件系統 sysfs 。
sysfs文件系統集成了下面3種文件系統的信息:針對進程信息的proc文件系統、針對設備的devfs文件系統以及針對僞終端的devpts文件系統。
該文件系統是內核設備樹的一個直觀反映。
當一個內核對象被建立的時候,對應的文件和目錄也在內核對象子系統中被建立。

/tmp:
這個目錄是用來存放一些臨時文件的。
/usr:
這是一個很是重要的目錄,用戶的不少應用程序和文件都放在這個目錄下,相似於windows下的program files目錄。
/usr/bin:
系統用戶使用的應用程序。
/usr/sbin:
超級用戶使用的比較高級的管理程序和系統守護程序。
/usr/src:內核源代碼默認的放置目錄。
/var:
這個目錄中存放着在不斷擴充着的東西,咱們習慣將那些常常被修改的目錄放在這個目錄下。包括各類日誌文件。

在linux系統中,有幾個目錄是比較重要的,平時須要注意不要誤刪除或者隨意更改內部文件。程序員

/etc: 上邊也提到了,這個是系統中的配置文件,若是你更改了該目錄下的某個文件可能會致使系統不能啓動。正則表達式

/bin, /sbin, /usr/bin, /usr/sbin: 這是系統預設的執行文件的放置目錄,好比 ls 就是在/bin/ls 目錄下的。算法

值得提出的是,/bin, /usr/bin 是給系統用戶使用的指令(除root外的通用戶),而/sbin, /usr/sbin 則是給root使用的指令。sql

/var: 這是一個很是重要的目錄,系統上跑了不少程序,那麼每一個程序都會有相應的日誌產生,而這些日誌就被記錄到這個目錄下,具體在/var/log 目錄下,另外mail的預設放置也是在這裏。shell

1.3 cd與pwd

cd是change directory的縮寫,用於變動用戶所在目錄

1 cd 進入當前用戶的根目錄(root用戶的根目錄是/root,其餘用戶的根目錄是/home下的用戶目錄)
2 cd . 進入當前目錄(cd ~也是進入當前目錄)
3 cd .. 進入上一級目錄
4 cd /.../.. 進入某目錄(絕對目錄)
5 cd .. 進入某目錄(相對目錄)
6 cd - 進入上一次所在的目錄
7 cd ~進入當前用戶的家目錄

注:cd後面跟目錄名就會直接切換到指定的目錄中,但cd後不能跟文件名,有文件名就會報錯!.表示當前目錄,..表示上一級目錄

pwd是print work directory的縮寫,用來打印當前工做目錄

image

1.4 mkdir與rmdir

mkdir是make directory的縮寫,用於建立目錄

1 mkdir dirname 直接在當前目錄下建立新目錄
2 mkdir -p dirname1/dirname2/... 一次性建立多級目錄
3 mkdir {test1,test2,test3}當前目錄下建立多個文件夾

rmdir是remove directory的縮寫,用來刪除空目錄,該目錄只能用來刪除目錄不能刪除文件 -> 通常都使用rm代替rmdir

1 rmdir dirname 刪除當前目錄下的某目錄
2 rmdir -p dirname  刪除指定目錄後,若該目錄的上層目錄已變成空目錄,則將其一併刪除

簡述:rm是remove的縮寫,用來刪除文件或目錄

1 rm    刪除文件,會有提示
2 rm -r 刪除目錄,能夠用來刪除非空目錄,若目錄非空則會提示
3 rm -f 強制刪除目錄,不會提示
4 rm -rf 刪除文件或目錄,不會提示

注: Linux中刪除文件前最好備份,尤爲是一些重要文件

1 mv filename /opt/filename.bak 備份文件
2 rm -rf filename

1.5 touch

簡述:建立新的空文件;若是要建立的文件已存在則把已存在文件的時間標籤更新爲系統當前的時間(默認方式),原來的數據將保留

1 touch new_file 在當前目錄下建一個空文件

1.6 文件內容查看

簡述:顯示文件的內容,將其打印在屏幕上

1 cat -n 打印行號
2 cat -A顯示全部內容包括特殊字符

與cat相似的其餘命令,均是用來顯示文件,後跟文件名

1 tac     和cat同樣也是打印文件內容到屏幕,不過是從倒數第一行開始打印
2 more    Ctrl+D向上翻屏,Ctrl+F向下翻屏,q退出,通常經常使用在看LOG文件
3 less    空格鍵翻頁,j向下移動,k向上移動
4 head    顯示文件前10行,能夠用head -n顯示前n行
5 tail    顯示文件最後10行,也能夠用tail -n顯示最後n行

1.7 cp、scp與mv

cp是copy的縮寫,用於複製文件或文件夾,命令格式爲cp [選項] [來源文件][目的文件]

選項:

1 -f:強行復制文件或目錄,不論目標文件或目錄是否已存在;
2 -i:覆蓋既有文件以前先詢問用戶;
3 -l:對源文件創建硬鏈接,而非複製文件;
4 -R/r:遞歸處理,將指定目錄下的全部文件與子目錄一併處理;
5 -b:覆蓋已存在的文件目標前將目標文件備份;

scp是 secure copy的縮寫, scp是linux系統下基於ssh登錄進行安全的遠程文件拷貝命令。

選項:

-r :遞歸複製整個目錄
-v:詳細方式輸出
-q:不顯示傳輸進度條
-C:容許壓縮

例子:

# 傳輸本地文件到遠程地址
scp 本地文件  遠程用戶名@遠程ip:遠程文件夾/
scp 本地文件  遠程用戶名@遠程ip:遠程文件夾/遠程文件名

scp /tmp/test.py root@192.168.1.155:/home/
scp /tmp/test.py root@192.168.1.155:/home/tiger_python.py

# 輸入本地文件夾到遠程地址
scp -r  本地文件夾  遠程用戶名@遠程ip:遠程文件夾/
scp -r /tmp/oldboy root@192.168.1.155:/home/oldboy

# 複製遠程文件到本地
scp root@192.168.1.155:/home/oldboy.txt /tmp/oldboy.txt
scp -r root@192.168.1.155:/home/oldboy /home/

mv是move的簡寫,用於移動文件或目錄,還能夠用來重命名,命令格式爲mv [選項] [源文件或源目錄] [目標文件或目錄]

該命令有以下幾種狀況:

  • 目標文件是目錄,但目錄不存在 -> 重命名源目錄
  • 目標文件是目錄,但目錄存在 -> 將源文件或源目錄移動到該目錄下
  • 目標文件是文件,但文件不存在 -> 重命名源文件
  • 目標文件是文件,但文件存在 -> 會詢問是否覆蓋

1.8 搜索文件相關

(1)which:用於查找並顯示給定命令的絕對路徑

1 $ which ls
2 /bin/ls
3 $ which cd
4 $ which mkdir
5 /bin/mkdir

(2)whereis:用來定位指令的二進制程序、源代碼文件和man手冊頁等相關文件的路徑

1 $ whereis tomcat
2 tomcat:
3 $ whereis python
4 python: /usr/bin/python2.7-config /usr/bin/python3.5 /usr/bin/python2.7 /usr/bin/python3.5m /usr/bin/python /usr/lib/python3.5 /usr/lib/python2.7 /etc/python3.5 /etc/python2.7 /etc/python /usr/local/lib/python3.5 /usr/local/lib/python2.7 /usr/include/python2.7 /usr/share/python /usr/share/man/man1/python.1.gz

(3)ind:用來在指定目錄下查找文件

find命令用來在指定目錄下查找文件。任何位於參數以前的字符串都將被視爲欲查找的目錄名。若是使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件。而且將查找到的子目錄和文件所有進行顯示

find .    列出當前目錄及子目錄下全部文件和文件夾
find /home -name "*.txt"  在/home目錄下查找以.txt結尾的文件名
find /home -iname "*.txt"  同上,但忽略大小寫
find . \( -name "*.txt" -o -name "*.pdf" \)  當前目錄及子目錄下查找全部以.txt和.pdf結尾的文件
find /usr/ -path "*local*"    匹配文件路徑或者文件
find . -regex ".*\(\.txt\|\.pdf\)$"  基於正則表達式匹配文件路徑
find . -iregex ".*\(\.txt\|\.pdf\)$"  同上,但忽略大小寫
find /home ! -name "*.txt"  找出/home下不是以.txt結尾的文件
find . -type 類型參數    根據文件類型進行搜索
find . –name a.txt   在當前目錄下查找 a.txt 文件(. 表示當前命令)
find /dev -name std*/dev 目錄查找 std開頭的文件

(4)locate:實是find -name的另外一種寫法,可是要比後者快得多

1 locate /etc/sh    搜索etc目錄下全部以sh開頭的文件
2 locate ~/m        搜索用戶主目錄下,全部以m開頭的文件
3 locate -i ~/m     搜索用戶主目錄下,全部以m開頭的文件,而且忽略大小寫

(5)grep

簡述:是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來

語法:
grep [參數] [--color=auto] [字符串] filename
參數詳解:
-i : 忽略大小寫
-n : 輸出行號
-v : 反向選擇
--color = auto : 給關鍵詞部分添加顏色

grep "我要找什麼" /tmp/oldboy.txt
#排除 -v,排除我要找的東西
grep -v "我要找什麼 /tmp/oldboy.txt

例題:

例題,找出/etc/passwd下root用戶所在行,以及行號,顯示顏色
cat /etc/passwd |grep '^root' --color=auto -n

找出/etc/passwd全部不容許登陸的用戶
grep /sbin/nologin /etc/passwd

找到/etc/passwd的全部與mysql有關行,行號
cat /etc/passwd |grep 'mysql' -n

1.9 cmp與diff

cmp:比較兩個文件是否有差別

cmp testfile testfile1 #比較兩個指定的文件

diff:在最簡單的狀況下,比較給定的兩個文件的不一樣。若是使用「-」代替「文件」參數,則要比較的內容未來自標準輸入。diff命令是以逐行的方式,比較文本文件的異同處。若是該命令指定進行目錄的比較,則將會比較該目錄中具備相同文件名的文件,而不會對其子目錄文件進行任何比較操做

diff /usr/li test.txt     #使用diff指令對文件進行比較

1.10 文件的打包與壓縮

打包和壓縮的區別:打包是指將一大堆文件或目錄變成一個總的文件;壓縮則是將一個大的文件經過一些壓縮算法變成一個小文件

打包:tar命令

利用tar命令,能夠把一大堆的文件和目錄所有打包成一個文件,這對於備份文件或將幾個文件組合成爲一個文件以便於網絡傳輸是很是有用的

-z 使用gzip工具進行壓縮

-x 解壓文件

-v 顯示詳細信息

-c 壓縮文件

-f 指定文件

1 tar -cvf test.tar a.txt b.txt c.txt    僅打包,不壓縮! 
2 tar -tf test.tar        查看tar包中的內容
3 tar xvg test.tar        解包(tar)

壓縮和解壓縮: gzip命令和gunzip命令、bzip2命令和bunzip2命令

1 gzip test.txt                 壓縮文件
2 gunzip test.txt.gz            解壓文件
3 bzip2 test.txt                壓縮文件
4 bunzip2 test.txt.gz           解壓文件

固然也能夠直接使用tar命令在打包的同時進行壓縮

獲取到.gz結尾的文件通常有倆種方式對文件進行解壓

(1) 先使用gzip命令進行第一步解壓,去掉.gz後綴
    gzip -d 文件名
    獲得optall.tar文件
    而後再進行tar解壓
    tar -xvf optall.tar

(2)  直接使用tar命令一次性進行解壓
     tar -zxvf 文件名
     tar -zxvf optall.tar.gz  # 一次性解壓

1.11 path 命令

windows下的環境變量(PATH),都知道系統會按照PATH的設定,去每一個PATH定義的目錄下搜索可執行文件。查看linux的系統配置以下

執行命令:
echo $PATH
echo命令是有打印的意思
$符號後面跟上PATH,表示輸出PATH的變量

PATH(必定是大寫的)這個變量是由一堆目錄組成,分隔符是":"號,而不一樣於windows的";"號。

1.12 chattr與lsattr

(1)chattr 給文件加鎖,只能寫入數據,沒法刪除文件

chattr +a test.py
chattr -a test.py

(2)lsattr

查看文件隱藏屬性

lsattr test.py

1.13 stat

顯示文件或文件系統的狀態。
#用法 stat  [參數]  文件
參數列表:
-L, --dereference     跟隨連接
  -f, --file-system     顯示文件系統狀態而非文件狀態
  -c --format=格式      使用指定輸出格式代替默認值,每用一次指定格式換一新行
      --printf=格式     相似 --format,可是會解釋反斜槓轉義符,不使用換行做
                                輸出結尾。若是您仍但願使用換行,能夠在格式中
                                加入"\n"
  -t, --terse           使用簡潔格式輸出
      --help            顯示此幫助信息並退出
      --version         顯示版本信息並退出
格式化輸出參數:
  %a    八進制權限
  %A   用可讀性較好的方式輸出權限


#實例1
[root@master tmp]# stat 1.txt
  File: '1.txt'
  Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: fd00h/64768d    Inode: 17348002    Links: 1
(權限)Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
(最近訪問)Access: 2018-07-10 15:30:00.000000000 +0800
(最近更改)Modify: 2018-07-10 15:30:00.000000000 +0800
(最近改動)Change: 2018-11-07 15:38:36.400989868 +0800
 Birth: -

#實例2,顯示文件權限
[root@master tmp]# stat -c %a 1.txt
[root@master tmp]# stat -c %A 1.txt
-rw-r--r--

2. Linux的系統操做相關

2.1 網絡相關

在咱們剛裝好linux的時候,須要用遠程軟件進行遠程鏈接,那就得獲取ip地址,有時候網卡默認是沒啓動的,Linux也就拿不到ip地址,所以咱們得手動啓動網卡

2.1.1 首先須要啓動網絡服務

systemctl start network  # 啓動網絡服務
systemctl restart network  # 重啓網絡服務
systemctl stop network  # 中止網絡服務

2.1.2 啓動一塊網卡

啓動/關閉一塊網卡 ifup eth0/ ifdown eth0

2.1.3 服務器重啓配置

#編輯網卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-eth0 
#修改配置參數
ONBOOT=yes

網絡配置文件:
/etc/sysconfig/network

網絡接口配置文件:
/etc/sysconfig/network-scripts/ifcfg-INTERFACE_NAME
DEVICE=: 關聯的設備名稱,要與文件名的後半部「INTERFACE_NAME」保持一致; 
BOOTPROTO={static|none|dhcp|bootp}: 引導協議;要使用靜態地址,使用static或none;dhcp表示使用DHCP服務器獲取地址;
IPADDR=: IP地址
NETMASK=:子網掩碼
GATEWAY=:設定默認網關;
ONBOOT=:開機時是否自動激活此網絡接口;
HWADDR=: 硬件地址,要與硬件中的地址保持一致;可省;
USERCTL={yes|no}: 是否容許普通用戶控制此接口;
PEERDNS={yes|no}: 是否在BOOTPROTO爲dhcp時接受由DHCP服務器指定的DNS地址;

ifconfig 用於查看網卡狀態,和路由器中的ipconfig一致

ip是一個命令,不是TCP/IP那個ip,這個ip命令是結合了ifconfig和route兩個命令的功能。

ip addr show #查看ip信息

2.1.4netstat命令

netstat命令用來打印Linux中網絡系統的狀態信息,可以讓你得知整個Linux系統的網絡狀況。

選項

netstat [選項]
-t或--tcp:顯示TCP傳輸協議的連線情況;
-u或--udp:顯示UDP傳輸協議的連線情況;
-n或--numeric:直接使用ip地址,而不經過域名服務器;
-l或--listening:顯示監控中的服務器的Socket;
-p或--programs:顯示正在使用Socket的程序識別碼和程序名稱;
-a或--all:顯示全部連線中的Socket;

實例:

[root@oldboy_python ~ 10:21:59]#netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      814/sshd            
tcp6       0      0 :::111                  :::*                    LISTEN      2703/rpcbind        
tcp6       0      0 :::3306                 :::*                    LISTEN      29269/mysqld        
udp        0      0 0.0.0.0:758             0.0.0.0:*                           2703/rpcbind        
udp        0      0 0.0.0.0:111             0.0.0.0:*                           2703/rpcbind        
udp        0      0 10.141.32.137:123       0.0.0.0:*                           484/ntpd            
udp        0      0 127.0.0.1:123           0.0.0.0:*                           484/ntpd            
udp        0      0 0.0.0.0:123             0.0.0.0:*                           484/ntpd            
udp6       0      0 :::758                  :::*                                2703/rpcbind        
udp6       0      0 :::111                  :::*                                2703/rpcbind        
udp6       0      0 :::123                  :::*                                484/ntpd

2.2 磁盤存儲相關

2.2.1 du與df

du:查看目錄下文件佔用磁盤空間狀況

df: 查看整個磁盤空間佔用狀況

du 顯示當前目錄下文件所佔的空間
du filename 顯示指定文件所佔的空間
du catalogname 顯示指定目錄下所佔的空間
 
df 查看系統磁盤設備,默認是KB爲單位
df -h 使用-h選項以KB以上的單位來顯示查看系統磁盤設備,可讀性高
df -a 查看所有文件系統的磁盤設備

2.2.2  fdisk

fdisk命令用於觀察硬盤實體使用狀況,也可對硬盤分區。它採用傳統的問答式界面,而非相似DOS fdisk的cfdisk互動式操做界面,所以在使用上較爲不便,但功能卻絲絕不打折扣

選項:

1 -b<分區大小>:指定每一個分區的大小;
2 -l:列出指定的外圍設備的分區表情況;
3 -s<分區編號>:將指定的分區大小輸出到標準輸出上,單位爲區塊;
4 -u:搭配"-l"參數列表,會用分區數目取代柱面數目,來表示每一個分區的起始地址;
5 -v:顯示版本信息。

輸入fdisk命令回車後會出現一個問答式界面,要求輸入信息來選擇可執行的操做,輸入的信息選項以下:
1 m  列出能夠執行的命令
2 p   列出磁盤目前的分區狀況
3 d   選擇分區,刪除現有分區:
4 n   創建新的磁盤分區

fdisk詳細解釋:http://man.linuxde.net/fdisk

2.2.3 mkfs(沒用過)

mkfs命令用於在設備上(一般爲硬盤)建立Linux文件系統。mkfs自己並不執行創建文件系統的工做,而是去調用相關的程序來執行

選項以下:

1 fs:指定創建文件系統時的參數;
2 -t<文件系統類型>:指定要創建何種文件系統;
3 -v:顯示版本信息與詳細的使用方法;
4 -V:顯示簡要的使用方法;
5 -c:在製作檔案系統前,檢查該partition是否有壞軌

/dev/hda5上建一個msdos的檔案系統,同時檢查是否有壞軌存在,而且將過程詳細列出來:

1 mkfs -V -t msdos -c /dev/hda5

2 mkfs -t ext3 /dev/sda6     //將sda6分區格式化爲ext3格式
3 mkfs -t ext2 /dev/sda7     //將sda7分區格式化爲ext2格式

2.2.4 mount(沒用過)

mount命令用於加載文件系統到指定的加載點。此命令的最經常使用於掛載cdrom,使咱們能夠訪問cdrom中的數據,由於你將光盤插入cdrom中,Linux並不會自動掛載,必須使用Linux mount命令來手動完成掛載

語法: mount 選項  設備文件名  加載點

選項:

-V:顯示程序版本;
-l:顯示已加載的文件系統列表;
-h:顯示幫助信息並退出;
-v:冗長模式,輸出指令執行的詳細信息;
-n:加載沒有寫入文件「/etc/mtab」中的文件系統;
-r:將文件系統加載爲只讀模式;
-a:加載文件「/etc/fstab」中描述的全部文件系統。

實例:

1 mount -t auto /dev/cdrom /mnt/cdrom     掛載cdrom
2 mount: block device /dev/cdrom is write-protected, mounting read-only     掛載成功

2.3 系統狀態

2.3.1 top

top命令能夠實時動態地查看系統的總體運行狀況,也就是能夠動態查看系統進程信息 (q 退出)

注:ps命令只能靜態地輸出進程信息,而top目錄能夠動態顯示系統進程信息,能夠每隔一段時間刷新當前狀態

top交互命令

在top命令執行過程當中可使用的一些交互命令以下:

•h:顯示幫助畫面,給出一些簡短的命令總結說明 
•k:終止一個進程 
•i:忽略閒置和僵死進程,這是一個開關式命令 
•q:退出程序 
•r:從新安排一個進程的優先級別 
•S:切換到累計模式 
•s:改變兩次刷新之間的延遲時間(單位爲s),若是有小數,就換算成ms。輸入0值則系統將不斷刷新,默認值是5s 
•f或者F:從當前顯示中添加或者刪除項目 
•o或者O:改變顯示項目的順序 
•l:切換顯示平均負載和啓動時間信息 
•m:切換顯示內存信息 
•t:切換顯示進程和CPU狀態信息 
•c:切換顯示命令名稱和完整命令行 
•M:根據駐留內存大小進行排序 
•P:根據CPU使用百分比大小進行排序 
•T:根據時間/累計時間進行排序 
•w:將當前設置寫入~/.toprc文件中

注:這些命令都是單字母的,若是在命令行中使用了-s選項, 其中一些命令可能會被屏蔽

2.3.2 ps

ps命令是最基本同時也是很是強大的進程查看命令,使用該命令能夠肯定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程佔用了過多的資源等等,總之大部分信息都是能夠經過執行該命令獲得的

語法:ps 選項

經常使用選項以下:

a:顯示現行終端機下的全部程序,包括其餘用戶的程序。
c:列出程序時,顯示每一個程序真正的指令名稱,而不包含路徑,選項或常駐服務的標示。
e:列出程序時,顯示每一個程序所使用的環境變量。
f:用ASCII字符顯示樹狀結構,表達程序間的相互關係。
g:顯示現行終端機下的全部程序,包括羣組領導者的程序。
h:不顯示標題列。
u:以用戶爲主的格式來顯示程序情況。
x:顯示全部程序,不以終端機來區分。
r:只列出現行終端機正在執行中的程序。
v:採用虛擬內存的格式顯示程序情況
-a:顯示全部終端機下執行的程序,除了階段做業領導者以外。
-c:顯示CLS和PRI欄位。
-d:顯示全部程序,但不包括階段做業領導者的程序。
-e:顯示全部程序。
-f:顯示UID,PPIP,C與STIME欄位。
-H:顯示樹狀結構,表示程序間的相互關係。
-u<用戶識別碼>:列出屬於該用戶的程序的情況,也可以使用用戶名稱來指定。
-j:採用工做控制的格式顯示程序情況
-l或l:採用詳細的格式來顯示程序情況。
-N:顯示全部的程序,除了執行ps指令終端機下的程序以外。

2.3.3 kill

kill命令用來刪除執行中的程序或工做。kill可將指定的信息送至程序。預設的信息爲SIGTERM(15),可將指定程序終止。若仍沒法終止該程序,可以使用SIGKILL(9)信息嘗試強制刪除程序。程序或工做的編號可利用ps指令或job指令查看

選項:

a:當處理當前進程時,不限制命令名和進程號的對應關係
l <信息編號>:若不加<信息編號>選項,則-l參數會列出所有的信息名稱
p:指定kill 命令只打印相關進程的進程號,而不發送任何信號
s <信息名稱或編號>:指定要送出的信息
u:指定用戶

參數:進程或做業識別號(指定要刪除的進程或做業)

同時還有其餘操做方式:

一般來說,複雜軟件的服務程序會有多個進程協同爲用戶提供服務,若是逐個去結束這 些進程會比較麻煩,此時可使用 killall 命令來批量結束某個服務程序帶有的所有進程。例如:

nginx啓動後有2個進程 killall nginx

實例:

先用ps查找進程,而後用kill殺掉:
ps -ef | grep vim
root      3268  2884  0 16:21 pts/1    00:00:00 vim install.log
root      3370  2822  0 16:21 pts/0    00:00:00 grep vim

kill 3268
kill 3268
-bash: kill: (3268) - 沒有那個進程

2.3.4 free(沒用過)

free命令能夠顯示當前系統未使用的和已使用的內存數目,還能夠顯示被內核使用的內存緩衝區

2.3.5 jobs(沒用過)

jobs命令用於顯示Linux中的任務列表及任務狀態,包括後臺運行的任務。該命令能夠顯示任務號及其對應的進程號。其中,任務號是以普通用戶的角度進行的,而進程號則是從系統管理員的角度來看的。一個任務能夠對應於一個或者多個進程號

在Linux系統中執行某些操做時候,有時須要將當前任務暫停調至後臺,或有時須將後臺暫停的任務重啓開啓並調至前臺,這一序列的操做將會使用到 jobs、bg、和 fg 三個命令以及兩個快捷鍵來完成

1 firefox &       後臺運行程序
2 jobs             查看在後臺運行的程序
3 fg %工做號    後臺程序掉到前臺運行     
4 bg %工做號   直接在後臺運行

2.4 設備關機

reboot或init 6命令用於重啓機器

poweroff或init 0用於關閉系統

init一共分爲7個級別,這7個級別的所表明的含義以下
0:停機或者關機(千萬不能將initdefault設置爲0)
1:單用戶模式,只root用戶進行維護
2:多用戶模式,不能使用NFS(Net File System)
3:徹底多用戶模式(標準的運行級別)
4:安全模式
5:圖形化(即圖形界面)
6:重啓(千萬不要把initdefault設置爲6)

不過經常使用的就是0,5,6

2.5 服務器時間同步

linux的date命令能夠顯示當前時間或者設置系統時間

查看當前時間

格式化輸出

-d    --date=string    顯示指定的時間,而不是當前時間
以年--日顯示當前時間
date +"%Y-%m-%d"
以年--日 時分秒 顯示當前時間
date +"%Y-%m-%d %T"

同步系統時間和硬件時間,能夠用hwclock命令

//以系統時間爲基準,修改硬件時間
[root@oldboy_python ~ 10:29:07]#hwclock -w

//以硬件時間爲基準,修改系統時間
[root@oldboy_python ~ 10:29:21]#hwclock -s

ntp時間服務器同步,以阿里云爲例:

ntpdate -u ntp.aliyun.com

3. 用戶,羣組與權限

3.1 用戶管理相關命令

(1)su與sudo

su: 切換用戶

sudo:  表示獲取臨時的root權限命令

1 su 切換到root用戶
2 su - root 切換到root用戶
3 su - username 切換到普通用戶
4 sudo後面跟操做表示進行某些特殊操做

(2)who系列

1 whoami;顯示的是當前用戶下的用戶名
2 who am i:顯示的是登陸時的用戶名
3 who:顯示當前真正登陸系統中的用戶(不會顯示那些用su命令切換用戶的登陸者)

(3)useradd

簡述: 建立的新的系統用戶

選項以下:

-c<備註>:加上備註文字。備註文字會保存在passwd的備註欄位中;
-d<登入目錄>:指定用戶登入時的啓始目錄;
-D:變動預設值;
-e<有效期限>:指定賬號的有效期限;
-f<緩衝天數>:指定在密碼過時後多少天即關閉該賬號;
-g<羣組>:指定用戶所屬的羣組;
-G<羣組>:指定用戶所屬的附加羣組;
-m:自動創建用戶的登入目錄;
-M:不要自動創建用戶的登入目錄;
-n:取消創建以用戶名稱爲名的羣組;
-r:創建系統賬號;
-s<shell>:指定用戶登入後所使用的shell;
-u<uid>:指定用戶id。

############使用
1 useradd test1    直接添加用戶
2 useradd test2 -u 1000 -g test      指定uid和gid添加用戶

(4)userdel

簡述:用於刪除給定的用戶,以及與用戶相關的文件。若不加選項,則僅刪除用戶賬號,而不刪除相關文件

選項以下:

-f:強制刪除用戶,即便用戶當前已登陸
-r:刪除用戶的同時,刪除與用戶相關的全部文件

userdel username  刪除用戶帳號而不刪除相關文件
userdel -f username 強制刪除用戶
userdel -r username 刪除用戶的同時刪除與用戶的相關文件

(5)usermod

簡述:用於修改用戶的基本信息

選項以下:

-c<備註>:修改用戶賬號的備註文字;
-d<登入目錄>:修改用戶登入時的目錄;
-e<有效期限>:修改賬號的有效期限;
-f<緩衝天數>:修改在密碼過時後多少天即關閉該賬號;
-g<羣組>:修改用戶所屬的羣組;
-G<羣組>;修改用戶所屬的附加羣組;
-l<賬號名稱>:修改用戶賬號名稱;
-L:鎖定用戶密碼,使密碼無效;
-s<shell>:修改用戶登入後所使用的shell;
-u<uid>:修改用戶ID;
-U:解除密碼鎖定。


##################
usermod -d /home/new test  將test用戶的家目錄修改成/home/new
usermod -G ttt test     將test用戶添加到ttt組中
usermod -g ttt test     將test用戶的gid變爲ttt
usermod -L test        鎖定test用戶
usermod -U test        解鎖test用戶

(6)passwd

簡述:用於設置用戶的認證信息,包括用戶密碼、密碼過時時間等

選項以下:

1 -d:刪除密碼,僅有系統管理者才能使用
2 -f:強制執行
3 -k:設置只有在密碼過時失效後,方能更新
4 -l:鎖住密碼
5 -s:列出密碼的相關信息,僅有系統管理者才能使用
6 -u:解開已上鎖的賬號



########################
1 passwd 不帶任何選項和參數是更改root用戶密碼
2 passwd username 更改username的密碼

(7)id

簡述:顯示用戶信息

1 id user 顯示用戶user的信息
2 id 顯示當前登陸的用戶的信息
3 
4 注:用戶root的UID號碼 = 0,GID號碼 = 0

 

注:與用戶、組帳戶信息相關的文件

存放用戶信息:

1 /etc/passwd
2 /etc/shadow

存放組信息:

1 /etc/group
2 /etc/gshadow

3.2用戶組管理相關命令

groupadd:用於建立一個新的工做組,新工做組的信息將被添加到系統文件中

groupdel:用於刪除指定的工做組,本命令要修改的系統文件包括/ect/group和/ect/gshadow。若該羣組中仍包括某些用戶,則必須先刪除這些用戶後,方能刪除羣組

groupmod:更改羣組識別碼或名稱

用戶組管理其餘命令相似於用戶管理命令

3.3 權限管理相關命令

3.3.1 查看權限信息

ls -l,輸出的信息依次爲: 權限信息  硬連接數  屬主  屬組  文件大小  文件建立日期  文件名

ls -l命令輸出以下:

上述每一行的信息能夠分紅七段:

第一段信息表示文件或文件夾的權限,完整表示爲drwxrwxrwx,第一個字符d表示文件類型爲文件夾

後面的rwx 分別表示權限,read | write | excute,3組rwx分別表示,文件使用者的權限,使用者同組人員權限,其餘人權限,若是爲 – 表示用戶沒有這個權限

第二段信息表示文件硬連接數量

第三段信息表示全部者: root

第四段信息表示所屬用戶組: root

第五段信息表示文件大小,單位爲byte

第六段信息表示修改時間

第七段信息表示文件名

文件權限詳解

1553844091418

1553844149865

-    通常文件
d    文件夾
l    軟鏈接(快捷方式)
b    塊設備,存儲媒體文件爲主
c    表明鍵盤,鼠標等設備

注:ll -d 目錄 -> 查看目錄的權限信息

3.3.2 chown\chgrp

chown:  變動文件全部者

chgrp:   變動文件的所屬組

注:以上都可以使用-R選項實現遞歸變動全部者或所屬組

1 chown [選項] [新全部者] 文件列表
2 chgrp [選項] [新所屬組] 文件列表
3 chown [選項] [新全部者] : [新所屬組] 文件列表

3.3.3 chmod

chmod:  修改文件權限

權限範圍的表示法:

u  User,即文件或目錄的擁有者
g  Group,即文件或目錄的所屬羣組
o  Other,除了文件或目錄擁有者或所屬羣組以外,其餘用戶皆屬於這個範圍
a  All,即所有的用戶,包含擁有者,所屬羣組以及其餘用戶
r  讀取權限,數字代號爲「4」
w  寫入權限,數字代號爲「2」
x  執行或切換權限,數字代號爲「1-  不具任何權限,數字代號爲「0」
s  特殊功能說明:變動文件或目錄的權限

1553847253243

實例:

文件權限用字符表示

1 chmod g+w, o+r  文件  給屬組用戶增長寫權限,其餘用戶增長讀權限
2 chmod go-r  文件  同時撤銷所屬組和其餘用戶對該文件的讀權限
3 chmod a=rx 文件  對全部用戶賦予讀和執行權限

文件權限用數字表示

r爲4 w爲2 x爲1 沒有任何權限爲0
每一類用戶的權限用其各項權限的和表示(0到7)
權限依次爲全部者(u)、所屬組(g)、其餘用戶(o)

例如:754 -> 全部者[4+2+1] 所屬組[4+0+1] 其餘用戶[4+0+0]

chmod 644 file 改變文件的權限

4. 重定向與管道

4.1 重定向

>:把左邊的內容覆蓋到右邊

>>:把左邊的內容追加到右邊

1 cat /etc/passwd > new_pwd.txt   
2 echo "hello, world" > hello.txt
3 echo "1234" >> hello.txt
4 echo "1234" >> hello.txt

4.2 echo

echo:用於在shell中打印shell變量的值,或者直接輸出指定的字符串

詳細解釋:http://man.linuxde.net/echo

echo "hello"  # 向屏幕輸出hello

4.3 管道

做用:把前一個命令的結果當成後一個命令的輸入

舉例:ls -a | grep mysql就是用grep命令在ls的結果中查找包含mysql的文件

注:其實也能夠理解爲在前一個命令後,用管道符對當前的命令的內容進行二次篩選或者二次內容

5. vim操做

Vim是從 vi 發展出來的一個文本編輯器。代碼補完、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被普遍使用。

簡單的來講, vi 是老式的字處理器,不過功能已經很齊全了,可是仍是有能夠進步的地方。 vim 則能夠說是程序開發者的一項很好用的工具。

5.1 vim的使用

基本上 vi/vim 共分爲三種模式,分別是命令模式(Command mode)輸入模式(Insert mode)底線命令模式(Last line mode)

  • 命令模式:vi的默認模式,在任何模式下 按ESC 進入,另一進入vi編輯器就是命令模式,命令模式中輸入的任何字符都做爲命令來處理
  • 插入模式(編輯模式):從命令模式下 按a, i 等 進入,輸入的任何字符都做爲插入的字符處理,按ESC返回命令模式
  • 末行模式:在命令模式下按:進入,執行文件級或全局操做,例如保存文件、退出編輯器等

5.2 vi的基本使用

基本操做
如下操做在末行模式中操做:
:q             退出vi (q! 不保存強行退出)
:w             保存    (wq 保存並退出)
:x             保存退出
:X             加密保存退出
:u             撤銷操做
:saveas     另存爲

如下操做在命令模式中操做:
x       刪除當前字符
dd      刪除當前行 ,刪除內容存入剪貼板 
h,j,k,l  和 右下上左 移動光標(某些狀況下方向鍵也是命令的一部分)
0   到行首  
^   到行首第一個非空字符
$   到行尾
g_ 到行尾最後一個非空字符

5.3 經常使用組合鍵

5.3.1 命令模式

#移動光標
w(e)  移動光標到下一個單詞
b    移動到光標上一個單詞
數字0  移動到本行開頭
$    移動光標到本行結尾
H    移動光標到屏幕首行
M    移動到光標到屏幕的中間一行
L    移動光標到屏幕的尾行
gg    移動光標到文檔的首行
G    移動光標到文檔尾行
ctrl + f  下一頁
ctrl + b  上一頁
`.  移動光標到上一次的修改行

#查找
/tiger     在整篇文檔中搜索tiger字符串,向下查找
?tiger     在整篇文檔中搜索tiger字符串,向上查找
*        查找整個文檔,匹配光標所在的全部單詞,按下n查找下一處,N上一處
#        查找整個文檔,匹配光標所在的全部單詞,按下n查找下一處,N上一處
gd        找到光標所在單詞匹配的單詞,並停留在非註釋的第一個匹配上
%    找到括號的另外一半!!

#複製,刪除,粘貼
yy    拷貝光標所在行
dd    刪除光標所在行
D     刪除當前光標到行尾的內容
dG    刪除當前行到文檔尾部的內容
p     粘貼yy所複製的內容
x   刪除光標所在的字符
u     撤銷上一步的操做

3yy    拷貝光標所在的3行
5dd    刪除光標所在5行

5.3.2 底線命令模式

:q!     強制退出
:wq!    強制寫入退出
:set nu 顯示行號
:數字  調到數字那行

隨時按下esc能夠退出底線命令模式

6. 其餘命令

1.
clear: 用於清除當前屏幕終端上的任何信息
2. cal簡述: 顯示日曆 cal 輸出日曆(如今所在的月份的日曆) cal
year 輸出某年的日曆 cal month year 輸出某年的某月的日曆
3. man、help、info man:man命令是Linux下的幫助指令,經過man指令能夠查看Linux中的指令幫助、配置文件幫助和編程幫助等信息 help:用於顯示shell內部命令的幫助信息。help命令只能顯示shell內部的命令幫助信息。而對於外部命令的幫助信息只能使用man或者info命令查看 info:是Linux下info格式的幫助指令。就內容來講,info頁面比man頁面編寫得要更好、更容易理解,也更友好,但man page使用起來確實要容易。一個man 頁面只有一頁,而info頁面幾乎老是將它們的內容組織成多個區段。理解info命令的竅門就是學習如何在單獨的Info頁面中瀏覽導航,還要學習如何在節點和子節點之間切換,實際上學習和使用起來更困難
4.
exit:退出 等同於退出shell,並返回給定值。在shell腳本中能夠終止當前腳本執行。執行exit可以使shell以指定的狀態值退出。若不設置狀態值參數,則shell以預設值退出。狀態值0表明執行成功,其餘值表明執行失敗
5. wget:網絡下載 wget命令用來從指定的URL下載文件。wget很是穩定,它在帶寬很窄的狀況下和不穩定網絡中有很強的適應性,若是是因爲網絡的緣由下載失敗,wget會不斷的嘗試,直到整個文件下載完畢。若是是服務器打斷下載過程,它會再次聯到服務器上從中止的地方繼續下載。這對從那些限定了連接時間的服務器上下載大文件很是有用 通常使用:wget 連接地址 注:wget命令會將文件下載到當前目錄下 詳細使用:http:
//man.linuxde.net/wget

6.
ps1:環境變量
PS1="[\u@\h \w \t]\$"
PS1的定義中個經常使用的參數的含義以下:
\d :#表明日期,格式爲weekday month date,例如:"Mon Aug 1"  
\H :#完整的主機名稱  
\h :#僅取主機的第一個名字 
\t :#顯示時間爲24小時格式,如:HH:MM:SS  
\T :#顯示時間爲12小時格式  
\A :#顯示時間爲24小時格式:HH:MM  
\u :#當前用戶的帳號名稱  
\v :#BASH的版本信息  
\w :#完整的工做目錄名稱  
\W :#利用basename取得工做目錄名稱,因此只會列出最後一個目錄  
\# :#下達的第幾個命令  
\$ :#提示字符,若是是root時,提示符爲:# ,普通用戶則爲:$ 
# 由此,咱們可知linux默認的命令行提示信息爲:[當前用戶的帳號名稱@主機的第一個名字 工做目錄的最後一項]#

軟連接和硬連接

a

相關文章
相關標籤/搜索