进程管理
1、进程
程序的一次执行过程
资源分配和管理的基本单位
2、进程管理的内容:
① 监视进程:获取当前系统中各个进程的具体状态信息
② 调整进程运行优先级
③ 守护进程
监视进程
1.与进程有关的信息
PID(Process ID) 进程号
PPID(Parent ID) 父进程的PID号
USER/UID 执行该进程的用户名及其UID
TTY 启动该进程的终端
PRI(priority) 进程的优先级,数字越大表示优先级越低
NICE 进程的谦让度,表示进程对CPU时间要求的迫切程度
%CPU 进程占用的CPU比例
%MEM 进程占用的内存比例
TIME 进程实际占用CPU的总时间
STIME 进程开始执行的时间
ADDR 进程在内存中的地址
RSS 进程占用的内存大小(KB)
VSZ 进程占用的虚拟内存空间
CMD 启动进程的命令
STAT(state,可用S表示) 进程的状态
进程的状态
S 睡眠状态
W 进程没有驻留页(等待)
R 运行或者准备运行状态
I 空闲
Z 僵尸状态
D 不间断睡眠(挂起)
T 停止或者追踪
N 低优先级的任务
2.进程监视命令
ps 报告进程的相关信息
top 以实时的方式报告进程的相关信息
pstree 显示进程家族树的信息
lsof(list open files) 列出由某进程所打开的文件
ps(process status)命令
【功能】报告进程的相关信息。
【格式】ps [选项]
ps –el
-l 以长格式显示进程信息
-e 显示所有进程的信息(包含系统进程)
ps(process status)命令
【功能】报告进程的相关信息。
【格式】ps [选项]
ps -aux
-a 显示所有用户进程
-x 显示没有控制终端的进程
-u 显示用户名和启动时间等信息
top命令
【功能】以实时的方式报告进程的相关信息
【格式】top [选项]
-d 10 设定刷新进程信息的间隔时间(秒)
pstree命令
【功能】显示进程家族树的信息
【格式】 pstree [选项] [进程PID/用户名]
-p 显示每个进程的PID号。
-u 用户名 指定只显示属于该用户的进程
lsof(list open files)命令
【功能】列出由某进程所打开的文件
【格式】 lsof [选项] [文件或目录路径]
-p PID 列出由该进程所打开的所有文件
-u 用户名 列出某用户打开的所有文件
3.进程与信号
kill命令
【功能】向特定进程发送某种信号
【格式】kill [选项] [-信号名称/编号][PID列表]
-l 列出系统中定义的信号
Linux系统中部分常用的信号
调整进程的优先级
进程的优先级PRI(priority):是操作系统在进程调度时用于判决进程是否能够获得CPU的依据之一。
进程的优先级越高,则越能在竞争中胜出而获得CPU时间
以一个整数来表达的,数值越低,优先级越高
每个普通进程的优先级默认为80
进程的谦让度(NICE):表示进程对CPU时间要求的迫切程度。
取值范围为-20~19
进程的谦让度为负数时,反映进程对CPU 资源的要求较为迫切。
一般来说:优先级(PRI)与谦让度(NICE)存在如下的关系:
PRI(new)=PRI(old)+NICE
说明:
① root用户可以调整自己和其他用户的进程的nice值,且范围为-20~19;
② 普通用户只能调整自己进程的nice值,为了避免普通用户抢占系统资源,
nice的调整范围为0~19,而且只能往高调整;
nice命令
【功能】设定要启动的进程的谦让度
【格式】nice [选项] 命令
主要选项:
-n(nice) 数值 :设定谦让度,数值的范围 -20 ~ 19。
【实例】以root身份登陆系统,来给将启动的vi进程设定谦让度为-3
nice –n -3 vi&
ps –l
renice命令
【功能】调整已存在进程的nice值
【格式】renice -n 谦让度 进程pid号
【实例】将上一个例子中的vi进程的谦让度调整为3
renice -n 3 进程pid号
ps –l
守护进程与系统服务
进程的类型
系统进程 : 操作系统启动后,系统环境平台运行所加载的进程。
用户进程:与终端相关联,是由用户所执行的进程。
守护进程:在后台运行的进程,有时也称为服务。它没有屏幕提示,只是在后台等待用户或系统的请求
Linux系统中的部分系统服务及其守护进程如下:
Centos7/RHEL7版本:
systemd 进程 取代 init进程;
init进程的配置文件/etc/inittab保留,但内容改变,原来的功能也不再使用
targets取代runlevels
Centos7/RHEL7版本: runlevels被targets取代
获得默认启动的target: systemctl get-default
设置系统默认启动的target: systemctl set-default
【实例1】systemctl set-default multi-user.target //修改为多用户字符状态
【实例2】systemctl set-default graphical.target //修改为图形界面
centos7仍然保留使用静态的运行级别来构建不同的启动状态。
系统服务管理的常用命令:
runlevel命令
【功能】用于显示系统当前的和上一次的运行级别。如系统不存在上一次的运行级别,用N来代
替。
【格式】runlevel
init命令
【功能】转换服务的运行级别。
【格式】init[n] ; 其中格式中的n为0~6的级别,转换级别后系统立刻生效。
【例】
init 3 #切换到第3运行级
runlevel
init 0 #关机
init 6 #重新启动
init 5 #进入图形界面
systemctl系统服务管理
service命令
chkconfig命令
1、查看系统服务启动状态。其格式:
systemctl list-unit-files --type service
#列出所有服务,并且检查是否开机启动。
【实例1】搜索指定的服务(crond)在系统中是否开机启动。
systemctl list -unit-files --type service|grep crond
2、列出所有处于激活状态的服务。其格式为:
systemctl list-units --type service --all
其中:
UNIT:服务名 LOAD:服务是否已经被加载
ACTIVE:服务活动状态 SUB:服务进程状态
DESCRIPTION:服务的描述
3、服务状态控制。其格式:
systemctl [status/start/stop/restart/reload] name.service
【实例】
systemctl status crond.service //查看crond.service服务状态
systemctl stop crond.service //关闭crond.service服务
systemctl start crond.service //开启crond.service服务
4、服务开机自启控制。其格式:
systemctl [enable/disable] name.service
【实例】
设置crond.service 服务为开机自动启动。
systemctl enable crond.service
搜索crond服务在系统中是否开机启动。
systemctl list -unit-files --type service|grep crond
4、服务开机自启控制。其格式:
systemctl [enable/disable] name.service
作业、作业的查看和控制
作业的基本概念
作业(Job):
是指用户向系统提交并要求执行的一个任务。
一个作业对应于一个或多个进程。
【实例】作业与进程的关系。
ls –l /etc |more& #作业
前台与后台
前台作业:与用户进行交互操作。
后台作业:不接受终端的输入,但向终端输出执行结果。
前台和后台执行命令的语法格式:
command #前台执行
command & #后台执行
command
Ctrl+z键 #将目前的工作放到后台中暂停,挂起后的程序将不再做任何操作
相关命令
jobs命令
【功能】查看当前终端中的后台作业。
【格式】jobs [选项][作业号]
-l 列出详细的作业信息,包括构成作业的进程列表
-s 列出处于停止(暂停)状态的作业
-r 列出处于运行状态的作业
fg命令
【功能】让后台作业恢复到前台执行
【格式】fg 作业号
bg命令
【功能】让后台作业恢复在后台执行
【格式】bg 作业号
一次性作业: at作业
at命令
【功能】在指定时间(将来)一次性地执行作业。
【格式】at sometime
command list #作业列表
……
<ctrl>+d #组合键,保存并结束
绝对计时法:
小时:分钟 如 23:59
小时:分钟 月日年 MMDDYY 或 MM/DD/YY 或 DD.MM.YY
如2020年12月31日23时59分
23:59 12312020
at命令
【功能】在指定时间(将来)一次性地执行作业。
【格式】at [选项][时间]
相对计时法:
now+ 时间间隔:时间单位为minutes(分钟)、hours(时)、day(天),
week(星期)
如:now+2 minutes
直接计时法:
today(今天)、tomorrow(明天)、midnight(深夜)、noon(中午)、
teatime(下午4点)
【实例1】设置2分钟之后,删除user主目录下的newdir这个目录
at now +2 minutes
at > rm –rf /home/user/newdir
<ctrl>+d
【实例2】设置在2020年12月31日23:59分重启系统
at 23:59 12312020
at > reboot
<ctrl>+d
主要选项
-l 显示等待执行的作业
-d 作业号 删除指定的作业
-f 文件名 从指定文件而非标准输入设备获取将要执行的命令
at命令的配置文件:
/etc/at.allow:写在这个文件中的使用者才能使用at
/etc/at.deny:写在这个文件中的使用者则不能使用at
如果两个文件都不存在,那么只有root 可以使用at
系统可能会保留一个空的 /etc/at.deny 文件,意思是允许所有人使用 at 指
令的意思
周期性作业: cron作业
1.运行守护crond服务
systemctl status crond.service //查看crond.service服务的状态
systemctl start crond.service //开启crond.service服务
2. crontab命令
3.限定用户账号
/etc/cron.allow
/etc/cron.deny
crontab命令
【格式】crontab [-u user] filename
【功能】利用crontab命令去执行一个已经创建好的cron作业列表文件。
[-u user]是超级用户为指定的普通用户创建cron作业,没有指定用户则是
用户本身。
filename是已经编写好的cron作业列表文件,也称为crontab文件。
crontab文件的编写
crontab文件每列含义说明表:
① 每一行是一个作业
② 每列以Tab键制表位分隔,共六列
除了数字还有几个特殊的符号:
* : 所有的取值范围内的数字
“/”:每的意思, "*/5"表示每5个单位,
“-”:从某个数字到某个数字,
“,” :几个离散的数字
某系统管理员每月的日常工作内容如下:
1、每天上午9点和下午5点把当前在线人数存到num文件中;
利用vi创建cron作业列表文件,内容如下:
0 9,17 * * * who|wc –l > num
管理cron作业
【格式】crontab
l 列出用户的作业执行计划
-e 编辑用户的作业执行计划
-r 删除用户的作业执行计划
硬盘分区基础
在Linux中给系统增加一块硬盘的步骤:
1.分区 -> 2.格式化 -> 3.挂载 -> 4.使用
硬盘包括: IDE硬盘、SCSI硬盘、SATA硬盘
主分区: 1-4个
扩展分区:0-1个
逻辑分区:不限制
Linux系统中硬盘设备名
系统第一块IDE接口的硬盘称为/dev/hda,而它的第一个分区则称为/dev/hda1。
系统第二块IDE接口的硬盘称为/dev/hdb,而它的第三个分区则称为/dev/hdb3
hd:IDE硬盘
系统第一块IDE接口的硬盘称为/dev/hda,而它的第一个分区则称为/dev/hda1。
系统第二块IDE接口的硬盘称为/dev/hdb,而它的第三个分区则称为/dev/hdb3。
sd:SCSI SATA USB
系统第一块SCSI接口的硬盘称为/dev/sda,而它的第一个分区则称为/dev/sda1。
系统第二块SCSI接口的硬盘称为/dev/sdb,而它的第五个分区则称为/dev/sdb5。
光盘设备名:/dev/cdrom
fdisk命令
【功能】用来进行创建分区、删除分区、查看分区信息等基本操作。
【格式】fdisk [-l] [device]
查看现有磁盘设备系统分区情况:fdisk –l
对sdb硬盘创建分区等操作 :fdisk /dev/sdb
文件系统的创建与检查
文件系统的创建
格式化实际是指在物理存储设备上重新创建文件系统。
文件系统的创建工作主要有两个方面的内容:
①以设定的数据块大小来组织存储空间。
②建立索引结点(inode)表。
文件系统的创建工作主要有两个方面的内容:
1) 以设定的数据块大小来组织存储空间。
数据块是分配存储空间的最小单位。
数据块单位大小的设置,决定了文件系统所能支持的最大单一文件大小和最大文件系统总容量。
Linux对ext4文件系统默认取4096字节为数据块大小。
2) 建立索引结点(inode)表。
文件的成分:
数据:文件的实际内容
索引节点(i结点)
当格式化完毕后,一个文件系统所能使用的索引节点数量实际是固定的。
一个文件系统的索引节点的数量基本决定了它能支持创建的文件数量
Linux的目录
文件目录:用于标识系统中的文件及物理地址,提供给检索文件使用。
文件目录项 包含:文件名、i结点号。
mkfs命令
【功能】创建文件系统。
【格式】mkfs [选项] 设备文件名
【选项】mkfs是关于一组命令(mkfs.ext4,mkfs.vfat等)的统一调用入口,
因此以下选项只对于特定某种文件系统类型有效,具体可以查阅手册确定。
-b 数据块大小:指定基本数据块大小,(参数可以是1024、2048和4096,
单位为字节)。
-N 索引结点数量:设定创建的索引结点数量。
-c:在格式化之前检查设备是否有坏数据块。
-t 文件系统类型 :指定所要创建的文件系统类型。
mkfs支持的文件系统类型有ext2,ext3,ext4和vfat等。
比如windows7,系统默认或者推荐采用NTFS,但同时也支持FAT32文件系统。
Linux文件系统类型
ext3/ext4
xfs
swap
vfat
NFS
ISO9660
日志文件系统
proc
1. ext3/ext4
ext(extended)文件系统,译为扩展文件系统,ext3增加了文件系统日志记录功能,称为日志式文件系统;
RHEL 6.0所使用的版本是ext4文件系统;
2. XFS
是SGI开发的高级日志文件系统,它健壮、功能丰富,极具伸缩性,是centos7默认的文件系统,而centos6是采用的ext4文件系统。
3.swap
swap文件系统用于Linux的交换分区
在安装Linux操作系统的时候就应该创建交换分区,是系统运行所必须的分区
4.vfat
vfat 是Linux对DOS、Windows系统下FAT文件系统的一个统称,包括FAT16 和FAT32
5.NFS
NFS为网络文件系统,用于在UNIX/ Linux系统间通过网络进行文件共享
6.ISO9660
它是光盘所使用的标准文件系统
7.日志文件系统
8.proc
是作为一种伪文件系统出现的,它是一个建立在内存的特殊文件系统,挂载点为/proc,记录了各进程以及其他系统信息
df命令
【功能】用于查看所有当前被挂载的文件系统的信息。
【格式】df –[ahlT]
【选项】
a :显示所有文件系统的信息
h:是以最合适的容量单位显示
l:只显示本地文件系统的使用情况
T:输出每个文件系统的类型
df -hT
文件系统的检查
fsck命令
【功能】检测并修复文件系统中的错误。
【格式】fsck [选项] [设备文件名/挂载路径/设备标签/UUID]
【选项】
-A:根据/etc/fstab中的内容按顺序检查
-f:强制检查,即使文件系统已被标记为clean
【实例】fsck /dev/sdb1
磁盘文件系统的挂载与卸载
虚拟文件系统
虚拟文件系统相当于一个应用程序与各种存储设备及其文件系统之间的接口,用户在实际使用各种文件系统时并不需要关心文件系统的真实特性,而是以统一的接口访问数据。
挂载
用户在使用存储设备之前,必须将该设备中的文件系统接入到Linux的虚拟文件系统中,这个过程被称为挂载(mount) 。
挂载点
文件系统所挂载到的目录称为挂载点.除了磁盘分区,光盘,U盘等设备的使用也需要进行挂载。
使用命令手动挂载与卸载
mount命令
【功能】挂载文件系统。
【格式】mount [-t fs-type][-o option] 存储设备名 挂载路径
【实例】mount –t ext4 /dev/sdb1 /mnt/new
fs-type:文件系统类型
option:额外指定一些挂载方式
如:ro 只读方式挂载
rw 读写方式挂载
defaults,auto/noauto,usrquota,grpquota
umount命令
【功能】卸载文件系统。
【格式】umount [存储设备名/挂载路径]
【实例】umount /dev/sdb1
umount /mnt/new
系统启动时自动挂载
/ect/fstab文件
Linux将在系统初始化时需要挂载的文件系统的相关信息记录在/etc/fstab文件中。
tmpfs:临时文件的存储管理
devpts:用于伪终端管理
sysfs:用于设备管理
proc:用于进程管理
/etc/fstab文件中从左到右各列的含义:
① 设备名/标签/UUID
② 挂载点
③ 文件系统的类型
④ 挂载选项
⑤ 是否使用dump命令备份文件系统
⑥ 是否在系统启动时通过fsck命令检查文件系统
IP地址与网络接口
IP地址
IP地址是TCP/IP网络中,用于识别主机的唯一地址。
IPv4地址
IPv6地址
IPv4地址
32位二进制表示,每8位二进制数组成一组,共四组,中间以.间隔,即用形如x.x.x.x的格式表示。
x为8位二进制数转换而来的十进制数,其值为0~255
例如:192.168.2.5
这种格式的地址通常称为:点分十进制。
每个IP地址包含两个部分:网络号和主机号。
A~C类地址划分部分区间作为私有IP地址,下面这些地址并不使用在互联网上:
A类: 10.0.0.0 ~ 10.255.255.255
B类: 172.16.0.0 ~ 172.31.255.255
C类: 192.168.0.0 ~ 192.168.255.255 192.168.x.y
link-local的IP地址范围(169.254.1.0~169.254.254.255)被保留
CIDR(Classless Inter-Domain Routing)方法划分子网
【例】C类网络192.168.2. z,子网掩码是255.255.255.0
IP地址范围:192.168.2.0~192.168.2.255,最多拥有256个IP地址.
C类网络被表示为:192.168.2.0/24( CIDR)
CIDR方法划分:
192.168.2.0/23,IP地址的主机号共9位,该网络拥有512个IP地址(不再是C类网络)
几个重要的概念
网络地址
如果某IP地址的主机号全部为0,则此IP地址表示的是对应的整个网络。
【例如】网络地址:192.168.2.0/24表示的是网络号为192.168.2的整个网络。
对于网络192.168.2.0/24中的主机,实际能够分配的IP地址范围为:
192.168.2.1~192.168.2.254;
192.168.2.255为广播地址(主机号全部为1)。
回环(loopback)地址:
整个127.0.0.0/8网络的IP地址都被用作回环地址,发往这些地址的信息实际将回
送至本机(localhost)接收。
按默认在Linux系统中使用的回环地址是127.0.0.1.
网络接口
Linux系统提供了ppp、wlan 、eth、lo 等网络接口。
lo网络接口
本地回环接口(Local loopback),虚拟网络设备
默认配置的IP地址为127.0.0.1
主要用于本地计算机的内部通信,它也经常被用于各种网络及服务器功能的内部测试
eth网络接口:以太网卡
ethN(N为数字),如eth0、 eth1
eno1
ens1, ens33
enp2s0, enp0s3
一般的主机只有一块网卡,设置一个IP地址即可。如果有多块网卡,可分别设置
独立的IP地址。而且,即使一块网卡,也可以设置多个IP地址。
网络接口获取IP地址的方式有2种:
静态(static)分配
由网络中的DHCP服务器动态分配
查看和操控网络接口的命令
ifconfig:net-tools套件
ip:iproute2套件
ifconfig命令
【功能】查看、设置、启动或关停某个网络接口。
【格式】ifconfig [网络接口][ ip地址] [netmask 子网掩码] [up/down]
up和down用于启动/关停对应的网络接口
centos7 最小化安装没有ifconfig命令,使用yum install net-tools 进行安装
【实例1】查看系统中所有安装好的网络接口
ifconfig -a
【实例2】查看某个网络接口(网卡)的配置情况。
ifconfig enp0s3
【实例3】停用enp0s3网络接口。
ifconfig enp0s3 down
ifconfig enp0s3 #再次查看enp0s3的配置信息
【实例4】启用enp0s3网络接口
ifconfig enp0s3 up
【实例5】启用enp0s3网络接口并重新配置它的IP地址为192.168.2.10
ifconfig enp0s3 192.168.2.10 up
【实例6】 设置接口enp0s3的IP地址为192.168.2.20,子网掩码为255.255.255.0
ifconfig enp0s3 192.168.2.20 netmask 255.255.255.0
为enp0s3配置的新IP地址会立即生效,但是是临时的,系统重新启动网络服务
或者重启系统时,新IP地址配置将会失效。
ip命令
【功能】显示或操控Linux主机的路由、网络设备、策略路由和隧道等。
【命令格式】 ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]]
OBJECT :
link: 用于查看和设定网络设备 相关的信息
address :用于查看和设定设备的协议地址有关的信息
OPTIONS :
-s :显示出该设备的统计数据(statistics)
【实例1】
ip [-s] link show
ip link show //显示出所有可用网络接口的列表
ip link show up //查看激活的网络接口信息
ip -s link show enp0s3 //查看更加详细的网络接口信息
【实例2】
ip link set [device] [动作与参数]
动作与参数:
up|down :启动 (up) 或关闭 (down) 某个设备
mtu :设置最大传送单元
name :修改设备名
address :如果设备可以更改 MAC地址 ,用这个参数修改
ip link set enp0s3 up # 启动enp0s3
ip link set enp0s3 down # 关闭enp0s3
ip link set enp0s3 mtu 1000 # 更改 MTU为1000 bytes
ip link set enp0s3 name 设备名 #修改设备名
ip link set enp0s3 address aa:aa:aa:aa:aa:aa #更改网卡的MAC地址
【实例3】
ip address show
ip addr,是ip address show命令的简写。
ip addr show 网卡名 //查看某个网络设备的协议地址等信息
【实例4】
ip addr [add|del] [IP地址/掩码] [broadcast 广播地址] [dev 网络接口名]
• add|del :进行相关参数的增加 (add) 或删除 (del) 设定
• IP地址/掩码:例如 192.168.50.50/24 (CIDR)
• broadcast:设定广播地址,如果设定值是 + 表示让系统自动计算
• dev :所要设定的设备,例如 eth0, enp0s3 等
例如:
ip addr add 192.168.50.50/24 dev enp0s3 # 设置enp0s3网卡IP地址为192.168.50.50,可以给网卡配置多个IP地址
ip addr del 192.168.50.50/24 dev enp0s3 # 删除enp0s3网卡IP地址
临时配置