• Linux常用命令小结


    1. 磁盘使用情况

    du -h  查看当前用户每个文件的大小,格式化显示

    du -h --max-depth=1  当前各个目录下的总大小

    du -sh 查看总的大小

    df  -h  磁盘使用情况

    iostat -xm 3 磁盘的读写情况

    2. VI常用命令

    esc切换文件读写状态,I键插入,O键追加

    :q! 强制退出

    :wq 保存后退出

    :x  保存后退出

    G 到文件尾部

    1G到文件首 或者 gg

    0行首

    $行尾

    ctrl + f 向文件尾翻一页

    ctrl + b向文件首翻一页

    /patten 从光标开始处,向文件尾搜索patten

    ?patten 从光标处开始,向文件末搜索patten

    : s /p1 /p2 /g 将当前行中所有p1全部替换为P2

    :n1,n2  s /p1 /p2 /g 将第n1到n2行中所有的p1全部替换为p2

    :g /p1 /s // p2 /g 将文件中的所有p1替换为p2

    dd 删除一行

    x 删除一个字符

    3. 查看机器负载情况

     top    按c键可以查看进程的描述信息

    4. 查看机器信息

    uname  查看系统情况

    ifconfig 查看网络IP

    查看外部IP: curl ifconfig.me

    5. 基本命令

    pwd 当前路径地址

    whereis 命令  命令所在的路径

    cd 目录切换 如cd .. 切换到上层目录

    rm  删除文件或目录  -i 交互式参数,需用户确认

                                      –r 目录名:这个操作可以连同这个目录下面的子目录都删除

                                      -f 文件/目录:这个操作可以进行强制删除

    rmdir 删除目录   - p 递归删除目录

    cut命令

    例如 49-20130106-151719-1357293025547

    获取前面的49字符串,可以使用 cut -d "-" -f 1

    cp 文件目录复制

     cp -r dir1 dir2 复制整个目录: 若目录dir2存在,则将目录dir1,及其所有文档和子目录,复制到目录dir2下,新目录名称

    为dir1. 若目录dir2不存在,则将dir1,及其所有文档和子目录,复制为目录dir2.

    mkdir  mydir 创建目录mydir

    mv  conf  conf_bak   使用mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中

    chmod u+x test.sh 改变文件的访问权限,这里是给脚本增加执行权限

    echo test >> $(date -d "today" +"%Y%m%d_%H%M%S").txt

    sed -i "s/ServiceIP=/#ServiceIP=/g" `grep "ServiceIP=" -rl  resource/config.ini`

    -z “str” :判断字符串为空

    -n "str":判断字符串不为空

    ln -s  /mnt/disk/0/keyword_data/ /home/recsys/wlb/keywordinterest/data

    6. 查找命令

    grep  "需要查找的文字"    查找的文件   如:grep "hello,world"  info.log

    find pathname -options [-print -exec -ok ...]

    7.打包

     tar -cvf     etc.tar /etc                仅打包,不压缩!
     tar -zcvf    etc.tar.gz /etc          打包后,以 gzip 压缩

    tar -xvf tec.tar.gz                       解包并解压缩

    8. scp and ssh

    ssh -A -p56789 usrname@120.200.122.123

    scp -P56789  ./test.tar.gz   usrname@120.200.122.123:/home/myfolder/

    SCP -r 若 source 中含有目录名,则将目录下之档案亦皆依序拷贝至目的地。

             -p Preserves modification times, access times, and modes from the original file.

    9 maven使用

    mvn clean 清理target

    mvn compile  编译项目

    mvn package -Dmaven.test.skip=true  或者mvn -Dtest.skip package 打包跳过单元测试

    mvn install  -Dmaven.test.skip=true  安装跳过单元测试

    mvn deploy 部署上传到服务器上去

    mvn dependency:copy-dependencies  拷贝依赖文件到文件夹

    mvn eclipse:eclipse //生成eclipse工程

    10进程相关

    ps -f -udir | grep "cron" 搜索dir用户下所有包含cron字符的所有进程

    killall -9  "rsync"  杀死所有包含rsync字符的所有进程

    kill -9 1099  杀死进程编号为1099的进程

    ps -ef|grep sv_monitor|grep -v grep|cut -c 9-15|xargs kill -9 杀死包含sv_monitor的进程

    11 ls 

    ls -t1 info.log.* | head -n1 找出最后修改的哪一个log文件

    ls -l | wc -l 统计文件个数

    -t sort by last modification time

    -1 list one file per line

    head: -n N print the first N lines

    12. md5sum

       man md5sum | col -b > md5sum.txt

       md5sum md5sum.txt

       md5sum md5sum.txt > hashfile

       md5sum –c  hashfile     # 验证hashfile中包含的md5值和对应的文件,在执行该命令时是否仍然匹配, 如果此时test.c被修改了,该命令将返回不匹配的警告.

    13. 查看linux版本

    lsb_release -a 

    uname -a

    14. lsof 列出当前系统打开文件的工具

    每行显示一个打开的文件,若不指定条件默认将显示所有进程打开的所有文件。lsof输出各列信息的意义如下:
    COMMAND:进程的名称
    PID:进程标识符
    USER:进程所有者
    FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
    TYPE:文件类型,如DIR、REG等
    DEVICE:指定磁盘的名称
    SIZE:文件的大小
    NODE:索引节点(文件在磁盘上的标识)
    NAME:打开文件的确切名称

    lsof  filename 显示打开指定文件的所有进程
    lsof -a 表示两个参数都必须满足时才显示结果
    lsof -c string   显示COMMAND列中包含指定字符的进程所有打开的文件
    lsof -u username  显示所属user进程打开的文件
    lsof -g gid 显示归属gid的进程情况
    lsof +d /DIR/ 显示目录下被进程打开的文件
    lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长
    lsof -d FD 显示指定文件描述符的进程
    lsof -n 不将IP转换为hostname,缺省是不加上-n参数
    lsof -i 用以显示符合条件的进程情况

    15 crontab

    基本格式 :
    *  *  *  *  *  command
    分  时  日  月  周      命令

    第1列表示分钟1~59 每分钟用*或者 */1表示
    第2列表示小时1~23(0表示0点)
    第3列表示日期1~31
    第4列表示月份1~12
    第5列标识号星期0~6(0表示星期天)
    第6列要运行的命令

    */5 * * * * /home/dir/test/bin/test.sh > /dev/null   每五分钟执行一次脚本
    45 23 * * * /home/dir/test/bin/test.sh > /dev/null 每天的23点45分执行一次脚本

    16. 查看并发请求数及其TCP连接状态

    ip a : 可以查看本机上绑定的所有IP

    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
    状态:描述
      CLOSED:无连接是活动的或正在进行
      LISTEN:服务器在等待进入呼叫
      SYN_RECV:一个连接请求已经到达,等待确认
      SYN_SENT:应用已经开始,打开一个连接
      ESTABLISHED:正常数据传输状态
      FIN_WAIT1:应用说它已经完成
      FIN_WAIT2:另一边已同意释放
      CLOSE_WAIT:等待所有分组死掉
      CLOSING:两边同时尝试关闭
      TIME_WAIT:另一边已初始化一个释放
      LAST_ACK:等待所有分组死掉
    netstat -an 里面的 Recv-Q 和 Send-Q
    如果接收队列Recv-Q一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击。
    如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。

    Recv-Q:表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,recv()

    Send-Q:对方没有收到的数据或者说没有Ack的,还是本地缓冲区.

    $0 :当前处理行记录 
    $1: 第一个分段 
    NF:每一行拥有的字段总数 
    NR:当前awk处理的第几行数据 
    FS:目前的分割字符,默认是空格。

    ifconfig | grep "inet addr"|sed 's/^.*inet addr://g'  

     

    16 stat
    stat info.log.1 | grep Modify| awk '{print $2}' //获取文件最后的修改日期
    stat info.log.1 | grep Modify| awk '{print $3}' | cut -d"." -f1  //获取文件的最后修改时间
     
    17 获取当前目录路径
    #! /bin/sh
    bin=`dirname "$0"`
    bin=`cd "$bin"; pwd`
     
    18 shell 对第二列排序,并且截取数量大于100的所有数据
    如: hello 102
           world 200
           how  40
    sort -n -k2 test.txt > sort.txt
    awk -F"\t" '{ if($2 > 100) print $1"\t" $2}' sort.txt > sort100.txt
    对文件的第四列求和
    awk -F " " '{m+=$4}END{print m}' 2013-08-29.txt
     
    19 文件切割
    split -b 100m $openFile
     
    20. hadoop查看磁盘使用情况
     ./bin/hadoop fs -du -h -s /user/recsys/* 
     
    21. 如何连两个VPN
    C:\Program Files\TAP-Windows\bin

    addtap.bat运行下

  • 相关阅读:
    Scala (三)集合
    为什么成为一名程序员?
    Hadoop——Yarn
    Redis(一)NoSQL简介、Redis安装 、数据类型、配置文件、发布订阅
    Java并发编程——共享模型之内存( JMM、原子性、可见性、有序性、volatile原理)
    KafkaAPI实战案例
    分布式技术原理笔记(二)分布式体系结构
    Flume 进阶
    Kafka框架基础
    Scala (二)面向对象
  • 原文地址:https://www.cnblogs.com/cstar/p/2363295.html
Copyright © 2020-2023  润新知