美文网首页
LINUX常用命令

LINUX常用命令

作者: 大飞_45c4 | 来源:发表于2017-11-28 12:10 被阅读0次

    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

    相关文章

      网友评论

          本文标题:LINUX常用命令

          本文链接:https://www.haomeiwen.com/subject/javsbxtx.html