Linux 进程、作业控制、定时任务 完整版整理笔记

Linux 进程、作业控制、定时任务 完整版整理笔记 一、程序、进程、线程1. 基础概念程序存放在硬盘中、具备执行功能的静态文件不占用运行资源。 示例/usr/local/apache/bin/httpd、/bin/ls进程程序运行后的形态是操作系统分配CPU、内存、硬盘、网络、GPU等资源的基本单位可理解为动态资源池。进程之间相互隔离彼此不能直接访问资源一个程序可以启动出多个进程。线程真正完成程序功能的执行单元。同一个进程内的所有线程共享进程资源通信效率高进程是线程的集合一个进程至少包含 1 个主线程每个进程最多可以有 65535 个线程。2. 进程分类按线程特性划分多线程程序进程内创建大量线程处理任务。优点资源利用率高、线程间通信效率高代表Nginx、Java 程序多进程程序依靠创建子进程处理任务线程数量少。优点进程相互隔离单个子进程故障不影响整体稳定性更强代表Apache httpd3. 按运行停留时间划分普通进程任务执行完毕自动退出生命周期短。 实操案例bash运行ls /etc守护进程Daemon常驻系统后台运行通常监听服务器端口当客户端请求到达对应端口时调用程序响应请求。特点脱离终端长期运行常见服务httpd、sshd、crond、network。4. 按父子关系划分父进程负责创建、管理子进程子进程结束后负责回收子进程资源。子进程由父进程创建主要负责处理用户请求与具体业务。僵尸进程子进程先结束父进程未及时回收其资源该子进程就变为僵尸进程。状态标识Z危害占用进程 ID大量僵尸进程会导致系统无法创建新进程。纠正原笔记错误父进程先退出的进程称为孤儿进程并非僵尸进程。5. 进程状态标识必记表格状态码状态名称说明R运行态正在使用 CPU 运行或排队等待 CPU 调度S休眠态可中断进程暂时暂停可被信号唤醒多数进程常态D不可中断休眠等待硬件 I/O 资源无法被普通信号终止Z僵尸进程子进程已退出父进程未回收资源T停止态进程被挂起、暂停运行二、系统平均负载1. 概念平均负载是系统中运行态 (R) 不可中断态 (D)进程数量的统计平均值系统默认统计三组数据1 分钟、5 分钟、15 分钟负载反映系统繁忙程度。2. 核心规则负载高低和CPU 核心数强相关单核 CPU负载值等于 1CPU 满载大于 1系统过载多核 CPU负载值接近 CPU 核心数属于正常满载趋势判断1 分钟负载远大于 15 分钟 → 系统压力突发上涨三组数值接近 → 负载长期平稳。3. 查看平均负载命令 案例bash运行# 1. uptime最简查看仅展示负载 uptime # 2. w查看登录用户 系统负载 w # 3. top动态监控首行包含负载信息 top三、查看进程命令1. ps 命令静态快照不自动刷新常用参数组合及用法ps aux查看所有用户的全部进程展示 CPU、内存、PID、进程状态等完整信息。bash运行ps aux # 过滤指定进程示例查看httpd进程 ps aux | grep httpdps -elf侧重查看父子进程关系、进程优先级。bash运行ps -elf | grep httpdps -eLf详细查看进程内的线程数量。bash运行ps -eLf | grep httpd关键字段ps auxUSER进程运行用户降权场景重点查看PID进程唯一编号STAT进程状态R/S/D/Z/T2. top 命令动态实时监控默认 3 秒刷新一次基础参数 案例bash运行# 直接运行默认动态刷新 top # -d 指定刷新间隔单位秒每2秒刷新一次 top -d 2 # -n 指定总刷新次数刷新5次后自动退出 top -n 5 # -b 批处理模式配合-n输出全部内容 top -b -n 2 # -u 仅查看指定用户的进程 top -u huangjie # -p 仅监控指定PID的进程 top -p 1234运行中的交互快捷键按1拆分展示每一颗 CPU 核心的占用率按M按内存使用率从高到低排序按P按 CPU 使用率从高到低排序按q退出 top四、前后台作业控制1. 符号将前台进程直接放入后台运行关闭终端后进程会终止。 案例bash运行# 后台运行睡眠程序持续100秒 sleep 100 2. nohup 命令作用让进程脱离终端运行关闭远程连接 / 当前终端进程依然后台执行。 默认日志输出到nohup.out。 语法与案例bash运行# 基础用法日志默认存入 nohup.out nohup sleep 300 # 进阶用法自定义日志文件 nohup /usr/local/apache/bin/apachectl start /tmp/httpd.log 3. 后台任务管理指令jobs -l查看当前终端下所有后台任务-l参数额外显示进程 PID。bash运行jobs -lCtrl Z将当前前台进程挂起暂停移入后台。 实操执行sleep 200→ 按下CtrlZ。bg 任务号让后台暂停的进程恢复运行。bash运行# 先查看任务编号 jobs # 恢复编号为1的后台任务 bg 1fg 任务号将后台进程调回前台运行。bash运行fg 1五、终止进程命令1. kill按 PID 终止进程语法kill [信号] PID默认信号 15优雅停止允许进程保存数据、正常退出信号-9强制终止进程慎用易造成数据丢失。案例bash运行# 优雅停止 PID 为1234的进程 kill 1234 # 强制杀死进程 kill -9 12342. killall按进程名终止所有同名进程无需查询 PID一次性杀死所有同名进程。补充CentOS7 最小化安装需先安装工具yum install -y psmisc案例bash运行# 停止所有 httpd 进程 killall httpd # 强制杀死所有 httpd 进程 killall -9 httpd3. pkill功能更强支持进程名、终端名bash运行# 按进程名强制终止用法同 killall pkill -9 httpd # -t 按终端名终止进程示例踢出 pts/0 终端 pkill -9 -t pts/0六、定时任务分类一次性定时任务at、周期性定时任务crond一一次性定时任务 at1. 环境准备at工具需手动安装并启动服务bash运行# 安装软件 yum install -y at # 启动服务并设置开机自启 systemctl start atd systemctl enable atd2. 常用时间格式now 5 minutes5 分钟后执行now 1 hours1 小时后执行10:30今日 10:30 执行16:00 tomorrow明日 16:00 执行3. 完整实操案例bash运行# 进入定时任务编辑模式5分钟后创建文件并写入内容 at now 5 minutes # 输入执行命令 touch /tmp/test.txt echo at任务执行成功 /tmp/test.txt # 按下 CtrlD 提交任务4. at 任务管理命令bash运行# 查询所有一次性定时任务等价 at -l atq # 查看指定任务详情任务号从 atq 获取 at -c 任务号 # 删除指定任务等价 at -d atrm 任务号二周期性定时任务 crond系统自带守护进程crond循环重复执行任务企业常用。1. 核心文件与路径服务名crond服务状态查看systemctl status crond运行日志排错用/var/log/cron全局配置文件/etc/crontab用户定时任务存放目录/var/spool/cron/每个用户独立文件邮件相关用户邮件目录/var/spool/mail/用户名邮件发送失败临时文件/var/spool/postfix/maildrop/2. 时间格式五段式必背plaintext分 时 日 月 周 执行命令 * * * * * command取值范围分0~59时0~23日1~31月1~12周0~70 和 7 均代表周日3. 时间符号含义表格符号作用*代表「每一个时间单位」,分隔多个离散时间点或者-表示连续的时间范围/n表示间隔频率每隔 n 个单位执行一次4. crontab 操作命令bash运行# 编辑/创建当前用户定时任务 crontab -e # 查看当前用户定时任务 crontab -l # 清空当前用户所有定时任务谨慎使用 crontab -r # root 查看指定用户的定时任务 crontab -l -u 用户名5. 综合实操案例bash运行# 1. 每分钟向日志文件写入内容 * * * * * echo 每分钟测试 /tmp/1.log # 2. 每小时的30分、50分执行文件拷贝 30,50 * * * * cp /etc/passwd /tmp/ # 3. 每小时 10~20分 每分钟执行任务 10-20 * * * * date /tmp/time.log # 4. 每隔30分钟重启Apache */30 * * * * /usr/local/apache/bin/apachectl restart # 5. 每天凌晨2点执行脚本 0 2 * * * /root/test.sh # 6. 每周日 23点30分 清理临时日志 30 23 * * 0 rm -rf /tmp/*.log