LINUX常用命令

for循環

applist=(app1 app2 app3);for app in ${applist[@]};do echo $app;done;

獲取IP地址

ifconfig |grep -Po '(?<=addr:).*(?=Bc)'

ifconfig|awk?-F"[:?]+"?'$4~/[0-9].+[^0-9]+/{print?$4}/lo/{exit}'

ifconfig|sed?-nr?'s/^[[:space:]]+inet?addr:(.*)?Bcast.*/\1/p'

ifconfig | grep -o '\([1-9]\{1,3\}\.\)\{3\}[0-4]\{3,\}'

格式化輸出文檔

cat?xxxx?|?awk?'{print?"n"NR"="$1,"m"NR"="$2}'|column?-t 將格式化輸出文檔

輸出某段時間內的日志

sed -n '/2015-07-27 11:00/,/2015-07-27 11:20/p' xxx_server_log > dsadsads.log

sed?-n?'/06\/Dec\/2016:20:30:00/,/06\/Dec\/2016:21:00:00/p'?json_access.log.2016-12-06?>?dsadsads.log #加了轉義

echo不換行輸出

echo -n "xx";

awk或者echo中輸出換行符或者Tab鍵

echo -e "123\t345" > /tmp/123.txt;cat /tmp/123.txt | awk '{ print $1 "\t,\n" $2 }'

移動非空目錄

mv -b xx /tmp/xx.`date +%s`

強制覆蓋

mv -f xx /tmp/xx

替換文件

將/tmp/xx文件里的android全替換成ios;

app=ios; sed -i "s/android/$app/g" /tmp/xx

獲取系統當前時間

echo `date +%Y%m%d%H%M%S`#注意大小寫,獲取當前時間20170425100834

echo `date +%s`#注意大小寫,獲取當前時間秒值

echo `date?+%s_%N`#當前系統秒值及納秒值

vim 刪除當前行到最后一行

進入命令模式

:,$d#刪除當前行到最后一行

:9,.d#刪除第9行到當前行

:set nu!#顯示行數

shell中的

$*,$@和$#

腳本名稱叫test.sh,入參三個: 1 2 3

$*為"1 2 3" 一起被引號包含

$@為"1" "2" "3"$@表示入參組成的數組,比如說在腳本中定義了paraArr=$@,入參是1 2 3,那么para=$@,實際上表示的是paraArr=(1 2 3),當然可以給每個參數加雙引號,但是多此一舉.

$#為3表示參數數量

查看用戶所在的組

有用戶wtf,要查看用戶所在的組,比如使用命令chown : ?時

id wtf或者groups wtf都可以了.

grep -q

grep -q主要用來判斷參數或者輸入中是否包含某些字符,進而根據判斷結果執行某些邏輯,如下示

if echo "x" | grep -q "qwer" ;then echo yes;else echo no; fi

no

if echo "xqwer" | grep -q "qwer" ;then echo yes;else echo no; fi

yes

grep過濾文本,輸入文本上幾行,下幾行,或者上下幾行

grep -C 10 "wtf" xxx.txt; #輸出wtf字符所在行的上下10行

grep -B 10?"wtf" xxx.txt; #輸出wtf字符所在行的上10行,或者叫前10行,before

grep -A 10?"wtf" xxx.txt; #輸出wtf字符所在行的下10行,或者叫后10行,after

問,怎么同時輸入前10行,后5行 :-)

查找相關文件并執行刪除操作

參考了這個鏈接:http://blog.csdn.net/done58/article/details/50151399

sudo find ?/tmp/xx/ -name wtf -type f -exec mv -bf {} /tmp/wtf`date +%Y%m%d%H%M%S` \;這個命令從目錄/tmp/xx/及其子目錄中查找名為wtf的文件,-type f 限制查找出的目標為文件而不是文件夾,,然后將其移動到/tmp目錄下,注意這個命令一定要帶最后的 \;

find . -mtime +90 -exec mv {} /var/tmp/date_90 \;查看大于90天的文件并移動;

find . ?-type f ?| ?xargs ?-I ?'{}' ?mv ?{} ?/opt/shell這個命令把當前目錄下的所有文件夾都移動到/opt/shell里,沒有用-exec但是用了管道,也實現了同樣的效果

find /tmp -name ?wtf ?-type d?| xargs rm -rf;查找名為wtf的文件夾,然后將其刪除;

find / -size +50M -type f| xargs du -h;查找大于50M的文件并查看其具體大小

find /tmp -mtime +1 -type f | grep -v autorun.sh | xargs sudo rm; 查找/tmp目錄內1天前的

ps -ef |grep storm | grep -v grep | awk '{print $2}' | xargs sudo kill; 殺掉一批進程

文件(不包括文件夾) 且排除autorun.sh,然后將其刪除

+表示大于 ? ?-表示小于

如果查詢時遇到異常,來源于:http://blog.csdn.net/yabingshi_tech/article/details/46604615

find: paths must precede expression

進行查找資料,多文件的查找的時候需要增加單引號

rm: missing operand 如果遇到這個問題,原因之一是因為沒有匹配find條件的結果.

find同時匹配多個文件,find ./lib/ -name 'log4j*' -o -name 'logback*'

項目里的log4j日志級別配置的是info但是部署后仍然打印debug日志,百度了一下,可能是因為項目里沒有排除logback包,所以用命令在lib里同時查找logback和log4j的jar包

忽略命令的輸出

>/dev/null? 2>&1

ls|sed"s:^:`pwd`/:"

#?就是在每行記錄的開頭加上當前路徑

ps:

#在所有行之前/后加入某個字符串

sed's/^/string/g'file

sed's/$/string/g'file

find$PWD?-maxdepth?1??|xargsls-ld

#?列出當前目錄下的所有文件(包括隱藏文件)的絕對路徑,?對目錄不做遞歸

find$PWD?|xargsls-ld

#?遞歸列出當前目錄下的所有文件(包括隱藏文件)的絕對路徑

windows powershell 列出目錄下的所有文件及路徑

dir /s /b /a

在CMD中可用“dir /s /b /a”來獲得當前目錄及子目錄所有文件,且顯示這些文件的路徑

C:\Users\much\AppData\Local\ACD Systems\Catalogs

C:\Users\much\AppData\Local\ACD Systems\data

C:\Users\much\AppData\Local\ACD Systems\GeoTag

C:\Users\much\AppData\Local\ACD Systems\ICMCache

C:\Users\much\AppData\Local\ACD Systems\Logs

jstat Could not attach to

這個可能是權限的問題.比如該進程是由root用戶啟動的,而你用普通用戶執行

jstat -gcutil <時間間隔>

即會報jstat Could not attach to ,換到root用戶下執行就可以了.

windows 查看端口命令參考自:http://wenku.baidu.com/view/681f0332a32d7375a4178046.html

netstat?-aon|findstr "80"由此可看到80的端口號

再用命令查看這個端口號對應的進程tasklist|findstr "2044",這個就是查看端口號對應的進程了

linux crontab相關

每分鐘執行一次 * * * * *

每五分鐘執行 ? */5 * * * *

每小時執行 ? ? 0 * * * *

每天執行 ? ? ? 0 0 * * *

每周執行 ? ? ? 0 0 * * 0

每月執行 ? ? ? 0 0 1 * *

每年執行 ? ? ? 0 0 1 1 *

安裝:?sudo yum -y install crontabs

如果運行時遇到錯誤提示/tmp/crontab.ZIgBhN: No such file or directory,那可能是/tmp目錄被刪除或者沒有權限,給/tmp 777的權限即可. sudo chmod 777 /tmp

如果遇到Reloading crond: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? [FAILED]的錯誤,看看是不是權限不夠,用sudo試試或者直接到root用戶下執行命令

/etc/init.d/crond reload

/etc/init.d/crond restart/start/stop

列出文件并按時間順序排列

出自:http://www.cnblogs.com/wangkongming/p/3994962.html

按照時間升序ls -lrt

按照時間降序(最新修改的排在前面)ls -lt

linux安裝zookeeper

配置好java環境變量

下載zookeeper-3.4.8.tar.gz并解壓; cd 到conf目錄,cp zoo_sample.cfg zoo.cfg;修改zoo.cfg,指定dataDir,可以設置autopurge.snapRetainCount=3和autopurge.purgeInterval=1,取消注釋.

啟動應用:?sudo sh zkServer.sh -start;

ps -ef | grep java;

export?JAVA_HOME=/home/java

export?PATH=$JAVA_HOME/bin:$PATH

export?CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

windows類似grep的命令conda list | findstr "pandas"; 從命令結果中過濾出包含pandas的紀錄

windows殺進程的命令

[c:\~]$?netstat?-aon|findstr1099

TCP????0.0.0.0:1099???????????0.0.0.0:0??????????????LISTENING???????10012

TCP????[::]:1099??????????????[::]:0?????????????????LISTENING???????10012

[c:\~]$?taskkill?/pid?10012

錯誤:?無法終止?PID?為?10012?的進程。

原因:?只能強行終止這個進程(帶?/F?選項)。

[c:\~]$?taskkill?/F?/pid?10012

成功:?已終止?PID?為?10012?的進程。

[c:\~]$?netstat?-aon|findstr1099

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容