一、程序和进程
1.1 什么是程序
-
是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具
-
用于描述进程要完成的功能,是控制进程执行的指令集
1.2 什么是进程
进程是运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位,
-
进程ID(Process ID,PID)号码被用来标记各个进程
-
UID、GID语境决定对文件系统的存取和访问权限
-
通常从执行进程的用户来继承
-
存在生命周期
-
都由其父进程创建
CentOS6:init第一个进程,CentOS7 :systemd第一个进程
进程:都由其父进程创建,fork(),父子关系,CoW:Copy On Write 写实更新,有数据写入子进程需要新的内存空间
1.3 进程具有的特征
-
动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
-
并发性:任何进程都可以同其他进程一起并发执行;
-
独立性:进程是系统进行资源分配和调度的一个独立单位;
-
结构性:进程由程序、数据和进程控制块三部分组成。
1.4 进程更多的状态
-
运行态:running
-
就绪态:ready
-
睡眠态:分为两种,可中断:interruptable,不可中断:uninterruptable
-
停止态:stopped,暂停于内存,但不会被调度,除非手动启动
-
僵死态:zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵死态 的子进程
二、线程
2.1 什么是线程
线程(Thread)是在一个进程内执行的最小的可调度单位。在操作系统中,进程是程序的执行实例,而线程是进程的子执行单元。线程共享同一进程的资源,包括内存空间、文件句柄和其他系统资源,因此它们可以更高效地协同工作。
2.2 线程概念和特点
-
多线程:一个进程可以包含多个线程,这些线程可以并发执行,共享同一进程的数据和资源。多线程编程允许程序更有效地利用多核处理器和提高并发性。
-
线程调度:线程由操作系统的调度器管理,根据优先级和时间片轮转的方式来分配 CPU 时间。线程调度决定了每个线程执行的时间片和顺序。
-
线程同步:多个线程访问共享数据时,可能会导致数据竞争和不一致性。线程同步机制如互斥锁、信号量和条件变量用于协调线程的访问,以避免竞争条件。
-
用户线程 vs. 内核线程:有两种类型的线程,即用户线程和内核线程。用户线程由用户级线程库(例如,POSIX 线程库)管理,而内核线程由操作系统内核管理。内核线程更重量级,但可以获得更好的并发性能。
-
线程优先级:线程可以有不同的优先级,这影响了它们在调度中的执行顺序。高优先级线程可能在低优先级线程之前获得更多的 CPU 时间。
-
线程状态:线程可以处于不同的状态,如运行、就绪、阻塞等。线程的状态会随着其执行和系统调度而变化。
2.3 查看进程中的线程
#这里用nginx程序为例,启动nginx
pstree -p |grep nginx #查看nginx的pid号
prtstat [进程号] #查看进程详细信息
方法二:
cd /proc/pid文件/ #进入到/proc下找到相应软件的pid号
cat /status #查看这个程序的详细信息
三、进程管理相关命令
3.1 ps命令
ps命令用于显示当前系统中运行的进程信息。它允许你查看系统中各个进程的状态、资源使用情况和其他详细信息。ps命令非常有用,特别是在诊断问题、监视系统性能或管理进程时。
ps
#显示当前终端中的进程
ps a
#看到所有
ps ax
#终端有关或无关的进程
ps aux
#查看用户有关等详细信息
3.2 pidof命令
pidof nginx #查看nginx的pid号
3.3 pstree命令进程树
pstree |grep nginx
选项
-p #显示pid号
3.4 free
free命令用于显示系统内存使用情况。它提供了关于系统内存的各种统计信息,包括已用内存、空闲内存、缓存和交换空间等。free命令通常用于监视系统的内存使用,以便诊断性能问题或确定系统是否需要更多的内存。
free -h #人性化显示内存信息
四、Linux五大性能
在Linux操作系统中,性能是一个非常重要的方面,涉及到系统的效率、响应时间和资源利用率。以下是 Linux 系统中五个重要的性能指标:
-
CPU 利用率(CPU Usage):CPU 利用率表示 CPU 的繁忙程度。你可以使用工具如
top
、htop
或sar
来监控系统的 CPU 利用率。高 CPU 利用率可能表明系统存在 CPU 密集型任务,需要更多的计算资源。 -
内存利用率(Memory Usage):内存利用率表示系统的内存消耗情况。
free
、top
和htop
可以用于监控内存利用率。高内存利用率可能导致系统变慢,甚至发生交换(swap)。 -
磁盘 I/O(Disk I/O):磁盘 I/O 表示磁盘读写操作的情况。你可以使用
iostat
、iotop
或sar
来监控磁盘 I/O。高磁盘 I/O 可能导致磁盘性能瓶颈,影响系统性能。 -
网络流量(Network Traffic):网络流量表示系统上的网络通信活动。
iftop
、nload
和sar
可用于监控网络流量。高网络流量可能导致网络瓶颈,影响系统的响应时间。 -
负载平均值(Load Average):负载平均值是一个三个数字的指标,通常分别代表了过去 1 分钟、5 分钟和15 分钟的系统负载。你可以使用
uptime
、top
或w
来查看负载平均值。高负载平均值表示系统负载高,可能需要更多的 CPU 和内存资源。
这些性能指标是监控和调优 Linux 系统性能的关键。了解这些性能指标并监控它们可以帮助你识别和解决系统性能问题,确保系统保持高效运行。同时,还可以使用工具如 vmstat
、sar
、nmon
等来深入分析和跟踪系统性能。
五、 启动方式和计划任务
5.1 将前台任务放到后台执行
dd if=/dev/zero of=/dev/null & #模拟实验,把dev下的zero复制到/dev/null &:在后台运行
jobs #查看后台运行的命令
fg+序号 #把后台命令调回前台
ctrl+z #调入后台并停止
bg 序号 #继续后台命令
设置crontab周期任务
crontab
-e 编辑一个定时任务
-u 选择用户
-l 查看计划任务
-r 删除
* * * * * 执行的操作
分:0-59
时:0-23
日:1-31
月:1-12
周:0-7
*分*时*日*月*周*
每周一23:30分在/opt下创建一个23:30/txt文件