zoukankan      html  css  js  c++  java
  • Linux 常用命令笔记

    Linux 常用命令笔记

    1. locate

      locate:用来定位文件的位置,如:locate a.txt 但是这个命令有延迟,也就是新建的文件不一定能搜索到,如果非要找到新建的文件可以使用 updatedb 命令来强制更新locate依赖的数据库。

    2. 查询文本文件行数

      wc -l filename

    3. 列举一级子目录的大小

      du -h --max-depth=1

    3. top 使用技巧

      在top环境中,大写字母E可以用来改变显示界面中的单位。

    3.远程Linux服务器

      ssh username@192.168.1.1

      或

      ssh username@hostnme

      使用主机名需要在本地进行主机名与IP地址映射:

      在/etc/hosts文件中添加一行:192.168.1.1 hostname.domain

    5.远程传送文件

      传送文件:

      scp /home/Download/filename username@host_ip:/home/Download/

      在后面增加文件名可以用来重命名

      传送目录:

      scp -r /home/Download/foldername uesername@host_ip:/home/Download/

      远程传送都需要对方用户的密码。

    6.添加用户和组

      添加组:groupadd name

      删除组:groupdel name

      注意:一般在为daemon程序添加用户时经常把主目录设置在/var/lib/name/

      添加用户:useradd -d /var/lib/name -m mongo -g mongo -s /sbin/nologin

          -d:指定主目录

          -m:指定自动创建不存在的目录

          -g:指定用户组

               -s:非登录用户
          usermod -d /home/new mongo // 更改用户目录

          useradd mongo -s /sbin/nologin //不指定home目录,自动建立home目录

    7.修改文件所属用户名和组

      chown [-R] username file/directory
      chown [-R] username:groupname file/directory
        -R : 进行递归( recursive )的持续更改,即连同子目录下的所有文件、目录都更新成为这个用户组
    8.查看当前用户与组
      whoami //查看当前用户名
      groups username //查看当前用户所属组
      groups //查看当前用户所在组的成员
    9. 在目录中查找文件中的字符串
      查找目录下的所有文件中是否含有某个字符串 
      find .|xargs grep -ri "IBM" 
      查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 
      find .|xargs grep -ri "IBM" -l
    10. 监控网络流量
      (1)yum install iptraf
             iptraf-ng 提供了对:链接与端 的流量/包的监控,同时 iptraf-ng 使用了命令行界面形式提供,不用记忆命令了,极好。
        (2)yum install nethogs
         nethogs 提供了针对进程的网络字节流量监控机制,与 iptraf 可以功能互补。
      (3)yum install sysstat
          sysstat 工具提供了丰富的系统检测功能,sar 可以检测网络流量。
             示例:sar -n DEV 5 2 每相隔5秒取一次值,一共2次,然后退出
          rxpck/s:每秒钟接收的数据包
          txpck/s:每秒钟发送的数据包
          rxbyt/s:每秒钟接收的字节数
          txbyt/s:每秒钟发送的字节数
          rxcmp/s:每秒钟接收的压缩数据包
          txcmp/s:每秒钟发送的压缩数据包
          rxmcst/s:每秒钟接收的多播数据包rxpck/s:每秒钟接收的数据包
          txpck/s:每秒钟发送的数据包
          rxbyt/s:每秒钟接收的字节数
          txbyt/s:每秒钟发送的字节数
          rxcmp/s:每秒钟接收的压缩数据包
          txcmp/s:每秒钟发送的压缩数据包
          rxmcst/s:每秒钟接收的多播数据包
    11. CentOS 7 防火墙
      systemctl enable firewalld.service // 开启防火墙开机启动
      systemctl disable firewalld.service // 关闭防火墙开启启动
      systemctl start firewalld.service // 启动防火墙
      systemctl stop firewalld.service // 关闭防火墙
    12. 防火墙开放端口
      firewall-cmd --zone=public --add-port=123/tcp --permanent // 永久开放 tcp 端口:123,成功返回:success
      firewall-cmd --reload // 重新加载,成功返回:yes
      firewall-cmd --zone=public --query-port=39879/tcp // 查询开放的端口时候成功,成功返回:yes
    13. CentOS 7 包管理
      查询包:yum list | grep jdk-devel
      安装包:yum install java-1.8.0.-openjdk-devel.x86_64
    14. Linux 文件重定向
      a.out 1>log.txt 2>&1
      将a.out程序的标准输出重定向的log.txt文件,并同时将标准错误重定向到标准输出中。
    15. 安装字体文件
      cp yahei consolas hybrid.ttf /usr/share/fonts/
           cd /usr/share/fonts/
      fc-cache -fv
      fc-list | grep yahei
     
     
    16. cut
      按照字符/字节对文件进行分割。
        -b 按照字节分割
        -c 按照字符分割
        -d 自定义分割副
        -f 配合-d一起使用
      范围控制:
        n:显示第n项
        n, m:显示第n,m项
        n-m:显示从第n到第m项[n, m]
        n-:显示从第n到行未
        -m:显示从第1到第n
        -:显示正行
      
    echo 'test' | cut -c2
    e
    echo 'test' | cut -c2-3
    es
    echo 'x y z' | cut -d ' ' -f 3
    z
    cut -d ' ' -f 3 test.txt
    z

     17. egrep

      按照规则过滤文本文件

      -c 统计匹配行数

      -n 显示行号

      -v 过滤带有关键字行

      -A 2 额外显示匹配行的后2行

      -B 2 额外显示匹配行的前2行

      -C 2 额外显示匹配行的前后2行

      -o 只显示匹配关键字

    egrep -o 'role=[0-9]+' test.log | sort | uniq -c
    egrep -o 'token:S*' test.log | sort | uniq -c

    18. awk

      按照规则对文本进行列过滤

        -F 指定分割符
         $0 当前行
         $1, $2 当前行的第一列、第二列
        NF 当前记录的列数
        NR 当前记录的行数
        FNR 各个文件自己的行号
        RS 输入记录分隔符,默认换行符
        OFS 输出字段分割符,默认空格
        ORS 输出记录分割符,默认换行符
        FILENAME 当前文件名
    echo 'linux shell test' | awk '{print NR, $1}'
    1 linux
    
    ls -lh | awk '{sum+=$5} END {print sum}'
    1081.4
    
    ls -h | awk 'BEGIN{pv=0} {pv++} END{print "pv:"pv}'
    pv:11
    
    ls -lh | awk '{sum[$2]+=1} END{for(i in sum)print i "	" sum[i]}'
    288K    1
    1    5
    2    2
    3    2
    9    2

    awk -F: '{if ($1 == "root") {print $1;print $6}}' /etc/passwd
    root
    /root
    注意:; 可以起到换行的作用。

    注意:
    awk '{if($1>0) {print NR, $1} else {print NF, $2}}' data.txt

    awk '{if($>0)} print NR, $1; else print NF, $2}' data.txt
    这两种方式任选一种,}和;不可以同时出现,如下是错误的。
    // 错误:
    awk '{if($1>0) {print NR, $1}; else {print NF, $2}}' data.txt
    // awk分割字符串
    awk 'BEGIN{begno=123;split(begno,str,"");print str[1],str[2],str[3]}'
    // awk print tab
    awk -F: '{print $1," ",$7}' /etc/passwd
    // awk 数值和字符串比较问题
    // awk 自动将 $1,$2转化成了数值型,已经越界,
    echo "10025350462330387914 10025350462330388480" | awk '{if ($1"" == $2"") print $1 " = " $2; else print "NO"}'
    egrep 'GetLinkById' a.txt | awk 'BEGIN{start_time=""; stop_time=""; start=0; stop=0; num = 0; total_count=0; total_cost=0} {split($2"", str, "."); if ($7"" == "start") {start=str[2]; start_time=$2""} if ($7"" == "stop") {stop=str[2]; stop_time=$2""}; num++; if (num == 2){ num = 0; total_count++; total_cost+=stop-start; print $9 " " start_time " " stop_time " " start " " stop " " stop-start}} END{print total_count, total_cost}'
    awk 'BEGIN{count=0; total=0} {split($8, str, "="); count++; total+=str[2]; print $8, str[1], str[2]} END{printf("%d %f %f
    ", count, total, total/count)}' new_stop.log

    19. 查看处理器核数

        grep 'model name' /proc/cpuinfo

     20. 命令替换

      一个命令想用上一个命令的输出值作为入参,可以使用命令替换来实现。

      格式:命令1 '命令2'

      示例:cd 'pwd'

      其中命令2的输出作为命令1的参数,注意这里的符号是指反引号,被它括起来的内容作为命令执行,执行的结果作为命令1的参数。例如以下命令将 pwd 命令列出的目录作为 cd 命令的参数,结果仍停留在当前目录下。

    21. 时间转换

    date
    Tue Jun  4 14:06:25     2019
    
    # Unix标准时间化
    date +%s
    1559628467
    
    # 反解Unix标准时间
    date -d @1559628467
    Tue Jun  4 14:07:47     2019
    
    #高级操作(注意反引号)
    date -d @`date +%s`

     22. FTP

        ftp ip

       input name

      input password

      下载文件:get /work/data/d1.txt /home/app/d1.txt

      上传文件:put /home/app/d1.txt /work/data/d1.txt

    23. 解压缩

         tar.gz tar.bz2 tar gz bz2

      压缩:tar -czvf filename.tar.gz dir/file

           解压:tar -xzvf filename.tar.gz

           查看:tar -tzvf filename.tar.gz

      -c:压缩(同时支持文件和文件夹)

           -t :查看压缩包

           -x :解压,可以搭配-C(大写)在特定目录解开

         -j : 适用于bz2

         -z :适用于gz(gzip)

            -v :显示文件名

            -f:(路径+文件名+后缀名)

           -C:解压特定目录

           -p:保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件

           --exclude=FILE:在压缩的过程中,不要将那些文件打包


    24. 系统信息查询

    #查询Linux内核版本
    uname -a
    
    #查询Linux系统版本
    cat /etc/issue
    
    # 查询GLIBC版本
    strings /lib64/libc.so.6 |grep GLIBC
  • 相关阅读:
    log4j 日志分级处理
    http接口调用,传递json格式带双引号问题
    测试输出方法执行时间
    关于 propertychange 兼容性问题
    表结构的修改
    固定table表头
    tomcat 的log4j配置问题
    ie 导出不行,不兼容问题,或只出现后缀文件无法识别
    Spring3.x错误----java.lang.ClassNotFoundException:org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException
    Spring3.x错误----java.lang.ClassNotFoundException:org.aopalliance.inter.MethodInterceptor
  • 原文地址:https://www.cnblogs.com/wanghaiyang1930/p/5146517.html
Copyright © 2011-2022 走看看