用linux man命令,自己解決問題
最近在極客時間上學習跟著老師學習“linux效能優化”的相關課程。
其中老師在課程實驗時,經常提到:
- “同樣你們可以先實驗,如果發現有問題,建議你第一時間通過自己的辦法解決,如搜尋引擎。如果最後無法解決再留言給我”
- “善於利用linux 的man /proc,可以幫助你在linux學習中很快速的知道某個結果的意義”。
linux本身是具有很強大的文件支援能力的。其實剛開始學習linux時候,第一時間是去百度,得到的結果千奇百怪,且很多錯誤,完全不知道man的強大。
- 事實上,也有很多人是不知道man命令的具體作用的,或者沒有充分發揮作用。它能給到的答案,是正式的(official)且快速的,比在網上搜尋靠譜多了。
- 還有最近的工作中,也是用工具產生一個圖片,預設的就是png,放大後效果不好。突然有人提示,工具加引數了應該可以生成svg。一檢視help手冊,果然如此,所以檢視手冊的重要性
好了,言歸正傳,在linux中man這個命令到底是怎麼一個概念呢:
- man其實是manual的縮寫;
- man就是用來檢視系統相關手冊的一個方法;
- man可以顯示手冊頁,上下滾動,查詢頁面等。
接下來,說說怎麼使用,這裡僅從最常用到的一些內容出發吧,畢竟龐大的文件內容,這個東西只需要知道大概,出現問題時知道從哪裡找到內容即可
- 最簡單的方法就
# man命令 + 執行命令(如write)/系統內容(如/proc)/系統API名(如fopen)
$ man program/utility/function
這樣可以直接的檢視某個資訊的完整文件,有的文件還有被翻譯為各種語言,當該文件支援的翻譯語言有主機的語言時,會直接以該主機的語言顯示。
- 當某個名稱既有命令,又有API時,有兩種方法檢視:
(1)直接加上 -a引數:你可以看完一部分後,再看另外的一部分,以mount為例
$ man -a mount
#按下【enter】後,就會顯示mount命令的內容:
$ MOUNT(8) System Administration MOUNT(8)
$ ...... SYNOPSIS
$ mount [-l|-h|-V]
$ ......
在顯示內容的最後,會有一個提示:
# Manual page mount(8) line 1 (press h for help or q to quit)
再按下【q】後,會提示是否進入下一頁:
# --Man-- 下一頁: mount(2) [ 檢視 (return) | 跳過 (Ctrl-D) | 退出 (Ctrl-C) ]
按下【enter】後,就顯示mount 這個api的文件內容:
$ MOUNT(2) Linux Programmer's Manual MOUNT(2)
$ ...... SYNOPSIS
$ #include <sys/mount.h>
$ ......
看上面的結果,就會發現mount後面有數字,命令後面是8,api後面是2,這就是第二種方法:
$ man + 名稱
# 在中間加一個數字,或者引數,如下面的命令直接檢視mount這個api的文件
# -s可以省略,即man 2 mount
$ man -s 2 mount
- 這裡就涉及了這個-s引數的意義
-s就是section的意義,每個內容都是按照型別放在不同的section的,這裡簡單的解說下,知道常見的即可,平時就會用到。
section number | 說明 |
---|---|
1 | 可執行檔案或者shell命令 |
1 | 可執行檔案或者shell命令 |
2 | 系統呼叫(核心提供的函式,如open) |
3 | 庫函式呼叫(程式庫中的函式,如fopen,注意這是libc的api) |
4 | 特殊檔案(通常是/dev/下的,用到時候較少,如null) |
5 | 檔案格式或者約定的東西(如proc,就是對/proc下的海量引數) |
7 | 其他雜項(包括巨集包和約定,如ascii,是的,不用在網上找ascii碼) |
其實不用記住這些編號的意義,需要使用的時候再看,比如想知道這個api是不是有一個對應的系統呼叫。
- 還是來看一個比較特別的
$ man proc # process information pseudo-file system,描述程式資訊的偽檔案系統
這就是linux系統跑起來後,/proc目錄下的各個檔案目錄的資訊,說一些常用到的
-
/proc/[pid]/environ,某個程式[pid]的環境變數資訊,獲取後可以通過strings輸出
$ cat /proc/1/environ | strings (2)
-
/proc/[pid]/fd,這是個子目錄,包含了該程式開啟的每個檔案的條目,條目由檔案描述符命名
-
/proc/[pid]/maps,記憶體對映關係,對分析程式的記憶體使用很有幫助
-
/proc/[pid]/stat,程式狀態資訊,內容很多,可以看到程式的所有執行緒資訊,包括優先順序,執行緒名等
-
/proc/filesystems,檢視核心支援的檔案系統列表 (6)/proc/interrupts,記錄了CPU的中斷數
-
/proc/meminfo,/proc/cpuinfo,系統的記憶體資訊,CPU資訊
還有很多有用的東西,都可以在需要的時候,通過man查詢,其實大多數資訊,看名稱就知道是否是自己要的東西
相關文章
- 有問題問男人,linux幫助文件-----man命令講解Linux
- Linux中man命令有什麼用?Linux
- linux sed 命令引起的^M問題解決Linux
- Linux 命令 man 全知全會Linux
- 每天學一個 Linux 命令(15):manLinux
- Python 命令跳轉微軟應用商店問題解決辦法Python微軟
- Mysql使用kill命令解決死鎖問題MySql
- 解決godoc命令不存在的問題Go
- 解決Kali Linux 2020.1亂碼問題Linux
- LINUX 解決時間同步問題(NTP)Linux
- 在 Linux 命令列中使用 nudoku 解決謎題Linux命令列
- Mac/Linux 安裝中文版 man 幫助命令MacLinux
- 用STAR模式來解決問題模式
- 解決mysqld_multi stop命令無效問題MySql
- mysql使用source 命令亂碼問題解決方法MySql
- linux mint 19解決 輸入法問題Linux
- 在Linux中,ansible可以解決哪些問題?Linux
- 題解:CF704B Ant Man
- CF704E Iron Man 題解
- Windows解決斷後佔用問題Windows
- SSM解決中文存入資料庫亂碼問題(記錄自己的問題)SSM資料庫
- Hadoop org.apache.hadoop.util.DiskChecker$DiskErrorException問題等價解決linux磁碟不足解決問題排查HadoopApacheErrorExceptionLinux
- Xshell連線Linux慢問題解決辦法Linux
- 新手linux系統常見問題解決方案Linux
- linux配置靜態路由解決網路問題Linux路由
- Angular應用解決跨域訪問的問題Angular跨域
- JAVA程式設計題-用java解決兔子問題Java程式設計
- 用SQL解決有向圖問題(轉)SQL
- 用分散式鎖解決併發問題分散式
- WPS 2019解決不能啟用巨集問題
- 元件複用傳值(待解決問題)元件
- ubuntu下解決埠被佔用問題Ubuntu
- RHEL7對於ifconfig命令問題的解決方法
- linux mint 19 pyenv 安裝 python 3.7.0 問題解決LinuxPython
- Linux解決MySQL-python安裝失敗問題LinuxMySqlPython
- Linux安裝Python3.11以及解決openssl問題LinuxPython
- linux 系統打造man中文幫助手冊圖解Linux圖解
- Linux作業系統base64命令操作案例,並解決-bash: !: event not found的問題Linux作業系統