在vi和vim中若是打開一個很大的文件,不容易找到對應的內容,可使用自帶的搜索關鍵字進行搜索定位:php
在vi和vim界面中輸入:"/"(反斜槓),以後會出現一個輸入框讓你輸入,當你輸入的關鍵字在文件中存在就會以高亮的形式顯示出來,以後按 回車就肯定定位到當前高亮位置,若是不是你要找的,則能夠按:"n",意即尋找下一個輸入關鍵字的內容。java
2. vim恢復以及亂碼問題node
(1) 在vi和vim中若是不當心誤刪除了一些東西,想要恢復怎麼辦?python
首先要退出編輯狀態,即按Esc鍵,以後再按 u 撤銷以前的修改的內容。linux
(2) 在用vi或vim打開一個文件的時候,若是有些地方出現一些特殊符號或是亂碼,能夠經過如下命令嘗試:redis
vim -b mytest.php(其中-b通常是用來查看對應的二進制文件的)vim
3. 管道命令,即豎槓-->'|'windows
上面的意思是:將查詢出來的內容交給管道後面的命令裝飾以後再展現出來tomcat
例如:cat install.log | more (more的意思是將一屏放不下的內容以分頁的形式顯示)bash
ls -l /etc | more
若是想看上一頁的內容,能夠經過:Shift + PageUp 來查看
管道配合grep(過濾)能夠達到很好用的組合例如:
cat -n hello.txt | grep "hello" (查看hello.txt文件內容,並過濾出來帶有hello的內容) , -n 表示顯示出來第幾行的內容
4. find 搜尋文件或目錄
find /home -name hello* (查找home目錄下的文件名或目錄爲hello的)
find / -name h?m* (在跟目錄下查找h開頭第二個字符是任意的,第三個是m,後面的是任意的字符)
find / -size +1000000k (表示在根目錄下查詢文件大於1000000K的文件)
查找目錄下的全部文件中是否含有某個字符串,而且只打印出文件名
find .|xargs grep -ri "IBM" -l
5 字符串替換命令
:s/well/good/ 替換當前行第一個 well 爲 good
:s/well/good/g 替換當前行全部 well 爲 good
:n,$s/well/good/ 替換第 n 行開始到最後一行中每一行的第一個 well 爲 good
:n,$s/well/good/g 替換第 n 行開始到最後一行中每一行全部 well 爲 good
n 爲數字,若 n 爲 .,表示從當前行開始到最後一行
:%s/well/good/ (等同於 :g/well/s//good/) 替換每一行的第一個 well 爲 good
:%s/well/good/g (等同於 :g/well/s//good/g) 替換每一行中全部 well 爲 good
特殊符號轉義:可使用 # 做爲分隔符,此時中間出現的 / 不會做爲分隔符
:s#well/#good/# 替換當前行第一個 well/ 爲 good/
:%s#/usr/bin#/bin#g 能夠把文件中全部路徑/usr/bin換成/bin
6. 重定向命令
ls -l /etc/ 但願
ls -l /etc > /home/myback.txt (覆蓋重定向) 把顯示的結果覆蓋到/home/myback.txt中去
ls -l /etc >> /home/myback.txt (追加劇定向) 把顯示的結果追加到/home/myback.txt中去
7. 刪除多行
刪除多行步驟以下:
1. 首先要顯示對應的行數這樣方能知道從第幾行到第幾行刪除
: set nu
2. 按Esc鍵退出,在命令行中輸入: 190,6233d (即[190 , 6233]都刪除掉)
若是想要狀況整個文件內容,在直接運行如下命令:
清空文件內容:> log.txt
8. 行位定位
直接定位到最後一行:
按Esc鍵退出,在命令行中輸入: G
直接定位到第一行:
按Esc鍵退出,在命令行中輸入: 1 G
直接定位到某一行:(第17行)
按Esc鍵退出,在命令行中輸入:17 G
9. 複製一行或多行
yy 複製當前行
p 粘貼
<2. 複製多行
7yy 從當前行開始複製7行
p 粘貼
10. Linux中查看python的版本
python -V
或者
python --version
11. grep 的用法
<1. 顯示匹配的後n行 (after)
grep -A n
<2. 顯示匹配的前n行 (before)
grep -B n
<3. 顯示匹配的先後n行 (context)
grep -C n
<4. 忽略大小寫
grep -i str
12. ll或ls顯示說明
ll -ht (h會按照標準格式自動轉換大小即:456M,1.2G等,t 表示顯示內容按照時間倒序排列)
應用案例:
清空8月份的日誌文件:
rm -rf `ll -ht | awk '/8月/ {print 6,6,NF}' | awk '{print $NF}'`
說明:awk '/pattern/action'--> awk '/8月/{print 6,6,NF}',只顯示第六行與最後一行的內容且只保留8月的列表內容顯示。
1. 藍色 --> 目錄
2. 綠色 --> 可執行文件
3. 紅色 --> 壓縮文件
4. 淺藍色 --> 連接文件
5. 灰色 --> 其餘文件
13. 查看某文件被哪一個進程所佔用
lsof 文件名

14. 建立用戶以及查看當前用戶
useradd redis
passwd redis
若是是Ubuntu系統則須要使用以下命令:
userdel -r openstack
查看當前系統存在的用戶組和用戶
/etc/group文件包含全部組
/etc/shadow和/etc/passwd系統存在的全部用戶名
15. 經常使用查看文件大小與Linux系統命令
查看內存使用狀況: free -m (m爲MB,g爲GB)
查看對應磁盤使用狀況: df -lh
查看對應CPU使用狀況: cat /proc/cpuinfo
會有32個大體相同的內容展現(下標是從0開始的),這就說明該服務器爲8核操做系統
cat /proc/cpuinfo | grep "model name" | head -1 (只顯示一行對應的CPU型號以及其餘信息)
cat /proc/cpuinfo | grep "model name" (系統有幾個核就會顯示幾行)
cat /proc/cpuinfo | grep "model name" | wc -l (統計出一共有多少核)
查看對應服務器版本當前操做系統發行版信息: cat /etc/issue 或 cat /etc/redhat-release

查看更爲底層的版本信息: cat /proc/version (例如:CentOS實際最根源爲RetHat,此命令將會顯示所採用RetHat的版本)

若是想查看某個文件夾當前所佔用的空間使用:
du -h node (cd /data/solr-4.8.0/)

若是想查看當前目錄下的全部文件各個大小
du -sh * (cd /)

16. 查看內存狀況
<1. jstat -gc pid 能夠看到對應各個內存大小、使用情況以及GC處理狀況
<2. jmap -heap [pid] 查看內存分佈
<3. jstat -gcutil [pid] 1000 每隔1s輸出java進程的gc狀況
17. 修改文件夾及其裏面的內容的權限
chown -R solr:solr /home/solr/lib
意思是將 /home/solr/lib 文件夾及其裏面內容的用戶所屬權限修改成solr用戶所屬權限
18. 查看某個端口連接狀態的鏈接數
-a (all)顯示全部選項,默認不顯示LISTEN相關
-t (tcp)僅顯示tcp相關選項
-u (udp)僅顯示udp相關選項
-n 拒絕顯示別名,能顯示數字的所有轉化成數字。
-l 僅列出有在 Listen (監聽) 的服務狀態
-p 顯示創建相關連接的程序名
-r 顯示路由信息,路由表
-e 顯示擴展信息,例如uid等
-s 按各個協議進行統計
-c 每隔一個固定時間,執行該netstat命令。
提示:LISTEN和LISTENING的狀態只有用-a或者-l才能看到
grep -i (i表示忽略大小寫)
awk '{print $4}' (表示只打印第4列)
grep -i est (est表示:ESTABLISHED,即只顯示ESTABLISHED即鏈接狀態的端口)
grep命令最後的那個顯示出來的結果以它進行標紅,即最後一個grep爲:grep -i 6379, 那麼打印出來的結果其中的6379標紅,結果以下如所示:

ntpdate pool.ntp.org
將這個命令啓用爲定時腳本執行,具體以下所示:
1 */2 * * * ntpdate pool.ntp.org
20. 不容許ssh登陸如何配置
修改vim /etc/sysconfig/sshd_config文件,增長一行:AllowUsers solr,具體以下所示:
使其生效運行以下命令:
service sshd reload
經常使用系統級配置總結:
1. 限制登陸:/etc/ssh/sshd_config 修改後需重啓:service sshd restart
2. 用戶配置:/etc/passwd
3. sudo權限:/etc/sudoers
21. 經常使用JDK系統環境變量配置
1
2
3
4
|
JAVA_HOME=
/usr/java/jdk1
.7.0_55
CLASSPATH=.:$JAVA_HOME
/lib
.tools.jar
PATH=$JAVA_HOME
/bin
:$PATH
export
JAVA_HOME CLASSPATH PATH
|
22. 查看Redis/Tomcat的版本
redis-cli info | grep 'redis_version'
tomcat版本須要進入到安裝目錄下的 bin/ 文件夾:
./version.sh 或者 sh version.sh
23. 怎麼看linux的防火牆是否阻止80端口
1
|
iptables -vnL |
grep
":80 "
|
返回有內容說明開通,沒返回內容,則說明阻止
24. 查看文件編碼以及修改文件編碼
1. 直接查看文件編碼
1
|
file
-i 文件
|
2. 在 vim 中修改此文件編碼格式
1
|
:
set
fileencoding=utf-8
|
3. 修改 vim 的統一編碼格式
1
2
3
4
|
vim ~/.vimrc
# 增長一句話
set
encoding=utf-8 fileencoding=utf-8
|
25. 建立軟鏈接
linux下的軟連接相似於windows下的快捷方式。經常使用於實際路徑很深,每次進入的時候須要花費必定時間,此時咱們在根目錄建立一個軟連接指向該目錄,那麼咱們進入該軟鏈接其實就是進入了軟連接指向的實際目錄。
ln -s /data/elastic/plugin/ik/custom myES
以上命令中的 /data/elastic/plugin/ik/custom 就是源文件,myES 是連接文件名, 其做用是當進入 myES 目錄,其實是連接進入了 /data/elastic/plugin/ik/custom 目錄
刪除軟連接:
rm -rf myES
注意不是 rm -rf myES/ (此命令會將原始目錄也一併刪除,會形成很嚴重的後果,切記!!!)
26. 定位 IO 拼接的經常使用方法
從網上找到了一篇頗有用的使用方法,我經過這種方式也在實際工做中找到了有關 IO 的問題,能夠參考以下連接:
定位IO瓶頸的一些方法(iotop工具具體查看IO負載主要是落在哪一個進程上)
27. 經過 ps 命令批量殺死進程
ps -aux | grep flume | awk '{print $2}' | xargs kill