进程和计划任务

271 阅读2分钟

一.进程和程序

1.程序

  • 是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具。
  • 用于描述进程要完成的功能,是控制进程执行的指令集。
  • 保存在硬盘、光盘等介质中的可执行代码和数据。
  • 静态保存的代码

2.进程

  • 在CPU及内存中运行的代码
  • 动态执行的程序
  • 父,子 进程—每个程序可以创建一个或多个进程

进程的五种状态

D不可中断  R运行  S中断  T停止  Z僵尸

3.线程

线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

查看进程有几个线程,可以使用 "cat /proc/PID/status"查看

查看线程 ps -T

二.查看进程

1.ps静态查看进程

ps [选项] 

 a 显示当前终端下的所有进程信息,包括其他用户的进程、与“x”选项结合时将显示系统中所有的进程信息 

u 使用以用户为主的格式输出进程信息 

x 显示当前用户在所有终端下的进程信息 

-e 显示系统内的所有进程信息 

-l 使用长(Long)格式显示进程信息 

-f 使用完整的(Full)格式显示进程信息 

ps aux

ps aux命令 以简单列表的形式显示出进程信息

每个字段含义

USER:启动该进程的用户账号的名称 

PID :该进程在系统中的数字ID,在当前系统中是唯一的kill -9 PID号 

TTY :表明该进程在哪个终端上运行,“?”表示不需要终端 

STAT:显示了进程当前的状态,如S(休眠)、R(运行)、Z(僵尸)、<(高优先级)、 N(低优先级)、s(父进程)、+(前台进程)、对于僵尸进程要手动关闭 

START:启动该进程的时间 

TIME:该进程占用的CPU时间 

COMMAND:启动该进程的命令名称 

%CPU:占用CPU百分比 

%MEM:占用内存百分比 

VSZ: 占用虚拟机内存大小(swap) 

RSS: 占用物理内存的大小(物理内存) 

ps -elf

PPID:表示对应进程的父进程的PID号
PRI:用户态优先级(人为)
NI: nice值,内核态优先级,取值范围(-20~19),值越小,优先级越高
ADDR:若是 - ,代表正在运行
SZ:在swap交换分区的容量
WCHAN:当前进程在内核中的名称
STIME:启动时间

pstree

pstree命令以属性结构列出进程信息,可以更直观的判断各进程的相互关系(父,子进程)
yum -y install psmisc 安装pstree命令

pstree -aup
-a: 显示完整信息
-u:列出对应用户名
-p:列出对应PID号

自定义查看

ps axo 列名,列名,列名... ​

 ps -eo 列名,列名,列名...

2.top动态查看进程

选项:

  • -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒。
  • -b:使用批次处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中。
  • -n 次数:指定 top 命令执行的次数。一般和"-"选项合用。
  • -p 进程PID:仅查看指定 ID 的进程。
  • -s:使 top 命令在安全模式中运行,避免在交互模式中出现错误。
  • -u 用户名:只监听某个用户的进程。
  • top -H查看线程

在 top 命令的显示窗口中,可使用如下按键,进行交互操作:

  • ? 或 h:显示交互模式的帮助。
  • c:按照 CPU 的使用率排序,默认就是此选项。
  • M:按照内存(memory)的使用率排序。
  • N:按照 PID 排序。
  • T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序。
  • k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号。
  • r:按照 PID 给某个进程重设优先级(Nice)值。
  • q:退出 top 命令。
  • z:彩色显示
  • F:通过光标设置字段是否展示,以及展示顺序。

内容                                 说明

19:43:29              系统当前时间

up 1:58                  系统运行时间,本机已运行1时58分

1 user                    当前登录了一个用户

loag average         系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,                                则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4                                  就是高负载 (这个平均负载完全是依据个人经验来进行判断的,一般认为                                不应该超过服务器 CPU 的核数)

查看loag average:w     uptime

3.pgrep 根据条件(进程名、用户、终端)查进程

  • -U:指定用户
  • -l:显示进程名
  • -a:显示完整格式的进程名
  • -t :终端

4.prtstat 查看指定的进程

prtstat [选项] PID

-r :格式显示(raw)

三.控制进程

启动进程

手工启动

  • 前台启动:用户输入命令,直接执行程序(可能会占用前台终端)
  • 后台启动:在命令行尾加入“&”符号。

Ctrl+Z 组合,可以将当前进程挂起(即调入后台并停止执行)

jobs 命令,查看处于后台的任务列表   (加-l可显示进程名)

fg 任务序号,将后台进程恢复到前台运行

bg 任务序号,将一个在后台暂停的任务,变成继续执行。

结束进程 kill

kill 从字面来看,就是用来杀死进程的命令,但事实上,这个或多或少带有一定的误导性。从本质上讲,kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。

也就是说,kill 命令的执行原理是这样的,kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作

kill [信号] PID

-15 SIGTERM 让进程自行停止并退出 

-9 SIGKILL 强制让进程立即退出,且不能忽略

killall

通过程序的进程名来杀死一类进程,常与 ps、pstree 等命令配合使用

killall  进程名

pkill

pkill [-U 用户名] 进程名  

pkill [-t 终端号] 进程名

 ​-U:根据进程所属的用户名终止相应进程 

 -t:根据进程所在的终端终止相应进程

四.计划任务管理

at 一次性任务设置

过程:

at HH:MM yyyy-mm-dd  #设置执行任务时间

at> 任务  #设定具体任务

ctrl + d 提交任务

atq 查询任务列表    atrm 删除任务

crontab周期性任务设置

crontab -e [-u 用户名]   编辑计划任务

crontab -l [-u 用户名]    查看计划任务

crontab -r 清空

(-u选项缺省时默认针对当前用户,只有超级用户才可以使用-u)

全局配置文件,位于文件:/etc/crontab

用户定义的设置,位于文件:/var/spool/cron/用户名

任务内容格式

* * * * * 需要执行的任务     (任务内容设置中,命令一定要用绝对路径)