Linux -- 部分命令

  • ls -- 文件按時間排序
  • sort 對文檔中的內容進行排序
  • ps
  • 標準輸入
  • file 命令
  • rm -- 根據 inode 號刪除文件
  • cut
  • xargs

 

ls -- 文件按時間排序node


 

ls -alt                    // 按修改時間排序
ls --sort=time -la        // 等價於 ls -alt
ls -alc                    // 按建立時間排序
ls -alu                    // 按訪問時間排序

# 按以上標準逆向排序 -r
ls -alrt
ls --sort=time -lra
ls -alrc
ls -alru

 

 

sort 對文檔中的內容進行排序linux


sort -k3 -t: -n /etc/passwd

// -k3        對該文檔的第三個字段進行排序;
// -t:        使用 : 做爲分隔符;
// -n:        數值排序, 使用第三段的整個數字進行排序;

 

 

psshell


 

ps命令講解apache

''' Linux中的 ps 命令是 <Process Status> 的縮寫, ps命令用來列出系統中當前運行的哪些進程; ps命令列出的是當前那些進程的快照,就是執行ps命令的那個時刻的那些進程, 若是想要動態的顯示進程信息,可使用 top 命令; 要對進程進行監測和控制, 首先必需要了解當前進程的狀況, 也就是須要查看當前的進程, 而 ps 命令就是最基本同時也是很是強大的進程查看命令; 使用該命令能夠肯定有哪些進程正在運行和運行狀態 , 進程是否結束, 進程有沒有僵死 , 哪些進程佔用了過多的資源等等, 總之大部分信息都是能夠經過該命令獲得.
ps 爲咱們提供了進程的一次性的查看, 它所提供的結果並非動態連續的;
'''

ps命令經常使用用法(方便查看系統進程)

1ps a 顯示現行終端機下的全部程序,包括其餘用戶的程序。

2ps -A 顯示全部進程。

3ps c 列出程序時,顯示每一個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。

4ps -e 此參數的效果和指定"A"參數相同。

5ps e 列出程序時,顯示每一個程序所使用的環境變量。

6ps f 用ASCII字符顯示樹狀結構,表達程序間的相互關係。

7ps -H 顯示樹狀結構,表示程序間的相互關係。

8ps -N 顯示全部的程序,除了執行ps指令終端機下的程序以外。

9ps s 採用程序信號的格式顯示程序情況。

10ps S 列出程序時,包括已中斷的子程序資料。

11ps -t<終端機編號>  指定終端機編號,並列出屬於該終端機的程序的情況。

12ps -u root  顯示root用戶信息

13ps x  顯示全部程序,不以終端機來區分。

最經常使用的方法是ps -aux,而後再利用一個管道符號導向到grep去查找特定的進程,而後再對特定的進程進行操做。

############################################################

實例3:顯示全部進程信息,連同命令行

      命令:ps -ef

實例4:ps 與grep 經常使用組合用法,查找特定進程

      命令:ps -ef|grep ssh

實例5:將目前屬於您本身此次登入的 PID 與相關信息列示出來

      命令:ps -l

    說明:

    各相關信息的意義:

    F 表明這個程序的旗標 (flag), 4 表明使用者爲 super user

    S 表明這個程序的狀態 (STAT),關於各 STAT 的意義將在內文介紹

    UID 程序被該 UID 所擁有

    PID 就是這個程序的 ID !

    PPID 則是其上級父程序的ID

    C CPU 使用的資源百分比

    PRI 這個是 Priority (優先執行序) 的縮寫,詳細後面介紹

    NI 這個是 Nice 值,在下一小節咱們會持續介紹

    ADDR 這個是 kernel function,指出該程序在內存的那個部分。若是是個 running的程序,通常就是 "-"

    SZ 使用掉的內存大小

    WCHAN 目前這個程序是否正在運做當中,若爲 - 表示正在運做

    TTY 登入者的終端機位置

    TIME 使用掉的 CPU 時間。

    CMD 所下達的指令爲什麼

    在預設的狀況下, ps 僅會列出與目前所在的 bash shell 有關的 PID 而已,因此, 當我使用 ps -l 的時候,只有三個 PID。

實例6:列出目前全部的正在內存當中的程序

    命令:ps aux

說明:

USER:該 process 屬於那個使用者帳號的

PID :該 process 的號碼

%CPU:該 process 使用掉的 CPU 資源百分比

%MEM:該 process 所佔用的物理內存百分比

VSZ :該 process 使用掉的虛擬內存量 (Kbytes)

RSS :該 process 佔用的固定的內存量 (Kbytes)

TTY :該 process 是在那個終端機上面運做,若與終端機無關,則顯示 ?,另外, tty1-tty6 是本機上面的登入者程序,若爲 pts/0 等等的,則表示爲由網絡鏈接進主機的程序。

STAT:該程序目前的狀態,主要的狀態有

R :該程序目前正在運做,或者是可被運做

S :該程序目前正在睡眠當中 (可說是 idle 狀態),但可被某些訊號 (signal) 喚醒。

T :該程序目前正在偵測或者是中止了

Z :該程序應該已經終止,可是其父程序卻沒法正常的終止他,形成 zombie (疆屍) 程序的狀態

START:該 process 被觸發啓動的時間

TIME :該 process 實際使用 CPU 運做的時間

COMMAND:該程序的實際指令

實例7:列出相似程序樹的程序顯示

命令:ps -axjf

實例8:找出與 cron 與 syslog 這兩個服務有關的 PID 號碼

命令:ps aux | egrep '(cron|syslog)'

 

3. 輸出指定的字段

命令:ps -o pid,ppid,pgrp,session,tpgid,comm

 

注意:"ps aux""ps -aux"不相同。例如"-u"用來顯示該用戶的進程。可是"u"則是顯示詳細的信息。

BSD風格:在BSD風格的語法選項前不帶連字符。例如: ps aux

UNIX/LINUX的風格:在linux風格的語法選項前面有一個破折號.例如: ps -ef

混合使用兩種Linux系統上的語法風格是好事兒。例如「ps ax -f」。

1、顯示全部進程:

$ ps ax

$ ps -ef

"u"或者"-f"參數來顯示全部進程的詳細信息

$ ps aux

$ ps -ef -f

注意:爲何用戶列不顯示個人用戶名,但顯示其餘用戶,如root、www等,對於全部的用戶名(包括你)若是長度大於8個字符,而後ps將只顯示UID,而不是用戶名。

2、根據用戶顯示進程:

由進程的所屬用戶使用「-u」選項後跟用戶名來顯示。多個用戶名能夠提供以逗號分隔。

$ ps -f -u www-data

3、經過名字和進程ID顯示進程:

經過名字或命令搜索進程,使用「-C」選項後面加搜索詞。

$ ps -C apache2

4、根據CPU或者內存進行排序:

「–sort」選項由逗號分隔的多個字段能夠用指定。此外,該字段能夠帶有前綴「-」或「」符號,表示降序或升序分別排序。經過進程列表進行排序有不少參數,你能夠檢查手冊頁的完整列表。

$ ps aux --sort=-pcpu,+pmem

$ ps aux --sort=-pcpu | head -5

5、用樹的風格顯示進程的層次關係:

許多進程其實是一些父進程分的分支,知道這父子進程關係每每是有用的。在'–forest'選項將創建ASCII藝術風格層次的樹視圖。

下面的命令將搜索進程名字爲Apache2,造成一個樹結構來顯示詳細的信息。

$ ps -f --forest -C apache2

6、顯示一個父進程的子進程:

這裏有一個例子顯示全部apache進程的分支

$ ps -o pid,uname,comm -C apache2

7、顯示一個進程的線程:

「-L」選項將顯示進程的線程。它能夠用來顯示特定進程的全部線程或者全部進程。

下面的命令將顯示全部id爲3150的進程所擁有的線程。

$ ps -p 3150 -L

8、改變要顯示的列:

ps命令能夠配置爲只顯示選中的列表。爲了顯示完整列表能夠查看手冊。

下面的命令只顯示PID,用戶名,CPU,內存和命令的列。

$ ps -e -o pid,uname,pcpu,pmem,comm

能夠重命名列標籤,至關的靈活。

$ ps -e -o pid,uname=USERNAME,pcpu=CPU_USAGE,pmem,comm

9、顯示進程運行的時間:

表示進程的運行時間。對於運行的時間,列默認狀況下是不顯示的,可使用「-O」選項查看。

$ ps -e -o pid,comm,etime

10、把ps命令變成一個實時查看器:

像往常同樣,watch命令能夠用來實時捕捉ps顯示進程。簡單的例子以下:

$ watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'

 

 

ps 參數vim

===================================ps 的參數說明=============================

l 長格式輸出;

u 按用戶名和啓動時間的順序來顯示進程;

j 用任務格式來顯示進程;

f 用樹形格式來顯示進程;

a 顯示全部用戶的全部進程(包括其它用戶)。顯示全部進程

-a 顯示同一終端下的全部程序

x 顯示無控制終端的進程;

r 顯示運行中的進程;

ww 避免詳細參數被截斷;

-A 列出全部的進程

-w 顯示加寬能夠顯示較多的資訊

-au 顯示較詳細的資訊

-aux 顯示全部包含其餘使用者的進程

-e 顯示全部進程,環境變量

-f 全格式

-h 不顯示標題

-l 長格式

-w 寬輸出

a   顯示終端上地全部進程,包括其餘用戶地進程

r   只顯示正在運行地進程

x   顯示沒有控制終端地進程

咱們經常使用的選項是組合是 aux 或 lax,還有參數 f 的應用。

pids 只列出進程標識符,之間運用逗號分隔.該進程列表必須在命令行參數地最後一個選項後面緊接着給出,中間不能插入空格.好比:ps -f1,4,5 顯示的是進程ID爲1,4,5的進程

下介紹長命令行選項,這些選項都運用「--」開頭:

--sort X[+|-] key [,[+|-] key [,…]] 從SORT KEYS段中選一個多字母鍵.「+」字符是可選地,由於默認地方向就是按數字升序或者詞典順序,「-」字符是逆序排序(即降序).

好比: ps -jax -sort=uid,-ppid,+pid.

--help 顯示幫助信息.

--version 顯示該命令地版本信息.

在前面地選項說明中提到了排序鍵,接下來對排序鍵做進一步說明.須要注意地是排序中運用地值是ps運用地內部值,並不是僅用於某些輸出格式地僞值.排序鍵列表見下表.

============排序鍵列表==========================

c cmd   可執行地簡單名稱

C cmdline   完整命令行

f flags   長模式標誌

g pgrp   進程地組ID

G tpgid   控制tty進程組ID

j cutime   累計用戶時間

J cstime   累計系統時間

k utime   用戶時間

K stime   系統時間

m min_flt   次要頁錯誤地數量

M maj_flt   重點頁錯誤地數量

n cmin_flt 累計次要頁錯誤

N cmaj_flt 累計重點頁錯誤

o session   對話ID

p pid   進程ID

P ppid   父進程ID

r rss   駐留大小

R resident 駐留頁

s size   內存大小(千字節)

S share   共享頁地數量

t tty   tty次要設備號

T start_time 進程啓動地時間

U uid   UID

u user   用戶名

v vsize   總地虛擬內存數量(字節)

y priority 內核調度優先級

 

 

ps aux 或者 lax 輸出格式bash

USER PID %CPU %MEM VSZ RSS TTY STA START TIME COMMAND

USER        // 進程全部者
PID         // 進程ID
%CPU        // 佔用的 CPU 使用率
%MEM        // 佔用的內存使用率
VSZ         // 佔用的虛擬內存大小
RSS         // 佔用的內存大小
TTY         // 終端的次要裝置號碼(minor device number of tty)
STAT        // 進程狀態
START       // 啓動進程的時間
TIME        // 進程消耗 CPU 的時間
COMMAND     // 命令的名稱和參數

 

 

標準輸入網絡


 

// 標註輸入,爲指定用戶建立密碼
$ echo 123 |passwd zxjr --stdin

// 對相應的字符串進行加密
$ echo 123 |openssl passwd -1 -stdin
    $1$xPokL2Yn$OlmcFvyqt3/ifxdhHPeJg0

 

 

file 命令session


 

命令格式:ssh

  file [-bchikLnNprsvz] [-f namefile] [-F separator] [-m magicfiles] file ... ide

 

命令功能:

  用於查看日曆等時間信息,如只有一個參數,則表示年份(1-9999),若有兩個參數,則表示月和年份;

  經過file命令, 辨識文件類型.

 

命令參數:

    -b    列出辨識結果時, 不顯示文件名稱;
    -c    詳細顯示指令執行過程,便於排錯或分析程序執行的情形;
    -f <文件名>    列出文件中文件名的文件類型;
    -F    使用指定分割符號替換輸出文件名後的默認的 ":" 分割符;
    -i    輸出mime類型的字符串;
    -L    查看對應軟連接對應文件的文件類型;
    -z    嘗試去解讀壓縮文件的內容;
    --help    顯示命令在線幫助;
    -version    顯示命令版本信息
 
使用示例:
// 查看文件類型
file install.log
    install.log: UTF-8 Unicode text

// 不輸出文件名稱,只顯示文件格式及編碼
file -b install.log
    UTF-8 Unicode text

// 輸出mime類型的字符串
file -i install.log
    install.log: text/plain; charset=utf-8
    
// 查看文件中的文件名的文件類型
vim test
    /etc/networks
    testing
file -f test
    /etc/networks: ASCII text
    testing:       cannot open 'testing' (No such file or directory)

// 使用指定分割符號代替輸出文件名後的默認 ":" 分割符
file -F '--' test
    test-- ASCII text

// 嘗試去解讀壓縮文件的內容
file -z test.gz
    test.gz: ASCII text (gzip compressed data, was "test", from Unix, last modified: Fri Jul  7 13:17:16 2017)

// 查看軟連接對應文件的文件類型
file test.txt
    test.txt: symbolic link to `test'

 

rm -- 根據 inode 號刪除文件


 

ls -i           // 查找文件或目錄的inode號;

// 使用上面查詢到的 inode 號進行刪除文件;
find ./ -inum 25789760 -exec rm {} \;

 

 

cut


 

命令選項

// cut 命令主要用於截取一行中若干個, 選項:
    * -b    // 根據字節來截取,忽視多字符,好比漢字,能夠配合[-n]選項來忽視不完整的多字符;
    * -c    // 根據字符來截取,多字節字符當作一個字符;
    * -d    // 根據字段來截取時,定義分割符,默認是TAB;配合[-f]輸出指定字段;
    * -f    // 根據字段來截取時,輸出指定的字段;
    * -n    // 截取後忽略不完整的字符,配合 [ -b ]使用;
    * -s    // 根據字段來截取時,忽略不包含分割符的行,配合 [ -d ] 使用.

 

 

字節截取和字符截取

// 使用方法
    * cut -b LIST
    * cut -c LIST
// LIST爲要輸入的字節位置,能夠指定位置也能夠指定區間,例如1,3,5表示第一\第三\第五個字節;1,3-5表示第一和第三到第五個字節;
// 區別在於多字節字符的處理上,好比漢字;經過下面例子解析:

[root@bogon ~]# echo "烽火戲諸侯" |cut -b 1-3
烽
[root@bogon ~]# echo "烽火戲諸侯" |cut -b 1-4
烽
[root@bogon ~]# echo "烽火戲諸侯" |cut -b 1-5
烽
[root@bogon ~]# echo "烽火戲諸侯" |cut -b 1-6
烽火
******************************************************************
[root@bogon ~]# echo "烽火戲諸侯" |cut -c 1
烽
[root@bogon ~]# echo "烽火戲諸侯" |cut -c 1,2
烽火
[root@bogon ~]# echo "烽火戲諸侯" |cut -c 1-3
烽火戲
********************************************************************************
// -d參數配置[ -n ]選項忽略不完整的字符
[root@bogon ~]# echo "烽火戲諸侯" |cut -nb 1-7
烽火
[root@bogon ~]# echo "烽火戲諸侯" |cut -nb 1-4

 

 

字段截取

// cut還能夠根據字段截取行字符,默認字段分割符爲TAB表示,可使用 [ -d ] 來指定分割符,分割符限定爲單字符.特別須要注意的是:多字節字符也是單字符,例如:
// 配合[ -s ] 選項,能夠忽略不包含分割符的行,例如某個文件中,裏面沒有TAB,全是空格
[root@bogon ~]# vim test.txt
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 Oct09 ?        00:00:13 init [5]
root         2     1  0 Oct09 ?        00:00:06 [ksoftirqd/0]
root         3     1  0 Oct09 ?        00:00:05 [events/0]
root         4     3  0 Oct09 ?        00:00:00 [khelper]

// 截取方法:
[root@bogon ~]# cat test.txt |cut -d : -f 2
UID        PID  PPID  C STIME TTY          TIME CMD
00
00
00
00
[root@bogon ~]# cut -sd : -f 2 test.txt
00
00
00
00
[root@bogon ~]# echo "烽火戲諸侯"|cut -d 戲 -f 2
諸侯

 

xargs


 

  不少命令不支持管道來傳遞參數 -- xargs

 

參數:

  • -0 : 當 sdtin 含有特殊字符的時候, 將其當成通常字符;
  • -a <file> : 從文件中讀入做爲參數;
  • -p : 當每次執行一個 argumer 的時候詢問一次用戶;
  • -n <num> : 表示命令在執行的時候一次用的argument的個數, 默認是用全部的;
  • -t : 表示先打印命令, 而後再執行
  • -i 或 -I : 一行一行賦值給{}, 能夠用 {} 代替;
  • -r : 當 xargs 的輸入爲空時中止 xargs, 再也不去執行了

 

示例:

// -0 參數
echo '\n' |xargs echo
 n
echo '\n' |xargs -0 echo
 \n
 
// -a 參數
xargs -a test echo
 good good study day day up gogogo good gold goood goolld
 
// -e 參數
cat test |xargs -E 'gogogo' echo
 good good study day day up
 
// -p 參數
cat test |xargs -p echo
 echo good good study day day up gogogo good gold goood goolld ?...y
 good good study day day up gogogo good gold goood goolld
 
// -n 參數
cat test |xargs -n1 echo
 good
 good
 study
 day
 day
 up
 gogogo
 good
 gold
 goood
 goolld
 
// -t 參數
cat test |xargs -t echo
 echo good good study day day up gogogo good gold goood goolld 
 good good study day day up gogogo good gold goood goolld
 
// -i 參數
ls |xargs -t -i mv {} {}.back
 mv test test.back
 
// -r 參數
echo "" |xargs -t -r mv

// 使用 xargs 進行操做;
find ./ -type f -name tian
 ./tian
find ./ -type f -name tian |xargs rm -f ;        // 使用 xargs 進行刪除;
find ./ -type f -name tian -exec rm -f {} \;     // 使用 -exec 進行刪除, 必須使用{} , 及 \; 結尾...
相關文章
相關標籤/搜索