Linux之进程和计划任务

一、查看和控制进程

1.1查看进程

1.1.1程序进程

  • 程序 :是一组计算机能识别和执行的指令
  • 进程:开发写的代码我们称为程序,那么将开发的代码运行起来。我们称为进程

1.1.2ps aux

"ps aux" 可以查看系统中所有的进程

a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将示系统中所有的进程信息。
u:使用以用户为主的格式输出进程信息。
x:显示当前用户在所有终端下的进程信息。
k|--sort 属性 对属性排序,属性前加 - 表示倒序 ps aux k -%cpu
o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem

表头 含义
USER 该进程是由哪个用户产生的。
PID 进程的 ID。
%CPU 该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
%MEM 该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
VSZ 该进程占用虚拟内存的大小,单位为 KB。
RSS 该进程占用实际物理内存的大小,单位为 KB。
TTY 该进程是在哪个终端运行的。
STAT 进程状态。
START 该进程的启动时间。
TIME 该进程占用 CPU 的运算时间,注意不是系统时间。
COMMAND 产生此进程的命令名。
  • TTY
    tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。?代表和终端无关,系统进程

  • STAT
    -D:不可被唤醒的睡眠状态,通常用于 I/O 情况。
    -R:该进程正在运行。
    -S:该进程处于睡眠状态,可被唤醒。
    -T:停止状态,可能是在后台暂停或进程处于除错状态。
    -W:内存交互状态(从 2.6 内核开始无效)。
    -X:死掉的进程(应该不会出现)。
    -Z:僵尸进程。进程已经中止,但是还是占用硬件资源。
    -<:高优先级(以下状态在 BSD 格式中出现)。
    -N:低优先级。
    -L:被锁入内存。
    -s:包含子进程。
    -l:多线程(小写 L)。
    -+:位于后台。

1.1.3 ps -elf

ps -elf 查看静态的进程统计信息

-e:显示系统内的所有进程信息。
-l:使用长(Long)格式显示进程信息。
-f:使用完整的(Full)格式显示进程信

表头 含义
F 进程标志,说明进程的权限,常见的标志有两个: 1:进程可以被复制,但是不能被执行;4:进程使用超级用户权限;
S 进程状态。具体的状态和"psaux"命令中的 STAT 状态一致;
UID 运行此进程的用户的 ID;
PID 进程的 ID;
PPID 父进程的 ID;
C 该进程的 CPU 使用率,单位是百分比;
PRI 进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;系统定义不可以人为修改
NI 进程的优先级,数值越小,该进程越早被执行;可以人为修改
ADDR 该进程在内存的哪个位置;
SZ 该进程占用多大内存;
WCHAN 该进程是否运行。"-"代表正在运行;
TTY 该进程由哪个终端产生;
TIME 该进程占用 CPU 的运算时间,注意不是系统时间;
CMD 产生此进程的命令名;

1.1.4top

top 命令可以动态地持续监听进程地运行状态

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

第一行为任务队列信息,具体内容如表 所示。

内 容 说 明
12:26:46 系统当前时间
up 1 day, 13:32 系统的运行时间.本机己经运行 1 天 13 小时 32 分钟
2 users 当前登录了两个用户
load average: 0.00,0.00,0.00 系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载 (这个平均负载完全是依据个人经验来进行判断的,一般认为不应该超过服务器 CPU 的核数)

第二行为进程信息,具体内容如表

内 容 说 明
Tasks: 95 total 系统中的进程总数
1 running 正在运行的进程数
94 sleeping 睡眠的进程数
0 stopped 正在停止的进程数
0 zombie 僵尸进程数。如果不是 0,则需要手工检查僵尸进程

第三行为 CPU 信息,具体内容如表

内 容 说 明
Cpu(s): 0.1 %us 用户模式占用的 CPU 百分比 个人用户开启的进程占用的 cpu 率
0.1%sy 系统模式占用的 CPU 百分比
0.0%ni 改变过优先级的用户进程占用的 CPU 百分比
99.7%id 空闲 CPU 占用的 CPU 百分比
0.1%wa 等待输入/输出的进程占用的 CPU 百分比 1
0.0%hi 硬中断请求服务占用的 CPU 百分比
0.1%si 软中断请求服务占用的 CPU 百分比
0.0%st st(steal time)意为虚拟程序占用 cpu 时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比

第四行为物理内存信息,具体内容如表buff cache

内 容 说 明
Mem: 625344k total 物理内存的总量,单位为KB
571504k used 己经使用的物理内存数量
53840k&ee 空闲的物理内存数量。我们使用的是虚拟机,共分配了 628MB内存,所以只有53MB的空闲内存
65800k buffers 作为缓冲的内存数量

第五行为交换分区(swap)信息,如表

内 容 说 明
Swap: 524280k total 交换分区(虚拟内存)的总大小
Ok used 已经使用的交换分区的大小
524280k free 空闲交换分区的大小
409280k cached 作为缓存的交换分区的大小

缓冲(buffer)和缓存(cache)的区别:

  • 缓存(cache)是在读取硬盘中的数据时,把最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。
  • 缓冲(buffer)是在向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。
内容 说明
PID 进程的 ID。
USER 该进程所属的用户。
PR 优先级,数值越小优先级越高。
NI 优先级,数值越小、优先级越高。
VIRT 该进程使用的虚拟内存的大小,单位为 KB。
RES 该进程使用的物理内存的大小,单位为 KB。
SHR 共享内存大小,单位为 KB。
S 进程状态。
%CPU 该进程占用 CPU 的百分比。
%MEM 该进程占用内存的百分比。
TIME+ 该进程共占用的 CPU 时间
COMMAND 进程的命令名。
  • 在top显示界面的操作:
    • ? 或 h:显示交互模式的帮助;
    • c:按照 CPU 的使用率排序,默认就是此选项;
    • M:按照内存的使用率排序;
    • N:按照 PID 排序;
    • T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;
    • k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;
    • r:按照 PID 给某个进程重设优先级(Nice)值;
    • q:退出 top 命令;

1.1.5pgrep命令

查看指定的进程

  • -U 指定用户
  • -l: 显示进程名
  • -a: 显示完整格式的进程名
  • -P pid: 显示指定进程的子进程

1.1.6pstree命令—查看进程树

pstree   [OPTION] [ PID | USER ]
常用选项
-a #显示启动每个进程对应的完整指令,包括启动进程的路径、参数等
-p #显示PID
-T #不显示线程thread,默认显示线程
-u #显示用户切换
-H #pid 高亮显示指定进程及其前辈进程

1.2控制进程

进程的启动分为前台启动和后台启动

  • 前台启动:通过终端启动,且启动后一直占据终端
  • 后台启动:可通过终端启动,但启动后即转入后台运行(释放终端)

1.2.1把命令放入后台执行,"命令 &"

  • 运行中的作业: Ctrl+z 放到后台 但是会停止作业
  • 尚未启动的作业: COMMAND &

1.2.2查看后台任务列表 jobs

查看处于后台的任务列表

1.2.3调出后台任务 fg

将后台进程恢复到前台运行,可指定任务序列号

1.2.4继续任务bg

bg 工作号 可以从新开始停止的服务
工作号 使用 jobs查看

1.3结束进程

1.3.1kill

kill [信号] PID

1.3.2killall

通过程序的进程名来杀死一类进程

killall [选项] [信号] 进程名

1.3.1pkill

当作于管理进程时,pkill 命令和 killall 命令的用法相同,都是通过进程名杀死一类进程

pkill [信号] 进程名
信号编号 信号名 含义
0 EXIT 程序退出时收到该信息。
1 HUP 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。
2 INT 表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。
3 QUIT 退出。
9 KILL 杀死进程,即强制结束进程。
11 SEGV 段错误。
15 TERM 正常结束进程,是 kill 命令的默认信号。

二、计划任务管理

2.1at

一次性计划任务
at [选项] 时间
HH:MM YYYY-MM-DD   #规定在某年某月的某一天的特殊时刻进行该项任务,若该时刻已过,则明天此时执行任务

2.2crontab周期

编辑计划任务
crontab -e [-u 用户名] #-u缺省时默认是针对当前用户,只有超级用户才可以用-u
查看计划任务
crontab -l [-u 用户名]
删除计划任务
crontab -r [-u 用户名]
分钟 小时 日期 月份 星期
字段 说明
分钟 取值 0 - 59 任意整数
小时 取值 0 - 23 任意整数
日期 取值 1 - 31 任意整数
月份 取值 1 - 12 任意整数
星期 取值 0 - 7 任意整数
特殊符号 含义
*(星号) 代表任何时间。
,(逗号) 代表不连续的时间。
-(中杠) 代表连续的时间范围。
/(正斜线) 代表每隔多久执行一次。
中午 12点 - 16点
* 12-16/2 * * *
[root@localhost opt]#cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed

在书写 crontab 定时任务时,需要注意以下几个事项:

  • 6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。
  • crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。
  • 在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理员混淆。
  • 在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。

本文作者:德国南部之星

本文链接:https://www.cnblogs.com/mtwm/p/17585783.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   德国南部之星  阅读(84)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
🔑