zoukankan      html  css  js  c++  java
  • Linux系统中常用的命令汇总

      日常开发,上线的服务器系统一般都是Linux系统,所以,熟练的掌握常用的命令操作就尤其的重要了

    1) 查看某个服务的运行情况 (例如Redis)

    ps -ef | grep redis   //e-显示程序使用的环境变量 f-显示UID,PPIP,C与STIME栏位

      

    2) 查看某个端口是否在监听

    netstat -lntp | grep 6379
    

      

    //查看监听的端口的程序
    netstat -anp | grep 9501
    

      

    3)查看linux占用内存/CPU最多的进程

    可以使用一下命令查使用内存最多的10个进程     
    ps -aux | sort -k4nr | head -n 10
     
    
    可以使用一下命令查使用CPU最多的10个进程     
    ps -aux | sort -k3nr | head -n 10

    参数说明:
      sort
        -k: 进行排序的栏位
        4/3 对应的栏位位置
        -n: 按照数值大小排序
        -r: 反向排序

       动态的查看进程: 用top命令指定固定的PID

    top -p 32199
    使用了top期间,支持命令,
      h ==》 会显示如何使用的帮助
      M ==〉 通过内存占用率大小进行排序
      P ==》 按照CPU使用率进行大小排序

    默认只是显示部分的进程数据, 如果想要查看全部的进程信息, 可以将信息重定向到文件中
    top -n -b 1 -d 3 >> file.txt
      参数:
        

    -b :batch模式,可以重定向到文件中

    
    

    -n 1:一共取1次top数据。后边加数字,表示次数

    
    

    -d 3:每次top时间间隔是3秒钟

    -c : 不仅仅显示进程名称, 而是显示完整执行命令 

     

      查看更详细的内存占比

    cat /proc/10997/status
    
    
    Name:    java
    State:    S (sleeping)
    Tgid:    10997
    Ngid:    0
    Pid:    10997
    PPid:    1959
    TracerPid:    0
    Uid:    1000    1000    1000    1000
    Gid:    1000    1000    1000    1000
    FDSize:    256
    Groups:    4 24 27 30 46 113 128 130 132 134 1000 1002 
    NStgid:    10997
    NSpid:    10997
    NSpgid:    10987
    NSsid:    10914
    VmPeak:    11522940 kB
    VmSize:    11522940 kB
    VmLck:           0 kB
    VmPin:           0 kB
    VmHWM:       65176 kB
    VmRSS:       65176 kB
    VmData:    11462972 kB
    VmStk:         140 kB
    VmExe:           4 kB
    VmLib:       17064 kB
    VmPTE:         460 kB
    VmPMD:          28 kB
    VmSwap:           0 kB
    HugetlbPages:           0 kB
    Threads:    25
    SigQ:    0/128292
    SigPnd:    0000000000000000
    ShdPnd:    0000000000000000
    SigBlk:    0000000000000000
    SigIgn:    0000000000000003
    SigCgt:    2000000181005ccc
    CapInh:    0000000000000000
    CapPrm:    0000000000000000
    CapEff:    0000000000000000
    CapBnd:    0000003fffffffff
    CapAmb:    0000000000000000
    Seccomp:    0
    Cpus_allowed:    ff
    Cpus_allowed_list:    0-7
    Mems_allowed:    00000000,00000001
    Mems_allowed_list:    0
    voluntary_ctxt_switches:    86
    nonvoluntary_ctxt_switches:    2

      VmRSS为内存

    Redis


    (1) 开启客户端连接Redis

    redis-cli
    

      

    (2) 退出客户端的连接

    redis-cli shutdown
    

      或

    kill -9 PID
    

      

    (3)常用启动/停止/重启

    ./etc/init.d/redis-server start
    
    ./etc/init.d/redis-server stop
    
    ./etc/init.d/redis-server restart

    MySQL


     查看MySQL的运行状态

    /etc/rc.d/init.d/mysqld status  
    

      

    频繁使用


    1. 计算某个文件大小

    1) du -h 文件
    2) ls -hl 文件

      

    2. 重启网卡服务

    service network restart
    

      

    3. 相关服务重启

    /etc/init.d/redis restart 
    

      

    4. 查看磁盘信息

    df -h //以kb显示(常用)  默认使用b显示
    

      

    5. 关机,重启

    init 0 //关机
    
    init 6 //友好重启
    
    reboot //出状况或强制重启
    

      

    6. 软连接

    ln -s 源文件 目标文件
    

      

    7.查找某个命令或文件

    find / -name 文件名称   // find的方式进行查找
    
    whereis  文件名称  //使用whereis方式进行查找
    
    which   文件名称    // 使用which的方式进行查找
    
    locate  文件名称    //使用locate的方式进行查找

     8. 常见统计

    wc -l  文件名称  // 统计行数
    
    wc -c 文件名称 // 统计字节数
    
    wc -w 文件名称 // 统计字数
    
    //以上命令可以同时组合使用,例如:
    wc -lwc file1 file2
      872526  5390372 92673673 14.sql
         744     3711    35936 15.sql
      873270  5394083 92709609 total

     9. 文件排序

    1. 按照文件大小排序
    
    ls -lSh
    total 89M
       0 -rw-r--r-- 1 Administrator 197121    0 8月  31 17:44 14
     89M -rw-r--r-- 1 Administrator 197121  89M 8月  31 16:13 14.sql
     36K -rw-r--r-- 1 Administrator 197121  36K 8月  31 16:13 15.sql
     20K -rw-r--r-- 1 Administrator 197121  17K 8月  31 16:14 17.sql
     16K -rw-r--r-- 1 Administrator 197121  15K 8月  31 16:13 16.sql
    4.0K -rw-r--r-- 1 Administrator 197121 3.3K 8月  31 16:14 18.sql
    解释:
        -l : 长格式显示
        -S: 排序,默认降序(注意是大写S)
        -h: 表示文件大小转成M来显示
    
     当然可以使用升序    -r : 升序排列
    
    2. 按照文件修改时间排序
    ls -lt
    total 90580
    -rw-r--r-- 1 Administrator 197121        0 8月  31 17:44 14
    -rw-r--r-- 1 Administrator 197121     3342 8月  31 16:14 18.sql
    -rw-r--r-- 1 Administrator 197121    17240 8月  31 16:14 17.sql
    -rw-r--r-- 1 Administrator 197121    14609 8月  31 16:13 16.sql
    -rw-r--r-- 1 Administrator 197121    35936 8月  31 16:13 15.sql
    -rw-r--r-- 1 Administrator 197121 92673673 8月  31 16:13 14.sql
    解释:
       -t:   最近的修改时间
    默认是降序: 最后修改的在前面
    当然也可以加上参数 -r 进行升序排序
    
      

     10.文件或目录统计

    1. 显示目录或者文件所占空间
    du
    
    2. 显示指定文件所占空间
    du filename/dirname
    
    3. 显示多个文件所占空间
    du file1 file2 file3
    
    4. 只显示总和的大小
    du -sh
    -s:仅显示总计
    -h:以友好的单位显示K,M,G
    
    5. 显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和
    du -ch file1 file2 file3
    
    6. 按照空间大小排序
    du|sort -nr|more
    
    7. 输出当前目录下各个子目录所使用的空间
    du -h --max-depth=1

    8. 统计目录下文件大小
    du -sh *

    9. 统计文件大小并排序
    du -s * | sort -nr (倒叙)

      

     10 内容匹配 grep

    grep -rn '匹配词' . 
    //递归的匹配所有的搜索词

    11. 文件压缩与解压 tar

    文件压缩:
    
    tar zcvf FileName.tar.gz DirName
    
    文件解压:
    tar zxvf FileName.tar.gz
    
    
    
    tar.bz2格式
    解压:[*******]$ tar jxvf FileName.tar.bz2
    压缩:[*******]$ tar jcvf FileName.tar.bz2 DirName
    
    
    tar.gz格式
    解压:[*******]$ tar zxvf FileName.tar.gz
    压缩:[*******]$ tar zcvf FileName.tar.gz DirName
    
    
    tar格式
    解包:[*******]$ tar xvf FileName.tar
    打包:[*******]$ tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)
    
    zip格式
    解压:[*******]$ unzip FileName.zip
    压缩:[*******]$ zip FileName.zip DirName

    rar格式:
    压缩:rar a FileName.rar FileName
      解压:unrar x FileName.rar
         x: 解压文件到完整路径
    e: 解压文件到当前目录

    rar安装:
      1)下载源码包 https://www.rarlab.com/download.htm
    2)下载并解压 tar -zxvf rarlinux-5.5.0.tar.gz
    3) cd rar
    4) make

      问题:  如果在备份的过程中,文件发生变化会出现报错的情况,导致终端, 可以添加命令  --warning=no-file-changed

    12. 查看当前登陆的终端

    w
    
    22:19:00 up 26 days, 23:29,  1 user,  load average: 0.00, 0.01, 0.05
    USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
    root     pts/0    58.101.106.224   21:40    4.00s  0.10s  0.00s w
    
    用户名  终端  登陆IP 登陆时间      正在执行的操作

    13. 查看CPU信息

    1. 物理CPU的个数:
    cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
    2. 每个物理CPU的核心数量:
    cat /proc/cpuinfo | grep "cpu cores" | uniq  
    3. 逻辑CPU个数:
    cat /proc/cpuinfo | grep "processor" | wc -l  

    centos7


    1)systemctl  命令

      设置nginx为开机启动项:

    systemctl enable nginx
    

       服务相关操作 

    systemctl start/stop/reload/restart   nginx (服务名称)
    

      

          防火墙

    查看防火墙开启状态:
    systemctl status firewalld

    启动/关闭/重启 防火墙
    systemctl [start|stop|restart] firewalld.service  查看80端口是否开放成功: firewall-cmd --zone=public --query-port=80/tcp 永久开放80端口: firewall-cmd --zone=public --add-port=80/tcp --permanent

    移除80端口号:
    firewall-cmd --permanent --zone=public --remove-port=80/tcp 重启防火墙(设置完成一定要设置): firewall-cmd --reload

      

     2)sudo

      临时获取最高权限

    sudo -s

          切换用户

    su - vagrant  //切换回vagrant用户

    华丽分割线


     命令安装

      1) locate

      可能一开始使用这个命令的时候,是无法使用的,需要你自己进行安装

      

    yum install locate 
    //可能发生的错误, 没有可用的软件包  locate 的情况
    
    //进行安装mlocate进行解决
    yum install -y mlocate
    
    //安装成功之后,就可以愉快的使用locate命令进行内容的查找了, 呃呃呃,但是好像还是有问题,还差一步,对,那就是更新索引库
    updatedb
    
    //如果更新之后,还是搜索不到的话,那么可以查看配置文件,是否有限制
    vim /etc/updatedb.conf
    
    • PRUNE_BIND_MOUNTS = “yes” 表示开启搜索限制,如果为’no’则表示不开启搜索限制;
    • PRUNEFS = 表示搜索时,不搜索的文件系统;
    • PRUNENAMES = 表示搜索时,不搜索的文件类型;
    • PRUNEPATHS = 表示搜索时,不搜索的路径; 
    不只locate命令遵循搜索限制,whereis与which也遵循
     
     

     

    日常

      1) 复制文件中的内容到粘贴板上
    pbcopy < ~/.ssh/id_rsa.pub
    
    
    //Windows中的类似使用
    clip < ~/.ssh/id_rsa.pub
       2) 大文件的切割(场景:查看较大的文件(几十M)的时候,整个都卡住了,这个时候我们就可以切割成多个的小文件方便查看并搜索)
      
    //使用命令split  (windows 下使用git bash工具即可使用该命令)
    
    常用参数:
        -<行数> : 指定每多少行切成一个小文件
        -b<字节> : 指定每多少字节切成一个小文件    1KB = 1000B   1MB = 1000KB
        --help : 在线帮助
        --version : 显示版本信息
        -C<字节> : 与参数"-b"相似,但是在切 割时将尽量维持每行的完整性
        [输出文件名] : 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号
    
    
    //实例:
    split -3000 index.log #将index.log文件每3000行分割成一个文件  默认多个以''x''开头的文件

       3)  kill 掉所有匹配到名字的进程

    ps aux | grep swoole_job |  awk '{print $2}' | xargs kill -9

    ps 列出所有进程,

    参数:

    a - 显示现行终端机下的所有进程,包括其他用户的进程;

    u - 以用户为主的进程状态 ;

    x - 通常与 a 这个参数一起使用,可列出较完整信息。

    grep 过滤掉不包含 "swoole" 的行

    awk '{print $2}'    获取进程 ID (PID, Process Identification),我们想 kill 掉某一个进程的时候需要通过 PID 指定特定进程

    xargs  将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。

    也就是将管道传递过来的每一个 PID 作为 kill -9 的参数

      
      4) 删除20天之前的数据
    find /tmp -mtime +21 -exec rm -rf {} ;
    
    注意: 不要忘记最后的分号
    
    mtime: 修改时间(天)
    
    {} ;  固定写法, 一堆大括号+空格+;
     
     
     
     
     
     
     
     
     

  • 相关阅读:
    webapi 导入CSV文件
    webapi 导出CSV文件
    .net 压缩文件夹和解压
    SSH免密码登陆以及穿越跳板机
    hbase shell删除键不听使唤
    百度分享插件wbuid属性无法@指定微博
    iOS safari BUG 总结
    论zeroclipboard的各种爽翻天用法
    Android Studio 使用技巧
    安装第三方包web.py发生的错误
  • 原文地址:https://www.cnblogs.com/xingxia/p/linux_operation.html
Copyright © 2011-2022 走看看