zoukankan      html  css  js  c++  java
  • Linux系统管理命令

    1:监测程序

      1.1:探查进程  ps命令

      默认情况下ps命令不会提供那么多信息:

      PID TTY           TIME CMD
      694 ttys000    0:00.08 -bash

    上例中的基本输出显示了程序的进程ID(process ID,PID),它们 运行在哪个终端(TTY)以及进程已用的CPU时间.

    Linux系统中使用GUN ps命令支持3种不同类型的命令行参数:

      1):Unix风格的参数,前面加单破折线;

      2):BSD风格的参数,前面不加破折线;

      3):GUN风格的长参数,前面加双破折线;

    这里不给出具体参数,和使用方法(太多,需要自己去man)

    常使用命令组合: Unix风格:

    ps -ef

    yusuwudeMacBook-Pro:~ yusuwu$ ps -ef
      UID   PID  PPID   C STIME   TTY           TIME CMD
        0     1     0   0  6:14上午 ??         0:08.78 /sbin/launchd
        0    42     1   0  6:14上午 ??         0:00.25 /usr/sbin/syslogd
        0    43     1   0  6:14上午 ??         0:00.59 /usr/libexec/UserEventAgent (System)
        0    46     1   0  6:14上午 ??         0:00.20 /System/Library/PrivateFrameworks/Uninstall.framework/Resources/uninstalld
        0    47     1   0  6:14上午 ??         0:01.53 /usr/libexec/kextd

    UID:启动这些进程的用户.

    PID:进程的进程ID.

    PPID:父进程的进程号(如果该进程是由另一个进程启动的).

    C:进程生命周期中的CPU利用率.

    STIME:进程启动时的系统时间.

    TTY:进程启动时的终端设备

    TIME:运行进程需要的累积CPU时间

    CMD:启动的程序名称.

    ----------------------

    ps -l

    yusuwudeMacBook-Pro:~ yusuwu$ ps -l
      UID   PID  PPID        F CPU PRI NI       SZ    RSS WCHAN     S             ADDR TTY           TIME CMD
      501   694   693     4006   0  31  0  4296528   1636 -      S                   0 ttys000    0:00.09 -bash

    F:内核分配给进程的系统标记

    S:进程的状态(O代表正在运行;S代表在休眠;R代表可运行,正等待运行;Z代表僵化,进程已结束但父进程已不存在;T代表停止)

    PRI:进程优先级(越大的数字代表越低的优先级)

    NI:谦让度值用来参与决定优先级

    ADDR:进程的内存地址

    SZ:加入进程被换出,所需交换空间的大致大小.

    WCHAN:进程休眠的内核函数的地址.

    -------------------------------

    BSD风格: ps l

    yusuwudeMacBook-Pro:~ yusuwu$ ps l
      UID   PID  PPID CPU PRI NI      VSZ    RSS WCHAN  STAT   TT       TIME COMMAND
      501   694   693   0  31  0  4296528   1636 -      S    s000    0:00.09 -bash

    其中大部分和使用Unix风格参数时的输出一样只有小部分不同.

    VSZ:进程在内存中的大小,以千字节(KB)为单位.

    RSS:进程在未换出时占用的物理内存

    STAT:代表当前进程状态的双字节状态码(注:笔者使用的是Mas OS系统,输出的并不是双字符状态码)

    在这里对双字符状态码解释一番:如:Ss ,R+等

    第一个字符采用了和Unix风格相同的值,表明进程是在休眠,运行还是等待.第二个字符进一步说明进程的状态.

    [1]:  <  该进程运行在高优先级上

    [2]:  N  该进程运行在低优先级上

    [3]:  L  该进程有页面锁定在内存中

    [4]:  S  该进程是控制进程

    [5]:  l  该进程是多线程的

    [6]:  +  该进程运行在前台

    -------------------------------

    GUN长参数:笔者系统不支持,暂不记;

    1.2实时监测进程  top

    ps命令虽然在收集运行在系统上的进程信息时非常有用,但是它只能显示某个特定时间点的信息.如果想观察那些频繁换进换出的内存的进程趋势,则需呀用到top命令,top命令和ps命令相似,能够显示进程信息,但它是实时的.

    Processes: 328 total, 2 running, 326 sleeping, 1171 threads                                                                                   08:40:34
    Load Avg: 1.54, 1.66, 1.83  CPU usage: 5.9% user, 4.12% sys, 90.77% idle    SharedLibs: 219M resident, 64M data, 24M linkedit.
    MemRegions: 46700 total, 2969M resident, 169M private, 1351M shared. PhysMem: 8119M used (1782M wired), 72M unused.
    VM: 2524G vsize, 1370M framework vsize, 0(0) swapins, 0(0) swapouts. Networks: packets: 254513/349M in, 177899/15M out.
    Disks: 174486/3215M read, 86778/1109M written.
    
    PID   COMMAND      %CPU TIME     #TH   #WQ  #PORT MEM    PURG   CMPRS  PGRP PPID STATE    BOOSTS            %CPU_ME %CPU_OTHRS UID  FAULTS   COW
    1360  top          2.4  00:00.44 1/1   0    25    3532K  0B     0B     1360 694  running  *0[1]             0.00000 0.00000    0    3890+    104
    1350  mdworker_sha 0.0  00:00.06 3     1    56    3240K  0B     0B     1350 1    sleeping *0[1]             0.00000 0.00000    501  3816     208
    1203  mdworker_sha 0.0  00:00.28 4     1    58    6416K  0B     0B     1203 1    sleeping *0[1]             0.00000 0.00000    501  21698    188
    1202  mdworker_sha 0.0  00:00.39 4     1    56    5980K  0B     0B     1202 1    sleeping *0[1]             0.00000 0.00000    501  26489    189

    默认情况下,top命令在启动时会按照%CPU值对进程排序,可以在top运行时使用多种交互命令重新排序.每个交互命令都是单字符,在top命令运行时键入可改变top的行为,键入f允许你选择对输出进行排序的字段,键入d允许你修改轮询间隔,键入q可以退出top.用户在top命令输出上有很大的控制权,用这个工具就能经常找出占用系统大部分资源的罪魁祸首.当然了,一旦找到,接下来就是结束这些进程.

    1.3结束进程  kill  killall

    在linux中,进程之间通过信号来通信.进程的信号就是预定义好的一个消息,进程能识别并决定忽略还是做出反应,进程如何处理信号是有开发人员通过编程来决定的.

                                                    Linux进程信号

    信号值 信号名 描述
    1 HUP  刮起
    2 INT 中断
    3 QUIT 结束运行
    9 KILL 无条件终止
    11 SEGV 段错误
    15 TERM 尽可能终止
    17 STOP 无条件停止运行,但不终止
    18 TSTP 停止或暂停,但继续在后台运行
    19 CONT 在STOP或TSTP之后恢复执行

    在linux上有两个命令可以向运行中的进程发出进程信号

    1:kill命令

    kill命令可通过进程ID(PID)给进程发信号,默认情况下,kill命令会向命令行中列出的全部PID发送一个TERM信号,遗憾的是,你只能用进程的PID而不能用命令名,所以kill命令有时并不好用.

    要发送进程信号,你必须是进程的属主或root用户.

    yusuwudeMacBook-Pro:~ yusuwu$ kill 694

    TERM信号告诉进程尽可能终止,不过,如果有不服管教的进程,它会忽略这个请求.如果要强行终止,-s参数支持指定其他信号(用信号名或信号值)

    yusuwudeMacBook-Pro:~ yusuwu$ kill -s HUP 694
    yusuwudeMacBook-Pro:~ yusuwu$ kill -s 1 694

    要检查kill命令是否生效,可再运行ps -ef 或top命令来查看进程是否已经停止.

    2:killall命令

    killall命令非常强大,它支持通过进程名而不是PID来结束进程.killall命令也支持通配符,这在系统因负载过大而变慢时很有用.

    yusuwudeMacBook-Pro:~ yusuwu$ killall http*

    上例中的命令结束了所有以http开头的进程.

    注:以root身份登录系统时,使用killall命令要特别小心,因为很容易就会误用通配符而结束了重要的系统进程.这可能会破坏文件系统.

    2:监测磁盘空间

    Linux文件系统将所有的磁盘都并入一个虚拟目录下.在使用新的存储媒体之前,需要把它们放到虚拟目录下,这项工作称为挂载(mounting).

    在今天大部分的Linux发行版都可能自动挂载特定类型的可移动存储媒体,可移动存储媒体是指可从PC上轻易移除的媒体,比如CD-ROM,软盘和U盘.

    如果用的发行版不支持自动挂载和卸载可移动存储媒体,就必须手动完成.

    [1]:挂载存储媒体:mount

    Linux系统上移除一个可移动设备时,不能直接从系统上移除,而应该先卸载.

    [2]:卸载存储媒体:umount

    如果在卸载设备时,系统提示设备繁忙,无法卸载设备,通常是有进程还在访问该设备或使用该设备上的文件,这时可用lsof命令获得使用它的进程信息,然后在

    应用中停止使用该设备或停止该进程.

    具体怎么用请自己去找男人(man)

    查看设备的磁盘使用空间

    df命令

    通过df命令很容易发现哪个磁盘的存储空间快没了

    另一个有用的命令是du命令,du命令可以显示某个特定目录(默认是当前目录)下的磁盘使用情况.这一方法可以用来快速判断系统上的某个目录下是不是有超大文件.

    3:处理数据文件

    [1]:排序sort命令

    [2]:搜索数据grep命令,其衍生命令有egrep,fgrep

    [3]:压缩数据

    gzip是Linux上最流行的压缩工具.

    gzip软件包是GUN项目的产物,意在编写一个能够替代原先Unix中的compress工具的免费版本.这个软件包含有下面的工具.

    gzip:用来压缩文件.

    gzcat:用来查看压缩过的文本文件的内容.

    gunzip:用来解压文件

    [4]:归档数据

    目前,Unix和Linux上使用最广泛的归档工具是tar命令.

    Linux中用tar命令对文件夹进行打包压缩

    一、打包的概念

             打包:指将多个文件(或目录)合并成一个文件,方便在不同节点之间传递或在服务器集群上部署。

             压缩或打包文件常见扩展名       *.tar, *.tar.gz, *.gz, *.bz2, *.Z;

             Linux系统一般文件的扩展名用途不大,但是压缩或打包文件的扩展名时必须的,因为linux支持的压缩命令较多,不同的压缩技术使用的压缩算法区别较大,根据扩展名能够使用对应的解压算法。

    二、tar命令

    1、命令作用

         将文件夹打包,也能将包解开成文件夹。

    2、选项参数

        -c:(create)建立打包文件

        -t :查看打包文件的内容含有哪些文件

       -x :解打包或解压缩的功能,可以搭配-C(大写)在特定目录解开

        -j :通过bzip2的支持进行压缩/解压缩,此时文件最好为*.tar.bz2

       -z :通过gzip的支持进行压缩/解压缩,此时文件最好为*.tar.gz

       -v :在压缩/解压缩的过程中,将正在处理的文件名显示出来

       -f filename:-f 后面跟处理后文件的全名称(路径+文件名+后缀名)

       -C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项

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

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

       注意-c, -t, -x 不可同时出现在一串指令列中。

     3、案例

          案例1:在/tmp文件夹下创建demo文件夹,将/etc目录拷贝到/tmp/demo目录里,然后打包压缩成gz格式,要求显示压缩详情。

          1)在/tmp文件夹下创建demo文件夹,将/etc目录拷贝到/tmp/demo目录里。

    注意:拷贝非空目录要加 -r 

           2)将etc文件夹打包压缩成gz格式,并显示压缩详情。

            tar -czvf 打包压缩后文件   被打包压缩的文件夹

    [root@ied01 demo]# tar -czvf myetc.tar.gz etc

    如果打包压缩成.bz2格式,那么tar命令的参数:-cjvf。

      案例2:先删除etc目录,解压缩myetc.tar.gz到当前目录。

                1)删除etc目录

    [root@ied01 demo]# rm -rf etc

      2)解压缩myetc.tar.gz到当前目录

    [root@ied01 demo]# tar -xzvf myetc.tar.gz

    案例3:将myetc.tar.gz解压缩到指定目录:/home。

    [root@ied01 demo]# tar -xzvf myetc.tar.gz -C /home

    案例4:仅仅解压缩myetc.tar.gz里的某个目录,例如etc/udev。 

     1)先删除etc目录

    [root@ied01 demo]# rm -rf etc

     2)解压缩myetc.tar.gz里的etc/udev目录

    [root@ied01 demo]# tar -xzvf myetc.tar.gz etc/udev

  • 相关阅读:
    Spark技术栈
    Linux rm -rf删除文件不释放空间的解决办法
    MySQL 5.6.35 索引优化导致的死锁案例解析
    亲历者说 | 完整记录一年多考拉海购的云原生之路 转
    Spark实战(八)spark的几种启动方式
    Spark实战(七)spark streaming +kafka(Python版)
    stm32 IAP + APP ==>双剑合一
    Flask-APScheduler定时任务查询操作数据库(多文件/模块)
    flask框架开启定时任务简单案例flask_apscheduler
    Flask数据的增删改查(CRUD)
  • 原文地址:https://www.cnblogs.com/xibushijie/p/12848447.html
Copyright © 2011-2022 走看看