linux命令備忘錄

系統管理

  • ipcrm
    用來刪除一個或更多的消息隊列、信號量集或者共享內存標識。

    • -M 想刪除的共享內存的key
    • -m 想刪除的共享內存的id
    • -Q 想刪除的消息隊列的key
    • -q 想刪除的消息隊列的id
    • -S 想刪除的信號量的key
    • -s 想刪除的信號量的id
  • openssl
    提供常用密碼算法、常用的密鑰和證書封裝管理功能及SSL協議的工具
    例子:用SHA1算法計算文件file.txt的哈希值,輸出到stdout
    openssl dgst -sha1 file.txt

  • chage
    修改用戶密碼過期信息

    • -m:密碼可更改的最小天數。爲零時代表任何時候都可以更改密碼。
    • -M:密碼保持有效的最大天數。
    • -W:用戶密碼到期前,提前收到警告信息的天數。 -E:帳號到期的日期。過了這天,此帳號將不可用。
    • -d:上一次更改密碼的日期。
    • -I:停滯時期。如果一個密碼已過期這些天,那麼此帳號將不可用。
    • -l:列出當前的設置。由非特權用戶來確定他們的密碼或帳號何時過期。
  • lastb
    讀取位於/var/log目錄下,名稱爲btmp的文件,並把該文件內容記錄的登入失敗的用戶名單,全部顯示出來。

ps命令支持三種使用的語法格式並且可以混用
1. UNIX風格,選項可以組合在一起,並且選項前必須有“-”連字符
1. BSD風格,選項可以組合在一起,但是選項前不能有“-”連字符
1. GNU風格的長選項,選項前有兩個“-”連字符

  • -e 顯示所有進程
  • -u userlist 根據有效用戶id或名字過濾進程
  • -U userlist 根據真實用戶id或名字過濾進程
  • -C cmdlist 根據進程名字過濾進程
  • -L [PID] 查看線程

watch

watch命令可以實時全屏監控當前命令執行的動態變化結果

  • -n 指定間隔時間
  • -d 高亮變化

lsof

  • a causes list selection options to be ANDed
  • -c C selects the listing of files for processes executing the command that begins with the characters of c. Multiple commands may
    be specified, using multiple -c options. They are joined in a single
    ORed set before participating in AND option selection
  • -u USER顯示屬於指定用戶名或用戶id的進程打開的所有文件
  • +d DIR 顯示目錄下被進程打開的文件,對DIR目錄下的目錄不進行遍歷
  • +D DIR 顯示目錄下被進程打開的文件,對DIR目錄下的目錄進行遍歷
  • -d FD 指定文件描述符
  • -p PID 指定進程id
  • -i [46][protocol][@hostname|hostaddr][:service|port]
    46 specifies the IP version, IPv4 or IPv6 that applies to the following address. ‘6’
    may be be specified only if the UNIXdialect supports IPv6. If
    neither ‘4’ nor ‘6’ is specified, the following address applies to
    all IP versions. protocol is a protocol name - TCP, UDP hostname is
    an Internet host name. Unless a specific IP version is specified,
    open network files associated with host names of all versions will be
    selected. hostaddr is a numeric Internet IPv4 address in dot form; or
    an IPv6 numeric address in colon form, enclosed in brackets, if the
    UNIX dialect supports IPv6. When an IP version is selected, only
    its numeric addresses may be specified. service is an /etc/services
    name - e.g., smtp or a list of them. port is a port number, or a
    list of them.
    例子:
    -i6 - IPv6 only TCP:25 - TCP and port 25
    @1.2.3.4 - Internet IPv4 host address 1.2.3.4
    @[3ffe:1ebc::1]:1234 - Internet IPv6 host address 3ffe:1ebc::1, port 1234
    UDP:who - UDP who service port
    [email protected]:513 - TCP, port 513 and host name lsof.itap
    tcp@foo:1-10,smtp,99 - TCP, ports 1 through 10, service name smtp,
    port 99, host name foo tcp@bar:1-smtp - TCP, ports 1 through smtp,
    host bar :time - either TCP, UDP or UDPLITE time service port

當Linux計算機受到入侵時,常見的情況是日誌文件被刪除,以掩蓋攻擊者的蹤跡。管理錯誤也可能導致意外刪除重要的文件,比如在清理舊日誌時,意外地刪除了數據庫的活動事務日誌。有時可以通過lsof來恢復這些文件。
當進程打開了某個文件時,只要該進程保持打開該文件,即使將其刪除,它依然存在於磁盤中。這意味着,進程並不知道文件已經被刪除,它仍然可以向打開該文件時提供給它的文件描述符進行讀取和寫入。除了該進程之外,這個文件是不可見的,因爲已經刪除了其相應的目錄索引節點。
在/proc
目錄下,其中包含了反映內核和進程樹的各種文件。/proc目錄掛載的是在內存中所映射的一塊區域,所以這些文件和目錄並不存在於磁盤中,因此當我們對這些文件進行讀取和寫入時,實際上是在從內存中獲取相關信息。大多數與
lsof 相關的信息都存儲於以進程的 PID 命名的目錄中,即 /proc/1234 中包含的是 PID 爲 1234
的進程的信息。每個進程目錄中存在着各種文件,它們可以使得應用程序簡單地瞭解進程的內存空間、文件描述符列表、指向磁盤上的文件的符號鏈接和其他系統信息。lsof
程序使用該信息和其他關於內核內部狀態的信息來產生其輸出。所以lsof
可以顯示進程的文件描述符和相關的文件名等信息。也就是我們通過訪問進程的文件描述符可以找到該文件的相關信息。
當系統中的某個文件被意外地刪除了,只要這個時候系統中還有進程正在訪問該文件,那麼我們就可以通過lsof從/proc目錄下恢復該文件的內容。
假如由於誤操作將/var/log/messages文件刪除掉了,那麼這時要將/var/log/messages文件恢復的方法如下:
首先使用lsof來查看當前是否有進程打開/var/logmessages文件,如下: # lsof |grep
/var/log/messages syslogd 1283 root 2w REG 3,3 5381017 1773647
/var/log/messages (deleted) 從上面的信息可以看到 PID 1283(syslogd)打開文件的文件描述符爲
2。同時還可以看到/var/log/messages已經標記被刪除了。因此我們可以在 /proc/1283/fd/2
(fd下的每個以數字命名的文件表示進程對應的文件描述符)中查看相應的信息,如下:
head -n 10 /proc/1283/fd/2 Aug 4 13:50:15 holmes86 syslogd 1.4.1: restart. Aug 4 13:50:15 holmes86 kernel: klogd 1.4.1, log source =
/proc/kmsg started. Aug 4 13:50:15 holmes86 kernel: Linux version
2.6.22.1-8 (rooteverestbuilder.linux-ren.org) (gcc version 4.2.0) #1 SMP Wed Jul 18 11:18:32 EDT 2007 Aug 4 13:50:15 holmes86 kernel:
BIOS-provided physical RAM map: Aug 4 13:50:15 holmes86 kernel:
BIOS-e820: 0000000000000000 - 000000000009f000 (usable) Aug 4 13:50:15
holmes86 kernel: BIOS-e820: 000000000009f000 - 00000000000a0000
(reserved) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 0000000000100000
- 000000001f7d3800 (usable) Aug 4 13:50:15 holmes86 kernel: BIOS-e820: 000000001f7d3800 - 0000000020000000 (reserved) Aug 4 13:50:15 holmes86
kernel: BIOS-e820: 00000000e0000000 - 00000000f0007000 (reserved) Aug
4 13:50:15 holmes86 kernel: BIOS-e820: 00000000f0008000 -
00000000f000c000 (reserved) 從上面的信息可以看出,查看 /proc/1283/fd/2
就可以得到所要恢復的數據。如果可以通過文件描述符查看相應的數據,那麼就可以使用 I/O 重定向將其複製到文件中,如: cat
/proc/1283/fd/2 > /var/log/messages
對於許多應用程序,尤其是日誌文件和數據庫,這種恢復刪除文件的方法非常有用。

netstat

  • 不加任何參數 顯示所有打開的socket
  • -r 顯示路由表
  • -i 顯示網絡接口
  • -n 顯示數值地址
  • -c 每秒顯示一次
  • -p 顯示每個socket所屬進程的進程id和程序名字
  • -l 只顯示處於listening狀態的socket
  • -t 只顯示tcp
  • -u 只顯示udp

xargs

  • -0 表示輸入的每一項是以null分隔開的,默認情況下以空白或換行分隔,經常配合-print0使用
  • -t 顯示執行的命令
  • -n NUM 每次傳給命令的參數個數
  • -i (-I{}) 把{}作爲佔位符
  • -d DIM 自定義輸入的分隔符
    例如:
    echo “nameXnameXnameXname” | xargs -dX
    name name name name

wc

  • -c 顯示字節數
  • -m 顯示字符數
  • -l 顯示行數
  • -L 顯示最長行的長度
  • -w 顯示單詞數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章