1、关于CPU与线程

1.1 简单理解进程与线程

  • 进程:计算机执行的一个命令或者程序
  • 线程:一般来说一个进程对应一个线程。但是如果进程任务可以分为若干独立子任务独立运行时,可以调用多线程,加快分析速度。

1.2 cpu与核数

  • CPU(Central Processing Unit)中央处理器,属于硬件。一般window笔记本电脑有一个CPU(physical cpu)
電腦CPU多核數和多線程的區別對比!4核8線程和6核6線程哪個好? - 壹讀
  • 核心(core),又称为内核。一个CPU芯片可以物理技术上集成多个内核,每个内核可以独立运行一个线程,最大化利用CPU资源。
  • 逻辑CPU数,是指通过虚拟化技术每个内核划分为两个虚拟(logical)CPU内核,可以理解为每个内核的超线程数,一般为2。目前window/linux系统都支持。
  • 总逻辑CPU数=物理CPU数 × 每个CPU芯片上的集成内核数 × 每个内核的超线程数

CPU、核心数、线程数、运行内存、超线程理解_郝少的博客-CSDN博客_超线程数

1.3 查看系统CPU属性

1.3.1 Windows系统查看CPU属性

image-20220514115805540

1.3.2 Linux系统查看CPU属性

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
## (1)查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

## (2)查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq

## (3)查看总逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l

## (4)查看每个逻辑CPU的属性
cat /proc/cpuinfo

1.4 CPU与RAM内存

当CPU的运算速度很快,需要执行一个命令时,需要调用储存在硬盘的程序数据进行交互。

硬盘是计算机的外部储存器,容量大,不易丢失;但是数据读取太慢;

内存(RAM, Random Access Memory)作为衔接二者之间的桥梁,一方面储存空间少于硬盘(具体看内存条的性能);但一方面文件读取速度快于硬盘,从而提高CPU的计算效率。断电时,会清空内存数据;而硬盘数据不受影响。

淺談記憶體的功用 CPU、内存、硬盘的关系及数据处理过程_菜鸟和大白谁厉害的博客-CSDN博客_cpu 内存硬盘之间的关系

2、进程管理

2.1 ps:查看进程状态

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
ps au                   #显示通过终端启动的程序
ps aux                  #显示所有进程,包括后台启动的程序
ps aux | grep username  #查找特定行模式的进程状态

## USER : 执行进程的用户
## PID  : 进程ID
## %CPU, %MEM : 进程的CPU以及内存占有率
## TTY, TIME, TIME : 进程在哪个终端,于哪个时间被启动的,已消耗CPU多长时间
## COMMAND : 具体的进程命令
## STAT : 表示当前命令的状态,常见的有 R--运行,S--睡眠,T--终止....

image-20220514130033692

2.2 top:实时监控进程信息

1
2
3
4
5
6
7
8
9
top
top -d 3       #每隔3秒刷新一次进程状态
top -u usrname #指定用户的进程
top -c         #显示全命令
# 快捷键:shift + P  将进程按CPU占有率降序排列(默认)
# 快捷键:shift + M  将进程按内存占有率降序排列

## 上半部分显示系统的CPU与内存状态,可重点关注 第三行 99.8 id表示空闲的CPU;第四行 221232.0 free 表示空闲的内存
## 下半部分显示进程状态信息,每列字段含义基本同ps

image-20220514131133773

2.3 kill:终止进程。

  • 需要知道进程的PID,可通过ps或者top命令获得。
1
2
3
4
kill PID       #默认为 -15, 正常杀死进程
kill PID1 PID2 #杀死多个进程
kill -9 PID    #强制杀死进程
kill -1 PID    #重新加载进程

3、后台运行进程

  • 快捷键 Ctrl + C终止前台进程;Ctrl + Z 暂停前台进程,并置于后台

  • <command> & : 在当前终端的后台执行命令。退出该终端后,后台进程也随之终止。

  • nohup <command> & : 将在linux后台不挂断的执行命令。即使退出终端,也不影响该进程。

  • jobs : 查看当前终端的后台运行的进程,以及JobID

  • fg <JobID> : 将后台进程放到前台

  • bg <JobID> : 在后台运行后台暂停的进程

3.1 终端后台执行命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
##(1) 将命令直接放在后台开始执行
sleep 100 &
#[1] 1916159
##如上仅返回进程PID

jobs
# [1]+  Running                 sleep 100 &

##(2) 将正在前台运行的命令放到后台运行
sleep 100
#按 Ctrl + Z, 然后执行下述bg命令(以jobid为1示例)
bg 1

3.2 不挂断地后台执行

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
## (1)nohub <command> & 命令组合
nohup sleep 300 &
#默认将命令的日志文件输出至当前路径的nohup.out文件中

#如下可将命令的日志文件输出到指定文件
nohup sleep 300  1> command.log 2>&1 &

## (2)将正在运行的命令转为不挂断地后台执行
sleep 300
#按 Ctrl + Z, 然后执行下述bg命令(以jobid为1示例)
bg 1
disown %1

jobs
ps aux | grep 'sleep'