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