渗透入门Day8

一、Linux进程与程序

1.什么是进程?什么是程序?

程序(procedure):不太精确地说,程序就是执行一系列有逻辑、有顺序结构的指令,帮我们达成某个结果。就如我们去餐馆,给服务员说我要牛肉盖浇饭,她执行了做牛肉盖浇饭这么一个程序,最后我们得到了这么一盘牛肉盖浇饭。它需要去执行,不然它就像一本武功秘籍,放在那里等人翻看。

进程(process):进程是程序在一个数据集合上的一次执行过程,在早期的 UNIX、Linux 2.4 及更早的版本中,它是系统进行资源分配和调度的独立基本单位。同上一个例子,就如我们去了餐馆,给服务员说我要牛肉盖浇饭,她执行了做牛肉盖浇饭这么一个程序,而里面做饭的是一个进程,做牛肉汤汁的是一个进程,把牛肉汤汁与饭混合在一起的是一个进程,把饭端上桌的是一个进程。它就像是我们在看武功秘籍这么一个过程,然后一个篇章一个篇章地去练。

2.Linux进程控制与检测

查看系统中运行的程序和进程

判断服务器的健康状态

停止不需要的进程

3.进程的管理命令

1)top

常用交互命令解释
q退出程序
I切换显示平均负载和启动时间的信息
P根据 CPU 使用百分比大小进行排序
M根据驻留内存大小进行排序
i忽略闲置和僵死的进程,这是一个开关式命令
k终止一个进程,系统提示输入 PID 及发送的信号值。一般终止进程用 15 信号,不能正常结束则使用 9 信号。安全模式下该命令被屏蔽。

第一行:

 

1.09:01:05 系统时间

2.up 6 min, 系统运行之间

3.3 users, 当前登录的用户

4.load average: 0.02, 0.21, 0.14 系统在之前的 1分钟 5分钟 15分钟 的平均负载 如果cpu是单核 那么这个数值超过1 就是高负载 双核就是超过2为高负载

load average 在 wikipedia 中的解释是 the system load is a measure of the amount of work that a computer system is doing 也就是对当前 CPU 工作量的度量,具体来说也就是指运行队列的平均长度,也就是等待 CPU 的平均进程数相关的一个计算值。

我们该如何看待这个 load average 数据呢?

假设我们的系统是单 CPU、单内核的,把它比喻成是一条单向的桥,把 CPU 任务比作汽车。

  • load = 0 的时候意味着这个桥上并没有车,cpu 没有任何任务;
  • load < 1 的时候意味着桥上的车并不多,一切都还是很流畅的,cpu 的任务并不多,资源还很充足;
  • load = 1 的时候就意味着桥已经被车给占满了,没有一点空隙,cpu 已经在全力工作了,所有的资源都被用完了,当然还好,这还在能力范围之内,只是有点慢而已;
  • load > 1 的时候就意味着不仅仅是桥上已经被车占满了,就连桥外都被占满了,cpu 已经在全力工作,系统资源的用完了,但是还是有大量的进程在请求,在等待。若是这个值大于 2 表示进程请求超过 CPU 工作能力的 2 倍。而若是这个值大于 5 说明系统已经在超负荷运作了。

这是单个 CPU 单核的情况,而实际生活中我们需要将得到的这个值除以我们的核数来看。我们可以通过以下的命令来查看 CPU 的个数与核心数:

#查看物理 CPU 的个数
cat /proc/cpuinfo | grep "physical id" | sort | uniq |wc -l

#每个 cpu 的核心数
cat /proc/cpuinfo | grep "physical id" | grep "0" | wc -l

第二行

 

1.Tasks: 212 total 系统总进程数

2.1 running 当前正在运行的进程

3.211 sleeping 已经休眠的进程

4.0 stopped 停止的进程

5.0 zombie 代表僵尸进程

第三行

1.%Cpu(s): 3.5 us 用户模式占用的cpu百分比

2.0.5 sy :系统占用

3.0.0 ni :改变过优先级的用户进程占用

4.98.3 id :空闲

5.0.2 wa:等待输入/输出进程占用

6.0.0 hi :硬中断请求服务 占用

7.0.0 si :软中断请求服务 占用

8.0.0 st :虚拟时间百分比

第四行

 

1.KiB Mem : 997976 total, 物理内存的总量 单位kb

2.666264 used:已经使用的物理内存总量

3.79656 free:空闲内存

4.244012 buff/cache:作为缓冲的内存数量

第五行

 

1.KiB Swap: 2097148 total 虚拟内存总大小

2.192512 used. 已经使用的交换分区大小

3.1904636 free 空闲

4.125120 avail Mem 可用内存

进程信息

列名解释
PID进程 id
USER该进程的所属用户
PR该进程执行的优先级 priority 值
NI该进程的 nice 值
VIRT该进程任务所使用的虚拟内存的总数
RES该进程所使用的物理内存数,也称之为驻留内存数
SHR该进程共享内存的大小
S该进程进程的状态: S=sleep R=running Z=zombie
%CPU该进程 CPU 的利用率
%MEM该进程内存的利用率
TIME+该进程活跃的总时间
COMMAND该进程运行的名字

注意:

NICE 值叫做静态优先级,是用户空间的一个优先级值,其取值范围是 -20 至 19。这个值越小,表示进程”优先级”越高,而值越大“优先级”越低。nice 值中的 -20 到 19,中 -20 优先级最高, 0 是默认的值,而 19 优先级最低。

PR 值表示 Priority 值叫动态优先级,是进程在内核中实际的优先级值,进程优先级的取值范围是通过一个宏定义的,这个宏的名称是 MAX_PRIO,它的值为 140。Linux 实际上实现了 140 个优先级范围,取值范围是从 0-139,这个值越小,优先级越高。而这其中的 0-99 是实时进程的值,而 100-139 是给用户的。

其中 PR 中的 100 to 139 值部分有这么一个对应 PR = 20 + (-20 to +19),这里的 -20 to +19 便是 nice 值,所以说两个虽然都是优先级,而且有千丝万缕的关系,但是他们的值,他们的作用范围并不相同。

VIRT 任务所使用的虚拟内存的总数,其中包含所有的代码,数据,共享库和被换出 swap 空间的页面等所占据空间的总数。

2)free

查看内存使用情况

基本语法:

free -m 代表以Mb单位查看

 第一行

total 内存总数

used 已经使用的内存数

free 空闲内存数

shared 共享内存数

buff/cache 缓冲区内存数

available 可用内存

swap 代表虚拟内存 在物理内存不够时使

df查看磁盘剩余空间

df(disk free)即磁盘剩余

df -f以较高的可读性显示磁盘剩余空间大小

4)ps

查看服务器的进程信息

1.ps -ef

-e:等价于-A

-f: full表全部

 

UID该进程执行的用户ID
PID进程ID
PPID该进程的父级进程ID,如果找不到,则该进程就被称之为僵尸进程(Parent Process ID)
CCpu的占用率,其形式是百分数
STIME进程的启动时间
TTY终端设备,发起该进程的设备识别符号,如果显示“?”则表示该进程并不是由终端设备发起
TIME进程实际使用CPU的时间
CMD该进程的名称或者对应的路径

经验之谈:我们在实际工作中使用ps命令其实主要用于查询某个进程的PID或PPID

案例:查询crond的进程信息

# ps -ef |grep crondroot       7102      1  0 Mar23 ?        00:00:04 /usr/sbin/crond -nroot      24752  12881  0 16:34 pts/2    00:00:00 grep --color=auto crond

问题:以上信息只有第一行是crond的进程,第二行,实际是管道命令发起时,grep所启动的进程,如何去掉?

# ps -ef |grep crond |grep -v "grep"root       7102      1  0 Mar23 ?        00:00:04 /usr/sbin/crond -n

grep -v 需要去除的相关信息 : 去除包含指定关键词的那一行

2.ps -aux

5.)netstat查询网络访问信息

t 表示只列出tcp协议的连接

-n 表示将地址从字母组合转化成ip地址 将协议转化成端口号来显示

-l 过滤state 列出listen 监听状态的连接

-p 显示发起连接的进程pid以及进程名称

 

Proto:协议 tcp udp http

Recv-Q 接收

Send-Q 发送

Local Address 本地地址

Foreign Address 远程地址

State :状态 listen 代表监听状态

PID/Program name:进程ID 进程名

6)kill

kill [信号] PID

信号编号含义
9杀死进程,即强制结束进程。
15

正常结束进程,是 kill 命令的默认信号

 killall

killall [信号编号] 进程名称

例如:killall crond

杀死全部关于crond的进程

进程的优先级

优先级 控制哪些进程先运行 哪些后运行

查看进程优先级 top PR NI

改变优先级

在top命令下 使用快捷键r

  

-20 到 19 只能NI的优先级 不能改PR

命令行修改优先级

renice

修改进程优先级

renice 优先级 进程id (PID)

二、关于debian下的软件安装

1.dpkg

 

 dpkg 介绍

dpkg 是 Debian 软件包管理器的基础,它被伊恩·默多克创建于 1993 年。dpkg 与 RPM 十分相似,同样被用于安装、卸载和供给和 .deb 软件包相关的信息。

dpkg 本身是一个底层的工具。上层的工具,像是 APT,被用于从远程获取软件包以及处理复杂的软件包关系。"dpkg"是"Debian Package"的简写。

我们经常可以在网络上见到以deb形式打包的软件包,就需要使用dpkg命令来安装。

dpkg常用参数介绍:

参数说明
-i安装指定 deb 包
-R后面加上目录名,用于安装该目录下的所有 deb 安装包
-rremove,移除某个已安装的软件包
-I显示 deb 包文件的信息
-s显示已安装软件的信息
-S搜索已安装的软件包
-L显示已安装软件包的目录信息

 apt安装

在debian中的shell前端软件包管理器

需要超级管理员权限 root

首先我们要换源,详情请参考day1

apt-get install 软件名

apt-get remove(不删除配置文件) purge (删除配置文件)

apt-get update 将所有的包来源 进行更新

apt-get upgrade 将系统中旧版本的包升级成新的

apt-cache search 用关键字搜索包

apt-cache show 显示特定包的基本信息

apt-cache depends 列出包的依赖

apt-get clean 清理本地包占用空间

apt-get autoremove 卸载 同时卸载拿些2当时作为依赖 但现在不需要的包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值