Linux入门小抄-part4.2-Linux高阶知识点(中)

一.进程管理

1.1、进程概念

进程是操作系统中非常重要的一个概念,进程是程序的执行过程,相对于程序,进程是动态的,在linux系统中,它与用户权限相关,程序与进程并没有一一对应,一个程序可能对应多个进程。

子进程与父进程:一个进程产生另外一个进程,产生的进程称为子进程,生成另外一个进程的进程称为父进程

1.2、进程状态

进程状态总体来看主要包括三种,分别是就绪状态、运行状态、等待状态,就绪状态指的是进程除了CPU资源,其他运行资源都已获得,当就就绪状态的进程得到CPU资源时,则进入进程进入运行状态,运行状态的进程在时间片用完后会重新转换成就绪状态,如果在运行时进程遇到IO等阻塞操作,则进程会进入等待状态,等待状态的进程当阻塞操作完成后,进程将进入就绪状态。

Linux入门小抄-part4.2-Linux高阶知识点(中)_第1张图片

Linux入门小抄-part4.2-Linux高阶知识点(中)_第2张图片

1.3、进程管理常用操作

  • PS命令

    • ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。

    • ps 命令常用选项包括:

      1、a显示所有用户的进程

      2、u显示用户名和启动时间

      3、x显示所有进程,包括没有控制终端的进程

      4、e显示所有进程,包括没有控制终端的进程,较x选项,信息更为简略

      5、l显示进程详细信息,按长格式显示

    • ps -au 显示所有用户进程,并给出用户名和启动时间等详细信息

      ps -aux 显示所有用户进程,包括没有控制终端的进程,并给出用户和和启动埋单等详细信息

      ps -el 按长格式显示进程详细信息

      ps -ef  也可以用来显示进程,这个命令可以看到ppid父进程号
       比如:
    • Linux入门小抄-part4.2-Linux高阶知识点(中)_第3张图片
    •  Linux入门小抄-part4.2-Linux高阶知识点(中)_第4张图片 
    • 以上命令执行结果出现的各个字段可能大家不太认识,请接法宝:
    • USER: 进程所有者

      PID: 进程号

      PPID: 进程的父进程ID

      %CPU:  CPU占用率

      C: 进程的CPU占用率

      %MEM: 内存占用率

      VSZ: 表示如果一个程序完全驻留在内存的话需要占用多少内存空间;

      RSS: 指明了当前实际占用了多少内存;

      TTY: 终端的次要装置号码 (minor device number of tty)

      F:进程的标志

      S:进程的状态

      STAT: 该进程程的状态,有以下值

      D: 不可中断的静止

      R: 正在执行中

      S: 静止状态

      T: 暂停执行

      Z: 不存在但暂时无法消除

      W: 没有足够的记忆体分页可分配

      <: 高优先序的进程

      N: 低优先序的进程

      L: 有记忆体分页分配并锁在记忆体内

      PRI:进程的优先权

      NI:进程的Nice值

      ADDR:进程的地址空间

      SZ:进程占用内存的大小

      WCHAN:进程当前是否在运行

      TTY:进程所属终端

      START: 进程开始时间

      TIME: 执行的运行时间

      COMMAND:所执行的指令

      CMD:进程的命令

  • kill/pidof/pkill命令

    • 有时候某个进程可能会长期占用CPU资源或无法正常执行或超出运行时间等,此时可能希望人工干预直接将进程杀死,这时候kill命令可以派上用场

    • 比较常用得是下面这几个

      • kill pid  直接杀死进程,但不能保证一定能杀死

      • kill -9 pid  强制杀死进程

      • pidof命令用于查看某个进程的进程号(例如:pidof httpd)

      • pkill命令可以按照进程名杀死进程。pkill和killall应用方法差不多,也是直接杀死运行中的程序;如果您想杀掉单个进程,请用kill来杀掉

  • 进程切换

    • 前台进程指的是进程在执行时会将命令行阻塞,直到进程执行完毕;后台进程指的是进程在执行时不会阻塞当前命令行,而是在系统后台执行

    • 常用命令:

      • 1、ctrl + c 终止进程

      • 2、ctrl + z 挂起进程

      • 3、fg命令将进程转换到前台执行

      • 4、bg命令将进程转换到后台执行

      • 5、jobs命令查看任务

  • top命令

    • Top 命令可以定期显示所有正在运行和实际运行并且更新到列表中,它显示出 CPU 的使用、内存的使用、交换内存、缓存大小、缓冲区大小、过程控制、用户和更多命令。它也会显示内存和 CPU 使用率过高的正在运行的进程。

    • Linux入门小抄-part4.2-Linux高阶知识点(中)_第5张图片

    • 按q退出
  • pstree命令

    • 看名字我们就能翻译到:进程树;将进程间的关系以树结构形式展示,能清楚的看到各个进程之间的父子关系.
    • 常用命令:
      • pstree :以树状形式显示进程

        • Linux入门小抄-part4.2-Linux高阶知识点(中)_第6张图片

      • pstree -p : 以树状形式显示进程,并且显示进程号

        • Linux入门小抄-part4.2-Linux高阶知识点(中)_第7张图片

  • jps命令

    • JPS命令是JDK提供的一个检查系统是否启动了JVM进程的一个进程。不是linux系统自带的。主要任务就是用来检查java进程的。


二.计划任务

2.1、概念

计划任务在Linux的体现主要分为at和crontab,其中:

at:通过at命令安排任务在某一时刻执行一次

crontab:通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。

这里我们主要介绍后者.

2.2、命令服务管理crontab

在CentOS系统上,crontab服务的名称叫做crond

  • 1、安装   :  yum -y install crontabs
  • 2、服务操作说明
    • service crond start   ## 启动服务
    • service crond stop   ## 关闭服务
    • service crond restart ## 重启服务
    • service crond reload ## 重新载入配置
    • service crond status ## 服务状态
    • chkconfig --list  ## 查看crontab服务是否已设置为开机启动,执行命令:
    • chkconfig --level 35 crond on   ## 加入开机自动启动:

  • 3、crontab功能使用

    • 1.命令格式

      crontab [-u user] file

      crontab [-u user] [ -e | -l | -r ]

       

      参数说明:

      -u user:用来设定某个用户的crontab服务,例如,”-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。

      file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。

      -e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。

      -l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。

      -r:删除定时任务配置,从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

      -i:在删除用户的crontab文件时给确认提示。

       

      命令示例:

      crontab file [-u user] ## 用指定的文件替代目前的crontab。

       

      必须掌握:

      crontab -l [-u user] ## 列出用户目前的crontab.

      crontab -e [-u user] ## 编辑用户目前的crontab.

       

      补充:通过crontab添加的计划任务都会存储在/var/spool/cron/目录里

    • 2.配置说明

      基本格式 :

      * * * * * command

      分  时  日  月  周  命令

      第1列表示分钟1~59 每分钟用*或者 */1表示

      第2列表示小时0~23(0表示0点) 7-9表示:7点到9点之间

      第3列表示日期1~31

      第4列表示月份1~12

      第5列标识号星期0~6(0表示星期天)

      第6列要运行的命令

    • 例子:
      • 记得我们以前说过一个一劳永逸的设置系统时间吗?那时我们提到过计划任务.当时我们是这个做的:
        • 使用命令:crontab -e
        • 然后往里加入一行内容  */10 * * * * ntpdate cn.pool.ntp.org
        • 上面的配置表示,每隔十分钟从202.120.2.101该时间服务器同步一次时间。
        • 保存退出
      • 这个就是一个计划任务.

你可能感兴趣的:(Linux)