八、Linux进程和计划任务管理
目录
- 1、进程管理
- 1.1、进程介绍
- 1.2、查看系统进程信息
- 1.2.1、ps
- 1.2.2、top
- **1.2.3、pgrep**
- 1.2.4、pidof
- 1.2.6、pstree
- 1.3、杀死进程
- 1.3.1、kill
- 1.3.2、killall
- 1..3.3、pkill
- 1.4、进程的启动方式
- 1.4.1、手工启动进程
- 1.4.2、调度启动进程
- 1.5、进程挂起和恢复
- 1.6、不间断运行进程
- 2、计划任务管理
- 2.1、一次性计划任务
- 2.1.1、创建一次性计划任务
- 2.1.2、控制at使用
- 2.2、周期性计划任务
- 2.2.1、/etc/crontab文件实现任务计划
- 2.2.2、使用crontab命令实现任务计划
- 2.2.3、恢复丢失的crontab文件
- 2.2.4、控制使用crontab
1、进程管理
1.1、进程介绍
Linux是一个多用户、多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux系统可以同时执行几个任务,它可以在还未执行完一个任务时又执行另外一个任务,操作系统管理多个用户的请求和多个任务。
Linux系统上所有运行的内容都可以称为进程。每个用户任务、每个系统管理守护进程都可以称为进程。进程与程序之间还是有明显区别的。程序只是一个静态的命令集合,不占系统的运行资源;而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。一个程序可以启动多个进程。进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。
进程具有以下特征。
动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生、动态消亡的。
并发性:任何进程都可以同其他进程一起并发执行。
独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。
异步性:由于进程间的相互制约,使得进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。
结构特征:进程由程序、数据和进程控制块三部分组成。
在Linux系统中有以下三种进程。
交互式进程:一个由Shell启动并控制的进程,交互式进程既可在前台运行,也可在后台运行。
批处理进程:与终端无关,安排在指定时刻完成的一系列进程。
守护进程:在引导系统时启动,以执行即时的操作系统任务,如crond、rsyslogd、named等。
1.2、查看系统进程信息
查看Linux系统中的进程信息,可以使用ps、top、pgrep、pidof和pstree等命令
1.2.1、ps
介绍
ps命令是Linux和Unix系统中用于展示当前系统中活动进程的一个命令工具。通过使用ps命令,你可以查看关于当前运行的进程的信息,比如进程ID(PID)、正在运行的命令、CPU使用率、内存使用率等。
基本用法
ps:显示当前终端会话中的活动进程。
ps ax:显示所有进程的列表。
ps aux:显示所有进程的详细列表,包括用户、CPU和内存使用率等信息。
ps -ef:使用全格式显示所有进程,这与aux选项类似,但格式略有不同。
常用选项
-e 或 --all:显示所有进程。
-f:显示完整格式。
-u 用户名:显示指定用户的进程。
–sort:根据指定的关键字排序,例如–sort=-%mem按内存使用率降序排列。
-p PID:根据进程ID查看进程信息。
示例
1、查看所有进程及其详细信息:
ps aux
2、查看特定用户(例如用户名为john)的所有进程:
ps -u john
3、根据PID(假设为1234)查看进程信息:
ps -p 1234
4、查看系统中消耗内存最多的10个进程:
ps aux --sort=-%mem | head -10
输出字段解释
常见的字段及其描述:
PID:进程ID,唯一标识一个进程。
TTY:终端类型,进程与之关联的终端。
TIME:CPU时间,该进程占用的处理器时间。
CMD:命令名称/执行的命令行,启动进程时使用的命令。
USER:进程所有者的用户名。
%CPU:进程占用的CPU百分比。
%MEM:进程占用的物理内存百分比。
VSZ:虚拟内存大小,单位为KB。
RSS:Resident Set Size,进程占用的非交换物理内存大小,单位为KB。
STAT:进程状态。常见状态有:
R(运行中)
S(睡眠中)
T(停止状态)
Z(僵尸进程)
D(不可中断睡眠状态)
START:进程启动时间或启动日期。
NI:nice值,表示进程优先级的调整值。
PPID:父进程ID,即启动该进程的进程的ID。
1.2.2、top
介绍
top命令是Linux和Unix系统中用于实时显示系统进程和资源使用情况的工具。它提供了一个动态更新的视图,展示了CPU、内存使用情况以及系统上最消耗资源的进程。top命令非常适合于监控系统的实时性能和资源使用情况。
基本用法
启动top命令非常简单,只需在终端中输入top,然后按回车键。默认情况下,top会按照CPU使用率排序进程,最顶部的进程是当前使用CPU最多的进程。
主要显示区域
top命令的输出大致可以分为两部分:
系统概览:显示在屏幕的上方,提供了CPU、内存(物理内存和交换空间)和系统运行时间等信息。
进程列表:显示在屏幕的下半部分,列出了当前系统上的活动进程,通常按照某种资源使用情况(如CPU或内存)进行排序。
主要字段解释
PID:进程ID。
USER:运行该进程的用户。
PR:进程优先级。
NI:nice值,影响进程调度优先级的值。
VIRT:虚拟内存使用量。
RES:常驻内存使用量。
SHR:共享内存大小。
S:进程状态(例如,S代表睡眠,R代表运行中)。
%CPU:进程占用的CPU百分比。
%MEM:进程占用的物理内存百分比。
TIME+:进程占用CPU的总时间。
COMMAND:启动进程的命令名称或命令行。
交互命令
在top运行时,你可以使用一些交互命令来改变显示或对进程进行操作:
h 或 ?:显示帮助。
k:终止一个进程。系统将提示你输入想要终止的进程ID(PID)和信号。
P:按CPU使用率排序。
M:按内存使用率排序。
T:按时间/累计时间排序。
f:选择要显示的字段。
q:退出top。
top命令输出信息描述
top命令输出信息统计信息区前五行是系统整体的统计信息,主要显示任务队列、进程、CPU、内存和swap等信息。
任务队列信息
系统时间:当前的系统时间。
运行时间:系统自上次启动以来已经运行了多长时间。
用户数:当前登录到系统的用户数量。
系统负载:显示过去1分钟、5分钟和15分钟的平均系统负载。系统负载表示的是系统工作的繁忙程度,即平均活跃进程数。数字越高,表示系统越繁忙。
进程信息
总进程数:系统中总的进程数。
运行中的进程数:当前正在运行的进程数。
休眠中的进程数:当前处于睡眠状态的进程数。
停止的进程数:被停止或暂停执行的进程数。
僵尸进程数:已结束但其父进程尚未对其进行处理(如读取其退出状态)的进程。
CPU信息
用户空间占用百分比:执行用户级进程的时间百分比。
系统空间占用百分比:在内核级别执行的时间百分比,不包括优先级调整和等待I/O的时间。
优先级调整时间百分比:改变进程优先级所花费的时间百分比。
空闲时间百分比:CPU处于空闲状态的时间百分比,没有执行任何任务。
内存信息
物理内存总量:系统的总物理内存量。
已使用的物理内存量:已被使用的物理内存量,包括所有缓存和缓冲区。
空闲物理内存量:当前未被使用的物理内存量。
缓冲区使用量:由内核缓冲区使用的内存量。
swap信息
交换区总量:系统交换区(虚拟内存)的总量。
已使用的交换区量:已被使用的交换区量。
空闲交换区量:当前未被使用的交换区量。
缓存使用量:用作缓存或临时存储交换数据的内存量。
1.2.3、pgrep
介绍
pgrep 是一个在 Unix 和Linux 系统中使用的命令行工具,用于根据进程的名称或其他属性查找进程。pgrep 的名称来源于 “process grep”,意味着它可以根据用户提供的模式来搜索当前运行的进程列表,并输出匹配进程的进程标识符(PID)。这个命令特别有用于自动化脚本和系统管理中,允许管理员快速找到特定的运行进程。
基本用法
查找进程名: pgrep process_name,这将列出所有名为 process_name 的进程的 PID。
使用选项: pgrep 支持多种选项来精确化搜索条件。例如:
-u 用户名或用户ID,用于查找属于特定用户的进程。
-l 不仅返回 PID,还返回进程名。
-f 允许使用完整的命令行进行搜索,而不仅仅是进程名。
示例
查找所有 SSH 进程: pgrep ssh
查找属于特定用户的进程: pgrep -u username
查找并显示进程名: pgrep -l nginx
使用完整命令行搜索进程: pgrep -f “/usr/bin/python my_script.py”
pgrep 是一个强大的工具,