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