进程和计划任务任务管理
1、程序和进程的关系
(1)程序
- 保存在硬盘、光盘等介质中的可执行代码和数据
- 静态保存的代码
(2)进程
- 在 CPU 及内存中运行的程序代码
- 动态执行的代码
- 父、子进程:每一个进程可以创建一个或多个进程
2、静态查看进程信息
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.3 56640 6672 ? Ss 00:22 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 24
root 2 0.0 0.0 0 0 ? S 00:22 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 00:22 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 00:22 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 00:22 0:00 [migration/0].
(1)
- USER:启动该进程的用户账号的名称。
- PID:该进程在系统中的PID号,在当前系统中是唯一的。
- %CPU: CPU占用的百分比。
- %MEM:内存占用的百分比。
- VSZ:占用虚拟内存swap空间的大小。
- RSS:占用常驻内存物理内存的大小。
- TTY:表明该进程在哪个终端上运行。“?”表示未知或不需要终端。
- STAT:显示了进程当前的状态:D:不可中断睡眠、S:可中断的睡眠、R:就绪或运行状态、T:中止状态、Z: 僵死状态、<:高优先级进程、N:低优先级进程、+:前台进程组中的进程、|:多线程的进程、s:会话进程的首进程
- START:启动该进程的时间。
- TIME:该进程占用的CPU时间。
- COMMAND:启动该进程的命令的名称。
(2)stat状态
- S:不可中断睡眠
- R:可中断睡眠
- Z:就绪或运行状态
- <:高级有限进程
- N:低级优先进程
- +:前台进程组中的进程
- T:中止状态
- Z:僵死状态
3、动态查看进程
top - 00:51:38 up 28 min, 1 user, load average: 0.00, 0.01, 0.03
Tasks: 399 total, 2 running, 397 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2035356 total, 1760020 free, 134140 used, 141196 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1751724 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
722 root 20 0 0 0 0 S 0.3 0.0 0:00.10 xfsaild/dm-0
1 root 20 0 56640 6672 3888 S 0.0 0.3 0:01.31 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.01 ksoftirqd/0
- top - 16:58:24 【当前系统时间】
- 1:54 【系统已经运行 1 小时 54 分钟】
- 2 users 【当前登录 2 个用户】
- load average:0.00,0.00,0.00 【系统平均负载:1 分钟的,5 分钟的,15 分钟的】
- Tasks:108 total 【任务:108 个总进程】
- 1 running 【1 个进程正在运行】
- 107 sleeping 【107 个进程睡眠】
- 0 stoppd 【0 个进程停止】
- 0 zombie 【0 个僵尸进程(冻结进程)】
- Cpu(s): 0.0%us 【用户控件占用 CPU 百分比】
- 0.0%sy 【内核空间占用 CPU 百分比】
- 0.0%ni 【用户进程控件内改变过优先级的进程占用 CPU 百分比】
- 100.0% 【空闲 CPU 百分比】
- 0.0%wa 【等待输入输出的 CPU 时间百分比】
- 0.0% hi 【】
- 0.0%si 【】
- Men: 1012352k total 【物理内存总量 1012352k】
- 465816k used 【使用了 465816k 的物理内存】
- 546536k free 【空闲 546536k 的物理内存】
- 61064k buffe 【61064k 用作内核缓存】
- Swap: 2031608k total 【交换分区总量 2031608k】
- 0k used 【没有使用交换分区】
- 2031608k free 【空闲的交换分区总量 2031608k】
- 267580k cache 【缓冲的交换分区总量 267580k】
- PID:进程号
- USER:进程所有者的用户名
- PR:优先级
- NI:nice 值。负值表示高优先级,正值表示低优先级
- VIRT:进程使用的虚拟内存总量,单位 kb
- RES:进程使用的、未被换出的物理内存大小,单位 kb
- SHR:共享内存大小,单位 kb
- S:进程状态
- %CPU:上次更新到现在的 CPU 时间占用百分比
- %MEM:进程使用的物理内存百分比
- TIME+:进程使用的 CPU 时间总计,单位 1/100 秒
- COMMAND:命令
4、进程的启动方式
(1)手工启动:
- 前台启动:用户输入命令,直接执行程序
- 后台启动:在命令行尾加入“&”符号
(2)进程的前后台调度
- Ctrl+Z 将当前进程挂起,即调入后台并停止执行
- jobs 命令 查看处于后台的任务列表,加-l 同时显示 PID 号
- fg 命令 将后台进程恢复到前台运行,可指定任务程序号
- bg 命令 将后台暂停的进程调至后台运行
(4)终止进程的运行
- Ctrl+C 中断正在执行的命令
- kill、killall 命令
- kill 用于终止指定 PID 号的进程
- killall 用于终止指定名称的所有进程
- -9 选项用于强制终止
5、调度启动
(1)使用 at 命令,设置一次性任务计划
- 服务脚本:/etc/init.d/atd
- 设置格式:at [HH:MM] [yyyy-mm-dd] 设置当天的任务计划可不加日期
- 基本操作:
- Ctrl+D 保存退出
- atq 查询现有的一次性任务计划
- atrm [任务序号] 删除第几项任务
(2)使用 crontab 命令,设置周期性计划任务
- 脚本名称:/etc/init.d/crond
- 主要配置文件:
- 全局配置文件:/etc/crontab
- 管理 cron 计划任务
- 编辑:crontab -e [-u 用户名]
- 查看:crontab -l [-u 用户名]
- 删除:crontab -r [-u 用户名]
- 时间数值的特殊表示方法
- * 表示该范围内的任意时间
- , 表示间隔的多个不连续时间点
- - 表示一个连续的时间范围
- / 指定间隔的时间频率