Linux进程和计划任务管理(笔记)

目录

查看进程

ps

‌核心选项‌

‌常用组合‌

‌输出字段解释‌

top

‌交互模式快捷键‌

‌关键字段解释‌

‌常用选项‌

pgrep

‌核心选项‌

‌示例‌

pstree

‌核心选项‌

‌示例‌

命令对比表格‌

控制进程 

‌一、进程控制核心机制‌

‌1. 进程创建‌

‌2. 进程终止‌

‌3. 进程等待‌

‌4. 进程替换‌

‌二、进程控制命令与工具‌

‌三、关键场景与操作建议‌

 crontab周期性任务设置

‌一、crontab 基础‌

‌1. 核心概念‌

‌2. 常用命令‌

‌二、crontab 时间字段解析‌

‌1. 时间格式‌

‌2. 特殊符号‌

‌三、常用任务示例‌

‌四、高级用法‌

‌1. 环境变量设置‌

‌2. 输出重定向‌

‌3. 特殊快捷语法‌

‌五、示例场景‌

‌1. 数据库每日备份‌

‌2. 每周清理临时文件‌

‌3. 系统启动时启动服务‌

总结表格‌


查看进程

ps

功能‌:查看当前进程状态的静态快照(非实时)。
常用语法‌:

ps [选项] 
核心选项
选项说明
a显示所有用户的进程(包括其他用户)
u显示进程的详细信息(如用户、CPU、内存等)
x显示无终端控制的进程(如后台服务)
-e显示所有进程(等价于 ps aux
-f显示完整格式(包括命令行参数)
-p PID查看指定PID的进程
--sort按字段排序(例如 --sort=-%cpu 按CPU降序)
常用组合
ps aux # 列出所有用户的进程及资源占用(BSD格式) 
ps -ef # 完整格式显示所有进程(UNIX格式) 
ps -u root # 查看root用户的进程 
ps -p 1234 # 查看PID为1234的进程 
输出字段解释
  • USER:进程所属用户
  • PID:进程ID
  • %CPU:CPU占用百分比
  • %MEM:内存占用百分比
  • VSZ:虚拟内存大小(KB)
  • RSS:实际内存大小(KB)
  • STAT:进程状态(如 S=睡眠,R=运行,Z=僵尸进程)
  • START:进程启动时间
  • COMMAND:启动命令

top

功能‌:实时动态监控进程及系统资源占用。
语法‌:

top [选项] 
交互模式快捷键
快捷键功能
P按CPU使用率排序(降序)
M按内存使用率排序(降序)
k终止指定PID的进程
q退出top
Shift + H切换显示线程或进程
z切换彩色/黑白显示
关键字段解释
  • 系统概览‌:

    • load average:系统负载(1/5/15分钟的平均值)
    • Tasks:总进程数及状态统计(运行、睡眠、僵尸等)
    • %Cpu(s):CPU使用分布(用户、系统、空闲等)
    • KiB Mem:内存使用情况(总量、已用、空闲)
  • 进程列表‌:

    • PR:进程优先级
    • NI:进程的Nice值(优先级调整值)
    • VIRT:虚拟内存总量
    • RES:实际内存使用量
    • SHR:共享内存大小
常用选项
top -p 1234,5678 # 监控指定PID的进程 
top -u root # 仅显示root用户的进程 
top -d 5 # 刷新间隔设为5秒

pgrep

功能‌:根据进程名或其他条件快速查找PID。
语法‌:

pgrep [选项] 进程名 
核心选项
选项功能
-l显示进程名和PID
-u 用户过滤指定用户的进程
-x精确匹配进程名
-f匹配完整命令行(包含参数)
示例
pgrep nginx # 查找所有名为nginx的进程PID 
pgrep -u root sshd # 查找root用户的sshd进程 
pgrep -f "python3 app.py" # 匹配完整命令行的进程

pstree

功能‌:以树状结构显示进程间的父子关系。
语法‌:

pstree [选项] [PID/用户] 
核心选项
选项功能
-p显示PID
-u显示进程所属用户
-a显示命令行参数
-h高亮当前进程及其祖先
示例
pstree -p 1000 # 显示PID为1000的进程树 
pstree -u root # 显示root用户的进程树 
pstree -ap # 显示所有进程的树状结构及参数

命令对比表格

命令核心用途实时监控输出格式适用场景
ps静态查看进程快照文本/列表快速查看进程状态或过滤
top动态监控进程及资源交互式界面实时分析系统负载或资源占用
pgrep根据名称快速查找PID文本/PID列表结合kill终止进程或批量操作
pstree可视化进程父子关系树状结构分析进程依赖或服务启动链

控制进程 

一、进程控制核心机制

1. 进程创建
  • fork()函数
    • 功能‌:通过复制父进程创建子进程,子进程与父进程共享代码段,数据段使用‌写时拷贝‌技术‌。
    • 返回值‌:父进程返回子进程PID,子进程返回0,失败返回-1‌。
    • 示例‌:
      pid_t pid = fork(); if (pid == 0) { printf("子进程PID: %d\n", getpid()); } else { printf("父进程PID: %d\n", getpid()); } 
2. 进程终止
  • exit()_exit()
    • 功能‌:终止进程执行,exit()刷新缓冲区并调用退出处理函数,_exit()直接终止‌。
    • 示例‌:
      exit(0); // 正常终止,清理资源 _exit(1); // 立即终止,不清理缓冲区 
3. 进程等待
  • waitpid()函数
    • 功能‌:父进程等待指定子进程结束,并获取其退出状态(避免僵尸进程)‌。
    • 参数‌:
      • pid:子进程PID(-1表示任意子进程)
      • optionsWNOHANG(非阻塞等待)‌
    • 示例‌:
      int status; waitpid(pid, &status, 0); // 阻塞等待子进程结束 
4. 进程替换
  • exec函数族
    • 功能‌:替换当前进程映像,执行新程序(如execlexecvp)‌。
    • 特点‌:替换后原进程代码段被覆盖,仅保留PID‌。
    • 示例‌:
      execl("/bin/ls", "ls", "-l", NULL); // 执行`ls -l`

二、进程控制命令与工具

命令/函数功能关键参数/用法示例
kill终止进程kill -SIG [PID]kill -9 1234(强制终止PID 1234)
pkill按进程名终止pkill -SIG 进程名pkill -HUP nginx(重载nginx配置)
ps查看进程快照ps aux(显示所有进程及资源占用)ps -ef | grep sshd(过滤sshd进程)
top实时监控进程资源top -p [PID](监控指定进程)top -u root(仅显示root用户进程)
pstree树状显示进程父子关系pstree -p(显示PID)pstree -ap | grep java(追踪Java进程)

‌三、关键场景与操作建议

  1. 创建子进程并等待退出

    pid_t pid = fork(); 
    if (pid == 0) { 
            execl("/bin/ls", "ls", NULL); // 子进程执行`ls` 
    } 
    else {
            waitpid(pid, NULL, 0); // 父进程等待子进程结束‌:ml-citation{ref="1,5" data="citationList"} 
    } 
  2. 批量终止进程

    pkill -TERM python # 终止所有Python进程‌:ml-citation{ref="8" data="citationList"} 
  3. 分析进程依赖链

    pstree -p 1 # 显示init进程(PID 1)的子进程树‌:ml-citation{ref="4,7" data="citationList"}

 crontab周期性任务设置

一、crontab 基础

1. 核心概念
  • cron‌:Linux系统自带的定时任务守护进程,用于按计划执行命令或脚本。
  • crontab‌:用户级定时任务配置文件,每个用户可独立管理自己的任务。
2. 常用命令
命令功能说明示例
crontab -e编辑当前用户的crontab文件crontab -e
crontab -l列出当前用户的cron任务crontab -l
crontab -r删除当前用户的所有cron任务(慎用!)crontab -r
crontab -u user -e编辑指定用户的crontab(需root权限)crontab -u www-data -e

二、crontab 时间字段解析

1. 时间格式
* * * * * command_to_execute 
│ │ │ │ │ 
│ │ │ │ └── 星期几(0-6, 0=周日) 
│ │ │ └──── 月份(1-12) 
│ │ └────── 日期(1-31) 
│ └──────── 小时(0-23) 
└────────── 分钟(0-59) 
2. 特殊符号
符号说明示例
*匹配所有值* * * * * → 每分钟执行
,指定多个值0,15,30 * * * * → 每小时的0、15、30分执行
-指定范围0 9-18 * * * → 每天9点到18点整点执行
/间隔频率*/5 * * * * → 每5分钟执行一次
L月份最后一天或星期最后一天(仅部分系统支持)0 0 L * * → 每月最后一天执行
W最近工作日(仅日期字段)0 0 15W * * → 每月15日最近的工作日执行

三、常用任务示例

任务描述crontab表达式说明
每天凌晨3点执行备份脚本0 3 * * * /path/to/backup.sh固定时间任务
每5分钟检查一次服务状态*/5 * * * * /usr/bin/systemctl check nginx间隔执行
每周一上午9点清理日志0 9 * * 1 /bin/rm -rf /logs/*.log按星期执行(0=周日,1=周一)
每月1日和15日中午12点重启服务0 12 1,15 * * /sbin/reboot多日期任务
每小时的第30分钟执行30 * * * * /path/to/script固定分钟任务

四、高级用法

1. 环境变量设置

在crontab文件顶部定义环境变量,确保任务执行环境正确:

SHELL=/bin/bash 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 
MAILTO=user@example.com # 任务执行结果发送到指定邮箱 
2. 输出重定向

默认情况下,cron任务的输出会通过邮件发送给用户。可手动重定向:

* * * * * /path/to/command >/dev/null 2>&1 # 丢弃所有输出 
* * * * * /path/to/command >> /var/log/cron.log 2>&1 # 输出追加到日志文件 
3. 特殊快捷语法
字符串等效表达式说明
@reboot-系统启动时执行一次
@yearly0 0 1 1 *每年1月1日0点执行
@monthly0 0 1 * *每月1日0点执行
@weekly0 0 * * 0每周日0点执行
@daily0 0 * * *每天0点执行
@hourly0 * * * *每小时0分执行

‌五、示例场景‌

1. 数据库每日备份
0 2 * * * /usr/bin/mysqldump -u root -pPASSWORD dbname > /backups/db_$(date +\%Y\%m\%d).sql 
2. 每周清理临时文件
0 0 * * 0 /bin/rm -rf /tmp/* # 每周日0点清理/tmp目录 
3. 系统启动时启动服务
@reboot /usr/sbin/service nginx start

总结表格

分类关键点示例/命令
编辑任务使用crontab -e编辑用户任务crontab -e
时间格式分 时 日 月 周 + 命令0 3 * * * /backup.sh
特殊符号*(所有)、,(多值)、-(范围)、/(间隔)*/10 * * * * → 每10分钟执行
环境变量在crontab文件顶部定义PATHMAILTOPATH=/usr/local/bin:/usr/bin
输出处理重定向输出到文件或丢弃>/dev/null 2>&1
快捷语法@daily@reboot等替代复杂时间设置@daily /scripts/cleanup.sh
日志排查查看/var/log/cronjournalctl -u crontail -f /var/log/cron
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值