- 程序:没有运行的代码就是程序
- 进程:运行的代码就是进程
- 线程:程序的副本,复制了进程的部分代码
HTTP---进程---线程
父进程与子进程:
- systemd=父进程先启动------->子进程 父进程给子进程分配资源
- 结束运行:子进程先结束---->父进程要收回分配给子进程的资源,父进程才会终止
- 父进程先结束----->子进程还在----->子进程变成僵尸进程
查看进程
ps命令——静态查看进程
命令格式
ps [选项]...
-
a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将示系统中所有的进程信息。
-
u:使用以用户为主的格式输出进程信息。
-
x:显示当前用户在所有终端下的进程信息。
-
-e:显示系统内的所有进程信息。
-
-l:使用长(Long)格式显示进程信息。
-
-f:使用完整的(Full)格式显示进程信
ps -elf
[root@localhost ~]# ps -elf
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 48437 ep_pol 13:36 ? 00:00:01 /usr/
1 S root 2 0 0 80 0 - 0 kthrea 13:36 ? 00:00:00 [kthr
1 S root 3 2 0 80 0 - 0 smpboo 13:36 ? 00:00:00 [ksof
1 S root 5 2 0 60 -20 - 0 worker 13:36 ? 00:00:00 [kwor
1 S root 7 2 0 -40 - - 0 smpboo 13:36 ? 00:00:00 [migr
1 S root 8 2 0 80 0 - 0 rcu_gp 13:36 ? 00:00:00 [rcu_
1 S root 9 2 0 80 0 - 0 rcu_gp 13:36 ? 00:00:00 [rcu_
5 S root 10 2 0 -40 - - 0 smpboo 13:36 ? 00:00:00 [watc
5 S root 11 2 0 -40 - - 0 smpboo 13:36 ? 00:00:00 [watc
F ----进程标志,说明进程的权限,常见的标志有两个: 1:进程可以被复制,但是不能被执行; 4:进程使用超级用户权限;
S ----进程状态。s:休眠状态的进程 R:正在运行的进程 D:不可选中的休眠状态 Z:僵尸进程 T:停止状态
UID ----运行此进程的用户的 ID;
PID ----进程的 ID;
PPID ----父进程的 ID;
C ----该进程的 CPU 使用率,单位是百分比;
PRI ----进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;系统定义不可以人为修改
NI ----进程的优先级,数值越小,该进程越早被执行;可以人为修改
ADDR ----该进程在内存的哪个位置;
SZ ----该进程占用多大内存;
WCHAN ----该进程是否运行。"-"代表正在运行;
TTY ----该进程由哪个终端产生;
TIME ----该进程占用 CPU 的运算时间,注意不是系统时间
CMD ----产生此进程的命令名;
ps -aux
[root@localhost ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 193748 6860 ? Ss 13:36 0:01 /usr/lib/systemd/systemd --switched-
root 2 0.0 0.0 0 0 ? S 13:36 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 13:36 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 13:36 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 13:36 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 13:36 0:00 [rcu_bh]
USER ----该进程是由哪个用户产生的。
PID ----进程的 ID。
%CPU ----该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
%MEM ----该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
VSZ ----该进程占用虚拟内存的大小,单位为 KB。
RSS ----该进程占用实际物理内存的大小
TTY ----该进程是在哪个终端运行的。
STAT ----进程状态。常见的状态有以下几种: -S:该进程处于睡眠状态,可被唤醒。 -s:包含子进程。 -l:多线程(小写 L)。
START ----该进程的启动时间。
TIME ----该进程占用 CPU 的运算时间,注意不是系统时间。
COMMAND ----产生此进程的命令名。
pstree命令——以树形结构列出进程信息
命令格式:
pstree [选项] [ PID | USER ]
- -p:显示PID。
- -u:显示进程的用户名称。
top命令——动态查看进程
- -p 进程PID:仅查看指定 ID 的进程。
- -H 查看所有进程
pgrep命令——查询进程的PID
- -a:显示进程名和PID
- -c:仅显示匹配进程数量
- -f:匹配进程名及参数
- -l:显示进程名
- -n:仅显示最新的匹配进程
- -u:仅显示匹配进程的所有者
job命令————列出后台作业的状态信息
- -l:显示所有作业的PID
- -p:显示所有专业进程组ID
- -n:仅显示最近的作业
- -r:仅显示正在运行的作业
- -s:仅显示已停止的作业
kill命令——————结束进程
kill 命令执行原理:kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。
命令格式:
kill [信号] PID
kill -9 PID ---强制杀死进程
进程的前后台调度
命令介绍:
& //在命令行尾加入“&”符号,把命令放到后台执行。
Ctrl+Z 组合键 //将当前进程挂起,即调入后台并停止执行。
jobs //查看处于后台的任务列表。
[root@localhost ~]# jobs
[1]+ 已停止 vim ky29
[root@localhost ~]# sleep 700 &
[2] 3726
[root@localhost ~]# vim 111
[3]+ 已停止 vim 111
[root@localhost ~]# jobs
[1]- 已停止 vim ky29
[2] 运行中 sleep 700 &
[3]+ 已停止 vim 111
计划任务管理
crontab周期性任务设置
crontab -e:编辑计划任务。
crontab -l:查看计划任务。
时间格式:分、时、日、月、周几。
*表示任意。
,表示多个不连续的时间点。
-表示连续的时间范围。
/表示频率。