Linux命令(持續更新)


1、 tail 命令

    tail 命令可用於查看文件的內容,有一個常用的參數 -f 常用於查閱正在改變的日志文件。

  tail  -f  filename 會把 filename 文件里的最尾部的內容顯示在屏幕上(默認10行,相當於增加參數 -n 10),並且不斷刷新,只要 filename 更新就可以看到最新的文件內容。

  命令格式:

    tail [參數] [文件]
 
參數:
    • -f 循環讀取
    • -q 不顯示處理信息
    • -v 顯示詳細的處理信息
    • -c<數目> 顯示的字節數
    • -n<行數> 顯示文件的尾部 n 行內容
    • --pid=PID 與-f合用,表示在進程ID,PID死掉之后結束
    • -q, --quiet, --silent 從不輸出給出文件名的首部
    • -s, --sleep-interval=S 與-f合用,表示在每次反復的間隔休眠S秒

  常用實例:

    1、tail -f filename
      
說明:監視filename文件的尾部內容(默認10行,相當於增加參數 -n 10),刷新顯示在屏幕上。退出,按下CTRL+C。

    2、tail -n 20 filename

      說明:顯示filename最后20行。

    3、tail -r -n 10 filename
      說明:逆序顯示filename最后10行。

2、grep 命令 (global search regular expression(RE) and print out the line,全面搜索正則表達式並把行打印出來)

  Linux grep命令用於查找文件里符合條件的字符串。

  常用實例:

    1、grep test *file

      說明:在當前目錄中,查找后綴有 file 字樣的文件中包含 test 字符串的文件,並打印出該字符串的行。

    2、grep -r update /etc/acpi 

      說明:以遞歸的方式查找符合條件的文件。例如,查找指定目錄/etc/acpi 及其子目錄(如果存在子目錄的話)下所有文件中包含字符串"update"的文件,並打印出該字符串所在行的內容

3、vi 命令

  vi命令可以查找和編輯等操作

  常用實例:

    vi filename :打開或新建文件,並將光標置於第一行首 
    vi +n filename :打開文件,並將光標置於第n行首 
    vi + filename :打開文件,並將光標置於最后一行首 
    vi +/pattern filename:打開文件,並將光標置於第一個與pattern匹配的串處 
    vi -r filename :在上次正用vi編輯時發生系統崩潰,恢復filename 
    vi filename....filename :打開多個文件,依次進行編輯 

  一般進入文件的vi命令,會讓你選擇模式:

4、ps (process status)命令

   ps命令用於顯示當前進程 (process) 的狀態,類似於windows的任務管理器。

  實例:

    查看一個程序是否運行:  ps –ef|grep tomcat 查看所有有關tomcat的進程

    下面對命令選項進行說明:

      -e 顯示所有進程。
      -f 全格式。

      | 是管道命令 是指ps命令與grep同時執行

 5、top 命令

  top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器

top命令顯示了系統整體的運行情況,還列出了各個進程PID相關信息,可以通過pid查看具體進程信息:

Linux下通過PID查看進程完整信息

(1)Linux在啟動一個進程時,系統會在/proc下創建一個以PID命名的文件夾,在該文件夾下會有我們的進程的信息,其中包括一個名為exe的文件即記錄了絕對路徑,通過ll或ls –l命令即可查看

 ll /proc/PID 

 

cwd符號鏈接的是進程運行目錄;

exe符號連接就是執行程序的絕對路徑;

cmdline就是程序運行時輸入的命令行命令;

environ記錄了進程運行時的環境變量;

fd目錄下是進程打開或使用的文件的符號連接。

 (2)ps -ef|grep 23753

 

top命令返回的各個參數的含義

參數含義:

top - 01:06:48 up  1:22,  1 user,  load average: 0.06, 0.60, 0.48
Tasks:  29 total,   1 running,  28 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.3% us,  1.0% sy,  0.0% ni, 98.7% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    191272k total,   173656k used,    17616k free,    22052k buffers
Swap:   192772k total,        0k used,   192772k free,   123988k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
1379 root      16   0  7976 2456 1980 S  0.7  1.3   0:11.03 sshd
14704 root      16   0  2128  980  796 R  0.7  0.5   0:02.72 top
1 root      16   0  1992  632  544 S  0.0  0.3   0:00.90 init
2 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 watchdog/0

統計信息區前五行是系統整體的統計信息。第一行是任務隊列信息,同 uptime 命令的執行結果。其內容如下:

01:06:48    當前時間
up 1:22 系統運行時間,格式為時:分
1 user 當前登錄用戶數
load average: 0.06, 0.60, 0.48 系統負載,即任務隊列的平均長度。三個數值分別為 1分鍾、5分鍾、15分鍾前到現在的平均值。

第二、三行為進程和CPU的信息。當有多個CPU時,這些內容可能會超過兩行。內容如下:

Tasks:  
  total 進程總數
  running 正在運行的進程數
  sleeping 睡眠的進程數
  stopped 停止的進程數
  zombie 僵屍進程數
Cpu(s): 
  0.3%  us 用戶空間占用CPU百分比
  1.0%  sy 內核空間占用CPU百分比
  0.0%  ni 用戶進程空間內改變過優先級的進程占用CPU百分比
  98.7%  id 空閑CPU百分比
  0.0%  wa 等待輸入輸出的CPU時間百分比
  0.0% hi:硬件CPU中斷占用百分比
  0.0% si:軟中斷占用百分比
  0.0% st:虛擬機占用百分比

判斷cpu使用情況

  wa低,us高 :說明系統緩慢的原因在於進程占用大量CPU,通常還會伴有教低的id,說明CPU空轉時間很少;
  wa低,id高 :可以排除CPU資源瓶頸的可能;
  wa高 :說明I/O占用了大量的CPU時間,需要檢查交換空間的使用,交換空間位於磁盤上,性能遠低於內存,當內存耗盡開始使用交換空間時,將會給性能帶來嚴重影響,所以對於性能要求較高的服務器,一般建議關閉交換空間。另一方面,如果內存充足,但wa很高,說明需要檢查哪個進程占用了大量的 I/O資源。

最后兩行為內存信息。內容如下:

Mem(物理內存):
  191272k total    物理內存總量
  173656k used    使用的物理內存總量
  17616k free    空閑內存總量
  22052k buffers    用作內核緩存的內存量
Swap(虛擬內存): 
  192772k total    交換區總量
  0k used    使用的交換區總量
  192772k free    空閑交換區總量
  123988k cached    緩沖的交換區總量,內存中的內容被換出到交換區,而后又被換入到內存,但使用過的交換區尚未被覆蓋,該數值即為這些內容已存在於內存中的交換區的大小,相應的內存再次被換出時可不必再對交換區寫入。
 

swap介紹
  在詳細介紹swap之前,我們需要知道的是計算機對內存分為物理內存與虛擬內存(注意虛擬內存虛擬地址空間的區別)。物理內存就是計算機的實際內存大小,由RAM芯片組成的。虛擬內存則是虛擬出來的、使用磁盤代替內存。虛擬內存的出現,讓機器內存不夠的情況得到部分解決。當程序運行起來由操作系統做具體虛擬內存到物理內存的替換和加載(相應的頁與段的虛擬內存管理)。這里的虛擬內存即所謂的swap。

  當用戶提交程序,然后產生進程,在機器上運行。機器會判斷當前物理內存是否還有空閑允許進程調入內存運行,如果有那么則直接調入內存進行運行;如果沒有,那么會根據優先級選擇一個進程掛起,把該進程交換到swap中等待,然后把新的進程調入到內存中運行。根據這種換入和換出,實現了內存的循環利用,讓用戶感覺不到內存的限制。從這也可以看出swap扮演了一個非常重要的角色,就是暫存被換出的進程。

  內存與swap之間是按照內存頁為單位來交換數據的,一般Linux中頁的大小設置為4kb。而內存與磁盤則是按照塊來交換數據的。

總結:

  1、當物理內存快被耗盡時,系統並沒有崩潰,而是拿swap做臨時內存,當兩者都耗盡,系統OutofMemory
  2、物理內存到達峰值,系統中可能一些不常用的進程內存占用被踢到swap區
  3、當Mem區的資源進行釋放時,被挪到swap的內存並不會全部回來的,隨着系統或者程序的喚醒才會慢慢回到mem區
  4、Swap是內存不夠時磁盤虛擬出來的內存,磁盤主要是I/O級別的操作並不是系統內核級別的操作,處理速度跟Mem區不是一個等級

怎么看內存有多少空閑呢?
  totalfree = free17616 + buffers22052 + cached123988

進程信息區統計信息區域的下方顯示了各個進程的詳細信息。首先來認識一下各列的含義。

序號  列名    含義
a    PID     進程id
b    PPID    父進程id
c    RUSER   Real user name
d    UID     進程所有者的用戶id
e    USER    進程所有者的用戶名
f    GROUP   進程所有者的組名
g    TTY     啟動進程的終端名。不是從終端啟動的進程則顯示為 ?
h    PR      優先級
i    NI      nice值。負值表示高優先級,正值表示低優先級
j    P       最后使用的CPU,僅在多CPU環境下有意義
k    %CPU    上次更新到現在的CPU時間占用百分比
l    TIME    進程使用的CPU時間總計,單位秒
m    TIME+   進程使用的CPU時間總計,單位1/100秒
n    %MEM    進程使用的物理內存百分比
o    VIRT    進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
p    SWAP    進程使用的虛擬內存中,被換出的大小,單位kb。
q    RES     進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
r    CODE    可執行代碼占用的物理內存大小,單位kb
s    DATA    可執行代碼以外的部分(數據段+棧)占用的物理內存大小,單位kb
t    SHR     共享內存大小,單位kb
u    nFLT    頁面錯誤次數
v    nDRT    最后一次寫入到現在,被修改過的頁面數。
w    S       進程狀態(D=不可中斷的睡眠狀態,R=運行,S=睡眠,T=跟蹤/停止,Z=僵屍進程)
x    COMMAND 命令名/命令行
y    WCHAN   若該進程在睡眠,則顯示睡眠中的系統函數名
z    Flags   任務標志,參考 sched.h
 

默認情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通過下面的快捷鍵來更改顯示內容。 

更改顯示內容通過 鍵可以選擇顯示的內容。按 f 鍵之后會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最后按回車鍵確定。 
按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z 可以將相應的列向左移動。最后按回車鍵確定。 
按大寫的 F 或 O 鍵,然后按 a-z 可以將進程按照相應的列進行排序。而大寫的 R 鍵可以將當前的排序倒轉。

 

 6、su (Substitute User)命令

  使用 whoami 命令查看當前用戶 (或者 分開寫: who am i)

                    

用戶切換的命令為:su 用戶名,如圖我切換到blegn用戶

                   

再操作從blegn用戶切換到root用戶,提示需要輸入密碼。

                 

超級管理員命令以“#”開始,普通用戶以“$”開始

               

 

 7、date 命令  (查看系統時間)

設置當前系統時間為2015年5月8日19點48分0秒

  date -s "2015-05-08 19:48:00"

查看系統時間多種方式  基本上,date命令會翻譯所有所有的百分號(%)開頭的格式和輸出在引號("")內所有的內容。

  date "+%Y-%m-%d %H-%M-%S "       2017-09-20 11-06-30

  date +%D                                           17/05/13

 

8、備份數據庫表數據

 (1) 復制表結構和表數據     

create table 表名_BAK_日期 as select * from 表名;   ## 並不會創建索引   

 (2)  只復制表結構:      

create table 表名_BAK_日期 as select * from 表名 where 1=2; 

 (3)  只復制數據: 

   3.1:兩個表結構一樣

insert into d_table_name select * from s_table_name;

     3.2:兩個表的結構不一樣,只復制部分列

insert into d_table_name (column1,column2,column3) select column1x,column2x,column3x from s_table_name;

 

9、touch 創建文件和修改文件或者目錄的時間戳

語法:touch  【選項】 【文件名或者目錄名】

參數:

 -a  只修改文件的access(訪問)時間.

    -c  或--no-create  不創建不存在的文件。

    -d  使用指定的日期時間,而非現在的時間

    -m 指修改Modify(修改)時間,而不修改access(訪問)時間

    -r  file  使用指定file文件的時間戳(access,modify)更新文件的時間戳(access,modify)

               注:access 表示最后一次訪問(僅僅是訪問,沒有改動)文件的時間

                     modify 表示最后一次修改文件的時間

                     change 表示最后一次對文件屬性改變的時間,包括權限,大小,屬性等等

    -t  將時間修改為參數指定的日期,如:07081556代表7月8號15點56分

 

10、vim 

 vim編輯器是所有Unix及Linux系統下標准的編輯器,它的強大不遜色於任何最新的文本編輯器;vi也是Linux中最基本的文本編輯器,vim就是vi的升級版。

常用命令:

  a:vim 文件名

    vi之后處於命令行模式,您要切換到插入模式才能夠輸入文字。

  b:切換至插入模式(Insert mode)編輯文件

    在命令行模式下按一下字母 就可以進入插入模式,輸入文字了。

  c: Insert 的切換

    處於插入模式,您就只能一直輸入文字,如果您發現輸錯了字!想用光標鍵往回移動,將該字刪除,就要先按一下ESC鍵轉到命令行模式再刪除文字。

  d: 退出vi及保存文件 

    在命令行模式下,按一下:冒號鍵進入底行模式,例如:
    : w filename (輸入w filename將文章以指定的文件名filename保存)
    : wq (輸入wq,存盤並退出vi)
    : q! (輸入q!, 不存盤強制退出vi)

  

 11、chmod  (Change mode)訪問權限

  chmod命令用於改變linux系統文件或目錄的訪問權限。用它控制文件或目錄的訪問權限

  Linux/Unix 的文件調用權限分為三級 : 文件擁有者、群組、其他。利用 chmod 可以藉以控制文件如何被他人所調用

語法:         

      第一種方法(符號模式)      chmod     [{ugoa}{+-=}{rwx}]      [文件或目錄]

                    備注:             u:所有者    g:所屬組    o:其他人    a:所有人

                                            +:為用戶增加權限     -:為用戶減少權限     =:為用戶賦予權限

                                            r:讀權限     w:寫權限      x:執行權限 

      范例:  (1)chmod a+x file.txt      // 此處的a代表所有用戶,+代表添加權限,x代表執行權限

           (2)chmod a+r file1.txt   // 將文件 file1.txt 設為所有人皆可讀取 

           (3)chmod ugo+r file1.txt   // 將文件 file1.txt 設為所有人皆可讀取 

 

                    第二種方法(絕對模式)      chmod   -R    [mode=421]     [文件或目錄]     ←(這種方法用的比較多)

                     備注:            r:4   w:2   x:1

                                            r為讀權限,可以用4來表示,

                                            w為寫權限,可以用2來表示,

                                            x為執行權限,可以用1來表示。

                                           -R 遞歸修改(就是將嵌套在很多文件夾中的文件權限修改了,如果沒有這個,只能到指定的文件夾下進行修改)

     范例:         (1)chmod     777     /etc/hurenxiang       // 將hurenxiang這個文件夾權限改為對所有用戶可讀,可寫,可執行

                         (2)chmod     775     /etc/caiyao               // 將caiyao這個文件夾權限改為其他用戶不可寫
  linux數字權限解析:

  數字:左至右,第一位數字代表文件所有者的權限,第二位數字代表同組用戶的權限,第三位數字代表其他用戶的權限。

  而具體的權限是由數字來表示的,讀取的權限等於4,用r表示;寫入的權限等於2,用w表示;執行的權限等於1,用x表示;

  通過4、2、1的組合,得到以下幾種權限:0(沒有權限);4(讀取權限);5(4+1 | 讀取+執行);6(4+2 | 讀取+寫入);7(4+2+1 | 讀取+寫入+執行)

以755為例:

  第一位7等於4+2+1,rwx,所有者具有讀取、寫入、執行權限;

  第二位5等於4+1+0,r-x,同組用戶具有讀取、執行權限但沒有寫入權限;

  第三位5,同上,也是r-x,其他用戶具有讀取、執行權限但沒有寫入權限。

 

12、sh腳本(處理用戶輸入)

  bash shell 會將一些稱為位置參數(positional parameter)的特殊變量分配給輸入到命令行中的所有參數。這也包括 shell 所執行的腳本名稱。位置參數變量是標准的數字:$0 是程序名,$1是第一個參數,$2 是第二個參數,依次類推,直到第九個參數 $9。 

例子:test1.sh

#!/bin/bash
# testing two command line parameters
#
total=$[ $1 * $2 ]
echo The first parameter is $1.
echo The second parameter is $2.
echo The total value is $total.

執行:$ ./test1.sh 2 5

輸出:

The first parameter is 2.
The second parameter is 5.
The total value is 10.

read 等待用戶輸入

 read 命令從標准輸入(鍵盤)或另一個文件描述符中接受輸入。在收到輸入后,read 命令會將數據放進一個變量。

例子:test2.sh

#!/bin/bash
# testing the read command
#
echo -n "Enter your name: "
read name
echo "Hello $name, welcome to my program. "

執行:$ ./test2.sh 

輸出:

Enter your name: Tom
Hello Tom, welcome to my program.

其他相關用法請看: shell 學習筆記

 

13、scp(secure copy)用於Linux之間復制文件和目錄

 scp是linux系統下基於ssh登陸進行安全的遠程文件拷貝命令

簡易寫法: 

scp [可選參數] file_source file_target 

實例

1、從本地復制到遠程

命令格式:

scp local_file remote_username@remote_ip:remote_folder 
#或者 
scp local_file remote_username@remote_ip:remote_file 
#或者 
scp local_file remote_ip:remote_folder 
#或者 
scp local_file remote_ip:remote_file 
  • 第1,2個指定了用戶名,命令執行后需要再輸入密碼,第1個僅指定了遠程的目錄,文件名字不變,第2個指定了文件名;
  • 第3,4個沒有指定用戶名,命令執行后需要輸入用戶名和密碼,第3個僅指定了遠程的目錄,文件名字不變,第4個指定了文件名;

應用實例:

scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music 
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music/001.mp3 
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music 
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music/001.mp3 

 

復制目錄命令格式:

scp -r local_folder remote_username@remote_ip:remote_folder 
#或者 
scp -r local_folder remote_ip:remote_folder 
  • 第1個指定了用戶名,命令執行后需要再輸入密碼;
  • 第2個沒有指定用戶名,命令執行后需要輸入用戶名和密碼;

應用實例:

scp -r /home/space/music/ root@www.runoob.com:/home/root/others/ 
scp -r /home/space/music/ www.runoob.com:/home/root/others/ 

  上面命令將本地 music 目錄復制到遠程 others 目錄下。

2、從遠程復制到本地

從遠程復制到本地,只要將從本地復制到遠程的命令的后2個參數調換順序即可,如下實例

應用實例:

scp root@www.runoob.com:/home/root/others/music /home/space/music/1.mp3 
scp -r www.runoob.com:/home/root/others/ /home/space/music/

說明

1.如果遠程服務器防火牆有為scp命令設置了指定的端口,我們需要使用 -P 參數來設置命令的端口號,命令格式如下:

#scp 命令使用端口號 4588
scp -P 4588 remote@www.runoob.com:/usr/local/sin.sh /home/administrator

2.使用scp命令要確保使用的用戶具有可讀取遠程服務器相應文件的權限,否則scp命令是無法起作用的。

 

14、新建文件或文件夾、刪除文件或文件夾( mkdir、touch、rm)

  新建文件命令:touch

  新建文件夾命令:mkdir

  刪除文件或文件夾命令:rm

 

(一) touch命令

 linux下新建文件的方式有非常多,比如:使用vi新建文件、使用cp命令拷貝一個文件、可是最經常使用的還是使用touch命令新建一個文件。

  Linux touch命令用於修改文件或者目錄的時間屬性,包括存取時間和更改時間。若文件不存在,系統會建立一個新的文件。

  ls -l 可以顯示檔案的時間記錄。

語法:

touch [-acfm][-d<日期時間>][-r<參考文件或目錄>] [-t<日期時間>][--help][--version][文件或目錄…]

 

實例:

使用指令"touch"修改文件"testfile"的時間屬性為當前系統時間,輸入如下命令

$ touch testfile                #修改文件的時間屬性

首先,使用ls命令查看testfile文件的屬性,如下所示:

$ ls -l testfile                #查看文件的時間屬性  
#原來文件的修改時間為16:09  
-rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile  

執行指令"touch"修改文件屬性以后,並再次查看該文件的時間屬性,如下所示:

$ touch testfile                #修改文件時間屬性為當前系統時間  
$ ls -l testfile                #查看文件的時間屬性  
#修改后文件的時間屬性為當前系統時間  
-rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile  

使用指令"touch"時,如果指定的文件不存在,則將創建一個新的空白文件。例如,在當前目錄下,使用該指令創建一個空白文件"file",輸入如下命令:

$ touch file            #創建一個名為“file”的新的空白文件 

 

(二) mkdir 命令 (遞歸創建文件夾)

語法:

mkdir [-p] dirName

    -p:遞歸創建文件夾 ,確保目錄名稱存在,不存在的就建一個
    -mmode:新建文件夾,並設置文件夾的文件訪問模式為mode

使用-p選項遞歸的創建zsy/hxn文件夾。 

 

 使用-m選項指定新建文件夾的文件訪問模式為770,即rwxrwx---。

 

 

(三) rm命令 (用於刪除一個文件或者目錄)

語法:

rm [options] name...

參數

  • -i 刪除前逐一詢問確認。
  • -f 即使原檔案屬性設為唯讀,亦直接刪除,無需逐一確認。
  • -r 將目錄及以下之檔案亦逐一刪除。

在實際使用中。-r和-f選項一般同一時候使用,用來強制、遞歸的刪除指定的文件或者文件夾。

 

實例

刪除文件可以直接使用rm命令,若刪除目錄則必須配合選項"-r",例如:

# rm  test.txt 
rm:是否刪除 一般文件 "test.txt"? y  
# rm  homework  
rm: 無法刪除目錄"homework": 是一個目錄  
# rm  -r  homework  
rm:是否刪除 目錄 "homework"? y 

刪除當前目錄下的所有文件及目錄,命令行為:

rm  -r  * 

文件一旦通過rm命令刪除,則無法恢復,所以必須格外小心地使用該命令。

對於關鍵的文件或者文件夾,在刪除時建議使用-i選項。避免誤操作。

 

15、解決執行shell腳本時提示這樣的錯誤主要是由於shell腳本文件是dos格式導致

在執行shell腳本時提示這樣的錯誤主要是由於shell腳本文件是dos格式,即每一行結尾以\r\n來標識,而unix格式的文件行尾則以\n來標識。
  查看腳本文件是dos格式還是unix格式的幾種辦法。
 (1)cat -A filename  從顯示結果可以判斷,dos格式的文件行尾為^M$,unix格式的文件行尾為$。
 (2)od -t x1 filename 如果看到輸出內容中存在0d 0a的字符,那么文件是dos格式,如果只有0a,則是unix格式。
 (3)vi filename打開文件,執行 : set ff,如果文件為dos格式在顯示為fileformat=dos,如果是unxi則顯示為fileformat=unix。

  解決方法:
 (1)使用linux命令dos2unix filename,直接把文件轉換為unix格式
 (2)使用sed命令sed -i "s/\r//" filename  或者 sed -i "s/^M//" filename直接替換結尾符為unix格式
 (3)vi filename打開文件,執行 : set ff=unix 設置文件為unix,然后執行:wq,保存成unix格式。

16、telnet命令

  telnet命令通常用來遠程登錄。telnet程序是基於TELNET協議的遠程登錄客戶端程序。Telnet協議是TCP/IP協議族中的一員,是Internet遠程登陸服務的標准協議和主要方式。它為用戶提供了在本地計算機上完成遠程主機工作的 能力。在終端使用者的電腦上使用telnet程序,用它連接到服務器。終端使用者可以在telnet程序中輸入命令,這些命令會在服務器上運行,就像直接在服務器的控制台上輸入一樣。可以在本地就能控制服務器。要開始一個 telnet會話,必須輸入用戶名和密碼來登錄服務器。Telnet是常用的遠程控制Web服務器的方法。

  但是,telnet因為采用明文傳送報文,安全性不好,很多Linux服務器都不開放telnet服務,而改用更安全的ssh方式了。但仍然有很多別的系統可能采用了telnet方式來提供遠程登錄,因此弄清楚telnet客戶端的使用方式仍是很有必要的。

  telnet命令還可做別的用途,比如確定遠程服務的狀態,比如確定遠程服務器的某個端口是否能訪問。

常用命令:

  telnet ip

  telnet ip 端口號

 

17、 ssh命令

SSH(遠程連接工具)連接原理:ssh服務是一個守護進程(demon),系統后台監聽客戶端的連接,ssh服務端的進程名為sshd,負責實時監聽客戶端的請求(IP 22端口,22端口是ssh服務的),包括公共秘鑰等交換等信息。

ssh服務端由2部分組成: openssh(提供ssh服務)    openssl(提供加密的程序)

ssh的客戶端可以用 XSHELL,Securecrt, Mobaxterm等工具進行連接

SSH的工作機制 

      服務器啟動的時候自己產生一個密鑰(768bit公鑰),本地的ssh客戶端發送連接請求到ssh服務器,服務器檢查連接點客戶端發送的數據和IP地址,確認合法后發送密鑰(768bits)給客戶端,此時客戶端將本地私鑰(256bit)和服務器的公鑰(768bit)結合成密鑰對key(1024bit),發回給服務器端,建立連接通過key-pair數據傳輸。       

SSH的加密技術

加密技術:傳輸過程,數據加密。             
1.SSH1沒有對客戶端的秘鑰進行校驗,很容易被植入惡意代碼 
2.SSH2增加了一個確認聯機正確性的Diffe_Hellman機制,每次數據的傳輸,Server都會檢查數據來源的正確性,避免黑客入侵。                    
  SSH2支持RSA和DSA密鑰    
        DSA:digital signature Algorithm  數字簽名
        RSA:既可以數字簽名又可以加密      

SSH知識小結           

   1.SSH是安全的加密協議,用於遠程連接Linux服務器                
   2.SSH的默認端口是22,安全協議版本是SSH2                
   3.SSH服務器端主要包含2個服務功能SSH連接和SFTP服務器                
   4.SSH客戶端包含ssh連接命令和遠程拷貝scp命令等 

 

常用命令: ssh 用戶名@ip

 

18、目錄的操作命令(增刪改查)

1: ls或者llllls -l的別名,ll命令可以看到該目錄下的所有目錄和文件的詳細信息):查看目錄信息

2: find 目錄 參數: 尋找目錄(查)

示例:

  • 列出當前目錄及子目錄下所有文件和文件夾: find .
  • /home目錄下查找以.txt結尾的文件名:find /home -name "*.txt"
  • 同上,但忽略大小寫: find /home -iname "*.txt"
  • 當前目錄及子目錄下查找所有以.txt和.pdf結尾的文件:find . \( -name "*.txt" -o -name "*.pdf" \)find . -name "*.txt" -o -name "*.pdf"

3:  mv 目錄名稱 新目錄名稱: 修改目錄的名稱(改)

  注意:mv的語法不僅可以對目錄進行重命名而且也可以對各種文件,壓縮包等進行 重命名的操作。mv命令用來對文件或目錄重新命名,或者將文件從一個目錄移到另一個目錄中。后面會介紹到mv命令的另一個用法。

4:  mv 目錄名稱 目錄的新位置: 移動目錄的位置---剪切(改)

  注意:mv語法不僅可以對目錄進行剪切操作,對文件和壓縮包等都可執行剪切操作。另外mv與cp的結果不同,mv好像文件“搬家”,文件個數並未增加。而cp對文件進行復制,文件個數增加了。

5:  cp -r 目錄名稱 目錄拷貝的目標位置: 拷貝目錄(改),-r代表遞歸拷貝

  注意:cp命令不僅可以拷貝目錄還可以拷貝文件,壓縮包等,拷貝文件和壓縮包時不 用寫-r遞歸

6:  rm [-rf] 目錄: 刪除目錄(刪)

  注意:rm不僅可以刪除目錄,也可以刪除其他文件或壓縮包,為了增強大家的記憶, 無論刪除任何目錄或文件,都直接使用rm -rf 目錄/文件/壓縮包

 

19:文件的操作命令(增刪改查)

  1. touch 文件名稱: 文件的創建(增)

  2. cat/more/less/tail 文件名稱 文件的查看(查)

    • cat: 查看顯示文件內容
    • more: 可以顯示百分比,回車可以向下一行, 空格可以向下一頁,q可以退出查看
    • less: 可以使用鍵盤上的PgUp和PgDn向上 和向下翻頁,q結束查看
    • tail-10 : 查看文件的后10行,Ctrl+C結束

    注意:命令 tail -f 文件 可以對某個文件進行動態監控,例如tomcat的日志文件, 會隨着程序的運行,日志會變化,可以使用tail -f catalina-2016-11-11.log 監控 文 件的變化

  3. vim 文件: 修改文件的內容(改)

    vim編輯器是Linux中的強大組件,是vi編輯器的加強版,vim編輯器的命令和快捷方式有很多,但此處不一一闡述,大家也無需研究的很透徹,使用vim編輯修改文件的方式基本會使用就可以了。

    在實際開發中,使用vim編輯器主要作用就是修改配置文件,下面是一般步驟:

    vim 文件------>進入文件----->命令模式------>按i進入編輯模式----->編輯文件 ------->按Esc進入底行模式----->輸入:wq/q! (輸入wq代表寫入內容並退出,即保存;輸入q!代表強制退出不保存。)

  4. rm -rf 文件: 刪除文件(刪)

    同目錄刪除:熟記 rm -rf 文件 即可

20: 壓縮文件的操作命令

1)打包並壓縮文件:

  Linux中的打包文件一般是以.tar結尾的,壓縮的命令一般是以.gz結尾的。

  而一般情況下打包和壓縮是一起進行的,打包並壓縮后的文件的后綴名一般.tar.gz。 命令:tar -zcvf 打包壓縮后的文件名 要打包壓縮的文件 其中:

    z:調用gzip壓縮命令進行壓縮

    c:打包文件

    v:顯示運行過程

    f:指定文件名

  比如:假如test目錄下有三個文件分別是:aaa.txt bbb.txt ccc.txt,如果我們要打包test目錄並指定壓縮后的壓縮包名稱為test.tar.gz可以使用命令:tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt或:tar -zcvf test.tar.gz /test/

2)解壓壓縮包:

命令:tar [-xvf] 壓縮文件

其中:x:代表解壓

示例:

1 將/test下的test.tar.gz解壓到當前目錄下可以使用命令:tar -xvf test.tar.gz

2 將/test下的test.tar.gz解壓到根目錄/usr下:tar -xvf test.tar.gz -C /usr(- C代表指定解壓的位置)

21: Linux的權限命令

  操作系統中每個文件都擁有特定的權限、所屬用戶和所屬組。權限是操作系統用來限制資源訪問的機制,在Linux中權限一般分為讀(readable)、寫(writable)和執行(excutable),分為三組。分別對應文件的屬主(owner),屬組(group)和其他用戶(other),通過這樣的機制來限制哪些用戶、哪些組可以對特定的文件進行什么樣的操作。通過 ls -l 命令我們可以 查看某個目錄下的文件或目錄的權限

示例:在隨意某個目錄下ls -l

第一列的內容的信息解釋如下:

下面將詳細講解文件的類型、Linux中權限以及文件有所有者、所在組、其它組具體是什么?

文件的類型:

  • d: 代表目錄
  • -: 代表文件
  • l: 代表軟鏈接(可以認為是window中的快捷方式)

Linux中權限分為以下幾種:

  • r:代表權限是可讀,r也可以用數字4表示
  • w:代表權限是可寫,w也可以用數字2表示
  • x:代表權限是可執行,x也可以用數字1表示

文件和目錄權限的區別:

對文件和目錄而言,讀寫執行表示不同的意義。

對於文件:

權限名稱 可執行操作
r 可以使用cat查看文件的內容
w 可以修改文件的內容
x 可以將其運行為二進制文件

對於目錄:

權限名稱 可執行操作
r 可以查看目錄下列表
w 可以創建和刪除目錄下文件
x 可以使用cd進入目錄

需要注意的是超級用戶可以無視普通用戶的權限,即使文件目錄權限是000,依舊可以訪問。 在linux中的每個用戶必須屬於一個組,不能獨立於組外。在linux中每個文件有所有者、所在組、其它組的概念。

  • 所有者

    一般為文件的創建者,誰創建了該文件,就天然的成為該文件的所有者,用ls ‐ahl命令可以看到文件的所有者 也可以使用chown 用戶名 文件名來修改文件的所有者 。

  • 文件所在組

    當某個用戶創建了一個文件后,這個文件的所在組就是該用戶所在的組 用ls ‐ahl命令可以看到文件的所有組 也可以使用chgrp 組名 文件名來修改文件所在的組。

  • 其它組

    除開文件的所有者和所在組的用戶外,系統的其它用戶都是文件的其它組

我們再來看看如何修改文件/目錄的權限。

修改文件/目錄的權限的命令:chmod

示例:修改/test下的aaa.txt的權限為屬主有全部權限,屬主所在的組有讀寫權限, 其他用戶只有讀的權限

chmod u=rwx,g=rw,o=r aaa.txt

上述示例還可以使用數字表示:

chmod 764 aaa.txt

補充一個比較常用的東西:

假如我們裝了一個zookeeper,我們每次開機到要求其自動啟動該怎么辦?

  1. 新建一個腳本zookeeper
  2. 為新建的腳本zookeeper添加可執行權限,命令是:chmod +x zookeeper
  3. 把zookeeper這個腳本添加到開機啟動項里面,命令是:chkconfig --add zookeeper
  4. 如果想看看是否添加成功,命令是:chkconfig --list

22: Linux 用戶管理

Linux系統是一個多用戶多任務的分時操作系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個賬號,然后以這個賬號的身份進入系統。

用戶的賬號一方面可以幫助系統管理員對使用系統的用戶進行跟蹤,並控制他們對系統資源的訪問;另一方面也可以幫助用戶組織文件,並為用戶提供安全性保護。

Linux用戶管理相關命令:

  • useradd 選項 用戶名:添加用戶賬號
  • userdel 選項 用戶名:刪除用戶帳號
  • usermod 選項 用戶名:修改帳號
  • passwd 用戶名:更改或創建用戶的密碼
  • passwd -S 用戶名 :顯示用戶賬號密碼信息
  • passwd -d 用戶名: 清除用戶密碼

useradd命令用於Linux中創建的新的系統用戶。useradd可用來建立用戶帳號。帳號建好之后,再用passwd設定帳號的密碼.而可用userdel刪除帳號。使用useradd指令所建立的帳號,實際上是保存在/etc/passwd文本文件中。

passwd命令用於設置用戶的認證信息,包括用戶密碼、密碼過期時間等。系統管理者則能用它管理系統用戶的密碼。只有管理者可以指定用戶名稱,一般用戶只能變更自己的密碼。

23: Linux系統用戶組的管理

  每個用戶都有一個用戶組,系統可以對一個用戶組中的所有用戶進行集中管理。不同Linux 系統對用戶組的規定有所不同,如Linux下的用戶屬於與它同名的用戶組,這個用戶組在創建用戶時同時創建。

用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實際上就是對/etc/group文件的更新。

Linux系統用戶組的管理相關命令:

  • groupadd 選項 用戶組 :增加一個新的用戶組
  • groupdel 用戶組:要刪除一個已有的用戶組
  • groupmod 選項 用戶組 : 修改用戶組的屬性

24: 其他常用命令

  • pwd: 顯示當前所在位置

  • sudo + 其他命令:以系統管理者的身份執行指令,也就是說,經由 sudo 所執行的指令就好像是 root 親自執行。

  • grep 要搜索的字符串 要搜索的文件 --color: 搜索命令,--color代表高亮顯示

  • ps -ef/ps -aux: 這兩個命令都是查看當前系統正在運行進程,兩者的區別是展示格式不同。如果想要查看特定的進程可以使用這樣的格式:ps aux|grep redis (查看包括redis字符串的進程),也可使用 pgrep redis -a

    注意:如果直接用ps((Process Status))命令,會顯示所有進程的狀態,通常結合grep命令查看某進程的狀態。

  • kill -9 進程的pid: 殺死進程(-9 表示強制終止。)

    先用ps查找進程,然后用kill殺掉

  • 網絡通信命令:

    • 查看當前系統的網卡信息:ifconfig
    • 查看與某台機器的連接情況:ping
    • 查看當前系統的端口使用:netstat -an
  • net-tools 和 iproute2 : net-tools起源於BSD的TCP/IP工具箱,后來成為老版本Linux內核中配置網絡功能的工具。但自2001年起,Linux社區已經對其停止維護。同時,一些Linux發行版比如Arch Linux和CentOS/RHEL 7則已經完全拋棄了net-tools,只支持iproute2。linux ip命令類似於ifconfig,但功能更強大,旨在替代它。更多詳情請閱讀如何在Linux中使用IP命令和示例

  • shutdown: shutdown -h now: 指定現在立即關機;shutdown +5 "System will shutdown after 5 minutes":指定5分鍾后關機,同時送出警告信息給登入用戶。

  • reboot: reboot: 重開機。reboot -w: 做個重開機的模擬(只有紀錄並不會真的重開機)。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM