Linux进程和计划任务管理

目录

一、查看和控制进程

1. 进程和程序

1)概念:

2)区别:

3)关系:

2. 查看进程

1)ps 命令——查看进场静态信息

2)top 命令——查看进程动态信息

3)pgrep 命令——查询进程信息

4)pstree 命令——查看进程树

3. 控制进程

1)启动进程

2)改变进程的运行方式

3)终止进程执行

二、计划任务管理

1. at 一次性任务设置

2. 安装顺序

3. crontab 周期性任务设置

1)crontab 的配置文件和目录

2)使用 crontab 命令管理用户的计划任务

三、总结


一、查看和控制进程

1. 进程和程序

1)概念:
  • 程序:静态的指令集合(硬盘上的可执行文件)

  • 进程:程序的一次动态执行过程(内存中运行的程序实例)是操作系统分配资源的基本单位,它是程序执行时的一个实体,每个进程都有自己独立的内存空间、系统资源以及执行状态。

2)区别:
程序进程
存在形式静态文件(如.exe/.sh)动态运行实例
生命周期永久存储从启动到终止
资源占用不占用系统资源占用CPU/内存等资源
3)关系:
  • 一个程序可对应多个进程(如同时打开多个浏览器窗口)

  • 进程是程序在内存中的动态表现(假如程序是"菜谱",进程就是"做菜过程")

  • 程序是进程的静态表示:进程是程序的一次执行过程,即程序是进程的代码和数据的静态表示,而进程则是这些代码和数据在特定时间、特定内存地址空间中的动态实例。

  • 进程是程序的执行:程序被加载到内存中,由操作系统为其分配资源并创建一个进程来执行。因此,进程是程序在特定环境下的执行过程。

2. 查看进程

1)ps 命令——查看进程静态信息
  • ps 选项
a显示当前终端的所有进程信息
u使用以用户为主的格式输出进程信息
x显示当前用户在所有终端下的进程信息
-e显示系统内的所有进程信息
-l使用长格式显示
-f使用完整的格式显示
  • 执行 ps:

各字段含义解释:

- PID:进程标识符(Process ID),用于唯一标识一个进程。

- TTY:终端名称(TTY),表示该进程与哪个终端相关联。

- TIME:进程使用的CPU时间。

- CMD:命令(Command),启动该进程时所用的命令或程序名称。

  • 执行 ps aux(BSD风格):

各字段含义解释:

  • - USER:运行进程的用户名称。
  • - PID:进程ID,唯一标识系统中的每个进程。
  • - %CPU:进程使用的CPU时间占总CPU时间的百分比。
  • - %MEM:进程使用的物理内存占总物理内存的百分比。
  • - VSZ:虚拟内存大小(以KB为单位)。
  • - RSS:常驻集大小,进程占用的非交换物理内存(以KB为单位)。
  • - TTY:终端名称,启动进程的终端。
  • - STAT:进程状态(例如运行、睡眠、停止等)。
  • - START:进程启动的时间或日期。
  • - TIME:进程实际使用的CPU时间。
  • - COMMAND:启动进程所用的命令或程序名称。
  • 执行“ps  -elf”(Unix风格):

各字段含义解释:

  •  - F S UID:表示进程的状态标志、状态码以及用户ID。
  • - PID:进程ID,唯一标识一个进程。
  • - PPID:父进程ID,标识创建该进程的父进程。
  • - C:处理器使用情况(核心数或子进程的CPU使用情况)。
  • - PRI:优先级,表示进程调度的优先级。
  • - NI:nice值,影响进程优先级的调整值。
  • - ADDR:进程的内存地址或内核地址。
  • - SZ:进程的大小(通常以KB为单位)。
  • - WCHAN:进程等待的通道或系统调用名称。
  • - STIME:进程启动时间。
  • - TTY:终端设备,表示进程关联的终端。
  • - TIME:进程使用的CPU时间。
  • - CMD:命令名称或进程运行的程序名称。 这是用于展示和分析系统中运行进程的详细信息的格式。
2)top 命令——查看进程动态信息
  • 概述:进程实时资源占用,每3秒刷新一次,加”-d“ 可以定义刷新时间。
  • 执行示例:

以下是分隔符内内容的解释:

 - `top - 13:12:45`:显示当前时间为13:12:45。

- `up 1:06`:系统已运行1小时6分钟。

- `3 users`:当前有3个用户登录。

- `load average: 0.24, 0.05, 0.02`:系统的平均负载,分别表示过去1分钟、5分钟和15分钟的负载值。这些值越低,说明系统越空闲。

- `Tasks: 231 total`:总共有231个进程。

- `1 running`:当前有1个进程正在运行。

- `230 sleeping`:有230个进程处于休眠状态。

- `0 stopped`:没有停止的进程。

- `0 zombie`:没有僵尸进程。

- `%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st`

  • - `us`:用户空间占用CPU的百分比为0.0%。
  • - `sy`:系统空间占用CPU的百分比为0.0%。
  • - `ni`:调整过优先级的进程占用CPU的百分比为0.0%。
  • - `id`:空闲CPU的百分比为100.0%。
  • - `wa`:等待I/O的CPU时间百分比为0.0%。
  • - `hi`:处理硬件中断的CPU时间百分比为0.0%。
  • - `si`:处理软件中断的CPU时间百分比为0.0%。
  • - `st`:被虚拟机偷走的CPU时间百分比为0.0%。 

- `MiB Mem : 3372.8 total`:总物理内存为3372.8 MiB。

- `2595.0 free`:空闲物理内存为2595.0 MiB。

- `549.7 used`:已使用的物理内存为549.7 MiB。

- `454.9 buff/cache`:缓冲/缓存占用的内存为454.9 MiB。

- `MiB Swap: 4096.0 total`:总交换分区(Swap)大小为4096.0 MiB。

- `4096.0 free`:空闲交换分区为4096.0 MiB。

- `0.0 used`:已使用的交换分区为0.0 MiB。

- `2823.1 avail Mem`:可用内存为2823.1 MiB。 

- `PID`:进程ID。

- `USER`:运行进程的用户。

- `PR`:进程优先级。

- `NI`:进程的nice值。

- `VIRT`:进程使用的虚拟内存总量。

- `RES`:进程使用的物理内存(驻留集)。

- `SHR`:进程使用的共享内存。

- `S`:进程状态(如运行、休眠等)。

- `%CPU`:进程占用的CPU百分比。

- `%MEM`:进程占用的内存百分比。

- `TIME+`:进程运行的总时间。

- `COMMAND`:启动进程的命令。 

3)pgrep 命令——查询进程信息
  • 特点:快速通过进程名查找PID
  • 选项:-U :查询特定用户的进程、-t: 查询在特定终端运行的进程、-l:输出对应的进程名
  • 例子:pgrep -l sshd # 查找sshd相关进程
4)pstree 命令——查看进程树

显示进程间的父子关系(树状结构)

选项:

pstree -p # 显示进程树包含PID

pstree -u # 显示进程树包含的用户名

pstree -a # 显示进程树完整的命令信息

3. 控制进程

1)启动进程
  • 前台启动:直接执行命令(如 ping baidu.com

  • 后台启动:命令后加 &(如 ping baidu.com &

  • 持久运行nohup ping baidu.com &(终端关闭后仍运行)

  • 调度启动进程:通过  at、crontab , 其中 at 是用于设置一次性计划任务, crontab 用于设置周期性运行计划任务

2)改变进程的运行方式
命令功能
CTRL + Z挂起当前的进程
jobs -l查看当前会话的后台任务和对应的PID
fg %1将1号任务调回前台
bg %2将2号任务转后台继续运行
3)终止进程执行
kill -9 PID       # 强制终止(SIGKILL)
killall httpd     # 终止所有httpd进程
pkill -U tom      # 终止用户tom的所有进程
pkill -t  #指定终端 
pkill - 9  #强制终止

pgrep  -l  -U   #确认目标进程的相关信息

二、计划任务管理

1. at 一次性任务设置

例子:
echo "shutdown -h now" | at 23:00   # 今天23点关机
atq                                # 查看待执行任务
atrm 3                             # 删除3号任务

特性

  • 需要先安装并启动 atd 服务

  • 权限控制文件:/etc/at.deny(黑名单)和 /etc/at.allow(白名单)

2. 安装顺序

1)安装 at 命令

dnf   install   -y   at 

2)启动 atd 服务并查看现在时间

systemctl  start  atd

date    #时间

3)设置计划

at   时间

at>  计划任务命令  (例子:shutdown  -h  now  ##在某时间自动关闭当前系统)

at> <EOT>

3. crontab 周期性任务设置

1)crontab 的配置文件和目录
路径说明
/etc/crontab系统级任务配置文件
/etc/cron.d/系统级任务配置目录
/var/spool/cron/用户级任务存储目录(勿直接编辑)

时间格式(分 时 日 月 周):

*   *   *   *   *   command
┬   ┬   ┬   ┬   ┬
│   │   │   │   └── 星期(0-7,0和7都是周日)
│   │   │   └────── 月份(1-12)
│   │   └────────── 日(1-31)
│   └────────────── 小时(0-23)
└────────────────── 分钟(0-59)

特殊符号

  • *:任意值

  • ,:多个时间点(如 1,15

  • -:连续范围(如 1-5

  • /:间隔频率(如 */10 每10单位)

2)使用 crontab 命令管理用户的计划任务
  •  crontab 命令操作

crontab -e    # 编辑当前用户任务(自动保存到/var/spool/cron)
crontab -l    # 查看任务列表
crontab -r    # 删除所有任务  
crontab -u  #指定所管理计划属于哪个用户,默认为当前用户
  • 创建周期性计划的步骤
  1. 打开 crontab 文件:使用命令crontab -e打开当前用户的 crontab 文件。如果是首次使用,系统可能会提示选择一个文本编辑器。
  2. 编写任务:按照minute hour day month week command(分 时 日 月 周 命令)的格式编写任务。例如,要每天凌晨 3 点执行一个脚本/home/user/backup.sh,则写入0 3 * * * /bin/bash /home/user/backup.sh
  3. 保存并退出:编辑完成后,保存并退出文本编辑器。Cron 服务会自动读取新的配置并执行任务。。
  • 例子:每周一到周五的下午 6 点执行一个命令:要执行systemctl restart httpd命令,在 crontab 文件中写入:

    0 18 * * 1-5 systemctl restart httpd

三、总结

核心概念三句话

  1. 程序是静态文件进程是动态实例

  2. 一个程序对应多个进程(如多开浏览器)

  3. 进程消耗资源(CPU/内存),程序只占磁盘

核心命令速查表

命令核心功能高频参数/操作
ps静态查看进程aux(全量信息)-ef(父子关系)
top动态监控资源P(CPU排序)M(内存排序)
pgrep按名称查PID-l(显示进程名)
pstree显示进程树-p(显示PID)
kill终止进程-9(强制杀)-15(优雅终止)

核心工具对比

atcrontab
任务类型一次性周期性
配置方式命令行交互专用配置文件
日志位置/var/log/syslog/var/log/cron
适用场景临时任务(如关机提醒)常规维护(如每日备份)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值