#############1.什么是进程###########
进程就是系统未完成并且正在进行的工作
###########2.查看进程#########
1)图形方式查看
gnome-system-monitor
2)进程查看命令
ps -A ##查看所有进程
ps -a ##在环境中的所有进程,不包含环境信息
ps -u ##显示进程用户信息
ps a ##显示当前环境中运行的进程,包含环境信息
ps x ##列出系统中所有运行包含tty输出设备
ps f ##显示进程父子关系
ps e ##显示进程的详细信息(系统资源的调用)
##ps 常用组合
ps aux ##显示系统中所有进程并显示进程用户
ps ef ##显示进程详细信息并显示进程父子关系
ps ax ##显示当前系统中的所有进程
pstree ##显示当前系统的进程树
##显示进程指定信息
ps -o xxx ##显示进程的指定信息
ps -o comm ##进程名称
ps -o user ##进程所有人
ps -o group ##进程所有组
ps -o %cpu ##进程cpu使用率
ps -o %mem ##进程内存使用率
ps -o pid ##进程id
ps -o nice ##进程优先级
进程排序
ps ax --sort=+%cpu|-%cpu
ps ax --sort=+%mem|-%-mem
练习:用一条命令抓取系统cpu使用量排在前五的pid:
####3.stat中显示的信息####
S ##进程状态
l ##内存中有锁定空间
N ##优先级低
< ##优先级高
“+” ##前台运行
s ##顶级进程
####4.进程优先级####
1.进程优先级范围
-20——19
2。优先级查看
ps ax -o pid,nice,comm
3.指定某个优先级开启进程
nice -n 优先级数字 进程名称
nice -n 5 vim ##开启vim并且指定程序优先级为5
4.改变进程优先级
renice -n 优先级数字 进程pid
renice -n -5 1806 ##改变1806进程的优先级为-5
###环境中进程的前后台调用####
jobs ##查看被打入环境后台的进程
ctrl+z ##把占用终端的进程打入后台
fg jobsnum ##把后台进程调回前台
bg jobsnum ##把后台暂停的进程运行
comm & ##让命令直接在后台运行
#############5.进程信号#############
1)常用信号等级
man7 signal #查看信号详细信息
1 | 进程重新加载配置 |
---|---|
2 | 删除进程在内存中的设置 |
3 | 删除鼠标在内存中的数据 |
9 | 强行结束单个进程(不能被阻塞) |
15 | 正常关闭进程(可能会被阻塞) |
18 | 运行暂停的进程 |
19 | 暂停某个进程(不能被阻塞) |
20 | 把进程打入后台(可以被阻塞) |
kill -2
kill -18 kill-19
用法:
kill -信号 进程pid
killall -信号 进程名字
pkill -u student -信号 #管理student用户的进程
###########6.进程的动态监控######
1.top
1 显示cpu每个CPU核的负载
s 调整刷新频率
c CPU负载排序
m 内存使用量排序
h 查看帮助
u 查看指定用户进程
k 对指定进程发起信号 先输入1857 后输入对应信号
q 退出
##########7.控制服务#########
1.什么是服务
服务指在操作系统中,用以支持各种功能的程序.
2.用什么控制服务
系统初始化进程可以对服务进行相应的控制
3.当前系统初始化进程是什么
systemd #系统初始化进程
pstree #显示系统中的进程树
4.进程控制命令
ssh ------->sshd
client -------server
systemctl #服务控制命令
systemctl status sshd 查看服务状态,inactive(不可用),active(可用)
systemctl start sshd 开启服务
systemctl stop sshd 关闭服务
systemctl restart sshd 重启服务
systemctl reload sshd 重新加载服务配置
systemctl enable sshd 设定服务开机启动
systemctl disable sshd 设定服务开机不启动
systemctl list-units 列出已经开启服务当前状态
systemctl list-unit-files 列出所有服务开机启动的状态 disable enable static
##########sshd服务#############
##1.sshd简介####
sshd=secure shell
可以通过网络在主机中开机shell的服务
客户端软件 [c-F9]
sshd
ssh和sshd的区别
ssh_config和sshd_config都是ssh服务器的配置文件,二者区别在于,前者是对客户端的,后者则是针对服务端的配置文件 两个配置文件都允许你通过设置不同的选项来改变客户端程序的运行方式
连接方式:
ssh username@ip #文本模式的连接
ssh -X username@ip #可以在连接成功后开机图形
注意
第一次连接陌生主机是要建立认证文件
所以会询问是否建立,需要输入yes
在次连接此主机时,因为已经生成~/.ssh/know_hosts文件 所以不需要再次输入yes
远程复制:
scp file root@ip:dir #上传
scp root@ip:file dir #下载
从另一台主机中远程复制了dir1文件夹到本机
###2.sshd的key认证#####
authorized_keys id_rsa id_rsa.pub known_hosts
authorized_keys 此文件出现表示加密完成
id_rsa 私钥
id.rsa.pub公钥
known_hosts 客户端主机第一次连接服务端主机会/root/.ssh下生成known_hosts这个文件
分发钥匙
scp /root/.ssh/id_rsa root@172.25.254.115:/root/.ssh/
测试
在客户主机中(172.25.25.115)
ssh root@172.25.254.215 ##连接时发现直接登录不需要root登录系统的密码认证
实验:
步骤一:在真机中打开两个虚拟机desktop和server,并用
hostnamectlt set-hostname westos_server.westos.com hostnamectl set-hostname westos_client.westos.com
分别设置server和desktop
步骤二:配置desktop主机ip为172.25.254.115用于客户端,配置server主机ip为172.25.254.215用于服务器端。
步骤三:在两台主机的shell中分别删除/root/.ssh
为什么要删除/root/.ssh/? 客户端主机第一次连接服务器主机会在这个目录下生成know_hosts这个文件,为了验证这个实验效果,所以得将这个目录晴空,或者直接删除 直接在家目录下面输入ls -a (查看所有文件,包括非隐藏文件和隐藏文件)
步骤四:
在服务器端输入ssh-keygen,生成钥匙和密码,id_rsa是钥匙 id_rsa.pub是锁。三次回车,每次回车都有原因
第一次回车是钥匙和密码存放路径(可以直接回车,存放在默认路径下) 第二次回车是密码(可以直接回车,不设置密码) 第三次回车也是密码(可以直接回车,不设置密码)
步骤二:在服务端输入ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.254.215给服务器自己上锁
注意:如果客户端没有/root/.ssh/这个文件,客户端使用密码方式重新连接一次服务端,会生成该文件,然后就可以将钥匙传给客户端了。
步骤三:客户端使用密码方式重新连接一次服务端,会生成该文件,并且退出。
步骤四:服务器重新给用户配钥匙,并且查看钥匙是否一致
scp /root/.ssh/id_rsa root@172.25.254.115:/root/.ssh/ ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190718175454148.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JhcGlnMQ==,size_16,color_FFFFFF,t_70)
步骤五:验证客户端是否可以免密连接服务端
上图,已经实现了免密连接。
#######3.sshd的安全设定######
(1)为何要进行安全设定
因为服务端root权限太大,客户端如果使用服务端的root权限极不安全 为了保证ssh服务器的安全性:服务端开放的权限不能太多,一般不太让客户端主机用服务端主机的超级用户root
78 PasswordAuthentication yes|no ##是否允许用户通过登录系统的密码做sshd的认证
48 PermitRootLogin yes|no ##是否允许root通过sshd的服务认证
52 Allowusers student westos ##设定用户白名单,白名单出现默认不在名单的用户不能使用sshd
53 Denyuser westos ##设定用户黑名单,黑名单出现默认不在名单的用户可以使用sshd
每次改完一个参数重新启动才会其作用,在服务端systemctl restart sshd.service
如何进行安全设定?
步骤一:先关闭免密操作,恢复到以前,使两台主机没有连接
步骤二:在服务端 vim /etc/ssh/sshd_config这个文件
步骤三:验证78行的PasswordAuthentication yes|no (是否允许密码登陆)
先在服务器端建立一个lee用户,用root权限给lee设置密码,然后在/etc/ssh/sshd_config这个文件里面设置78行改为no,重启服务,然后在客户端连接服务端,可以看到不能用密码连接服务端。
将no改成yes再次重启,发现可以连接。
如图,lee又不能登陆服务器端
步骤四:验证48行,PermitRootLogin yes|no
是否允许服务端的root用户通过sshd服务 注意,此实验前,要将超级用户免密取消,方法:rm -fr /root/.ssh 要将刚才78的变成yes 默认是yes并且被注释 去掉注释并且将yes改成no才可以限制root用户登陆
root用户不能登陆服务器
步骤五:在/etc/ssh/sshd_config 这个文件里面的任意一行写入AllowUser tom westos
设定用户白明白,此名单里面的用户可以作sshd服务(服务端不存在用户直接输入即可生成,多用户用,隔开 在服务端建立用户时候,必须passwd user 设置密码
在服务端建立两个用户tom和westos 密码设为westos
在服务端重启sshd服务,后验证tom和westos是否可以用密码登陆
登出用户,用root用户登陆,发现不能登陆
步骤六:取消白名单,加#,然后在服务端打开/etc/ssh/sshd_config这个文件并设置黑名单,重启后生效。
设定用户黑名单,此名单里面的用户不可用sshd服务
总结:白名单比黑名单更安全,对于linux系统
#####4.添加sshd登录信息########
vim /etc/motd ##文件的内容就是登录后显示的信息 为了使客户端在连接服务端的时候能够直观的看到服务端的相关信息
######5.用户的登录审计#######
1.w ##查看正在适用当前系统的用户
-f ##查看使用来源
-i ##显示ip
/var/run/utmp
不能用cat来查看/var/run/utmp 只能用file来看 因为此文件是个data数据
2.last #查看试用过并退出的用户信息
/var/log/wtmp
3.lastb ##试图登录但没成功的用户
/var/log/btmp
6.如何踢出别人正在我主机上进行的进程
说明:此实验需要在两台虚拟机上面完成
步骤一:用desktop主机远程连接server主机
步骤二:在server上用w -i查询ip
步骤三:查看该进程的id 使用ps aux | grep pts/1
步骤四:kill -9 他的进程id,然后再到客户端查看是否被踢出
客户端直接断开连接。