Linux中进程与计划任务

目录

一.进程

1.进程相关概念

2.进程的特征

3.进程相关的命令

3.1 ps命令

3.2 top命令

3.3 pgrep命令

3.4 pstree命令进程树

3.5 kill命令

二.计划任务

1.一次性任务

2.周期性任务crontab

三.本章涉及面试题

1.运维需要关注服务器的系统性能及如何查看


一.进程

1.进程相关概念

进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。

进程一般由程序、数据集合和进程控制块三部分组成。

2.进程的特征

  • 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
  • 并发性:任何进程都可以同其他进程一起并发执行;
  • 独立性:进程是系统进行资源分配和调度的一个独立单位;
  • 结构性:进程由程序、数据和进程控制块三部分组成

3.进程相关的命令

3.1 ps命令

查看静态的进程统计信息

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

  • "ps -le" 可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级;

  • "ps -l" 只能看到当前 Shell 产生的进程;

3.2 top命令

top命令:动态查看进程状态默认每3秒刷新一次,q键退出,显示主要内容与ps命令相同

3.3 pgrep命令

查看指定的进程

  • -U 指定用户 小u 也可以

  • -l: 显示进程名

  • -a: 显示完整格式的进程名

  • -P pid: 显示指定进程的子进程

3.4 pstree命令进程树

以树形结构列出进程信息

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

3.5 kill命令

kill 命令是按照 PID 来确定进程的,所以 kill 命令只能识别 PID,而不能识别进程名。

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

注:killall 也是用于关闭进程的一个命令,但和 kill 不同的是,killall 命令不再依靠 PID 来杀死单个进程,而是通过程序的进程名来杀死一类进程。

二.计划任务

1.一次性任务

一次性执行任务:at 加时间 [HH:MM] [YYYY-MM-DD] ctrl D 提交任务。

格式 用法
HH:MM 比如 04:00 AM。如果时间已过,则它会在第二天的同一时间执行。
Midnight(midnight) 代表 12:00 AM(也就是 00:00)。
Noon(noon) 代表 12:00 PM(相当于 12:00)。
Teatime(teatime)下午茶 代表 4:00 PM(相当于 16:00)。
英文月名 日期 年份 比如 January 15 2018 表示 2018 年 1 月 15 号,年份可有可无。
MMDDYY、MM/DD/YY、MM.DD.YY 比如 011518 表示 2018 年 1 月 15 号。
now+时间 以 minutes、hours、days 或 weeks 为单位,例如 now+5 days 表示命令在 5 天之后的此时此刻执行。

2.周期性任务crontab

配置定时性周期任务规则:*   *    *    *    *    +执行用户    +执行命令

项目 含义 范围
第一个"*" 一小时当中的第几分钟(minute) 0~59
第二个"*" 一天当中的第几小时(hour) 0~23
第三个"*" 一个月当中的第几天(day) 1~31
第四个"*" 一年当中的第几个月(month) 1~12
第五个"*" 一周当中的星期几(week) 0~7(0和7都代表星期日)

例如:每月的 1号 15号  30号
            * *   1,15,30  *  *

在时间表示中,还有一些特殊符号需要学习

特殊符号 含义
*(星号) 代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。
,(逗号) 代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。
-(中杠) 代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。
/(正斜线) 代表每隔多久执行一次。比如"*/10命令",代表每隔 10 分钟就执行一次命令。

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

  • 6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。

  • crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。

  • 在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理员混淆。

  • 在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。

三.本章涉及面试题

1.运维需要关注服务器的系统性能及如何查看

  1. 内存:free -h 、top
  2. cpu使用率:top动态 、 ps aux静态、ps -elf、vmstat
  3. 磁盘容量:剩余容量 df -h、分区 lsblk、详细 fdisk -l +设备名
  4. 查看磁盘io即读写性能:vmstat、iotop(需要安装)、iostat(-d指定硬盘)、dd。input代表往磁盘写,output从磁盘复制出来。
  5. 查看网卡流量:iftop(需要安装扩展包再安装) -ni再加网卡名

你可能感兴趣的:(linux,运维,服务器)