Linux系统管理命令
使用ifconfig查看网卡ip
netstat查看网络端口号
网络协议 接收队列数量 发送队列数量 本地地址 远程地址 网络连接的状态 创建了网络连接的应用的进程编号(唯一标识)/名字
发送队列数量长时间不为0,可能是数据处理不过来网络阻塞了。
netstat -tulpn (推荐)
netstat -ano
netstat常用选项:
查看进程&杀掉进程
图中又使用到了|通道,grep 是通过正则表达式对结果进行筛选
5412那一列是pid进程编号 vim test.txt那一列显示启动时使用的命令是什么
有些应用不需要进行网络通信,这时用netstat就无法查到它的pid,要用ps -ef
ps -ef 查看当前系统进程有哪些
kill -9 PID 在内存中将对应pid的进程删除(尽量使用应用程序特有的关闭方式来关闭程序,强制kill可能造成数据丢失等情况)
应用服务化
应用服务化是指让应用程序以服务方式在系统后台运行;
Linux系统对服务化应用进行统一管理;
服务管理命令:
systemctl
systemctl常用指令
例子:将redis服务化,让redis随系统启动
1)查看redis的pid文件名及目录
里面存放的是redis当前进程的pid,将redis服务化后,要对redis进行开启和关闭时要从这个文件中读取进程编号,再通过kill杀掉redis进程。
2)进入 /usr/lib/systemd/system 目录
里面有许多.service结尾的文件,是服务描述文件,要将redis服务化,也要在这个目录中创建一个redis的服务描述文件,文件名就是默认的服务名。
vim打开并编辑redis.service,要注意大小写。
[Unit]
description:描述这个服务是干嘛的
After:在服务启动时,先启动其后的服务,再启动redis服务。大多数情况下都是图中那些
[Service]用于服务描述
Type: 服务运行的类型,forking表示后台运行
PIDFile=pid文件 指向上面介绍的描述进程号的pid文件
ExecStart=应用服务的完整路径 配置文件 表示服务启动时使用什么命令,服务启动时会调用应用服务启动配置文件
ExecStop=:表示服务关闭时使用什么命令,利用kill命令对指定进程进行关闭。-s QUIT表示按照正常对流程通知进程关闭,推荐。-9表示强制删除进程,无法正常退出再用。
PrivateTmp:为每个服务设置私有的tmp临时文件目录
[Install]安装配置项
WantedBy:将redis服务分配到multi-user.target服务组上,multi-user.target是系统默认的一个服务组,系统为它分配了一个权限,允许当前服务组中所有的服务可以随系统自动启动,只要把服务分配到这个服务组中,这个服务就会被允许随系统自动启动
3)重载redis.service使其生效
还在/usr/lib/systemd/system 目录下执行
systemctl daemon-reload
4)将之前自己启动的redis关闭
5)启动服务
systemctl start redis
如果没有看到报错,表示服务在后台启动成功
6)查看redis服务启动的状态
systemctl status redis
可以看到active(running) ,表示程序是激活的并且正在运行
process后是当前redis进程号
底下是redis启动日志
7)关闭服务
systemctl stop redis
8)重启服务
systemctl restart redis
会先关闭当前redis,再重新启动一个新的redis服务
9)让服务随系统启动
systemctl enable redis
软关联:类似windows中的快捷方式
立即重启:shutdown -r now
这时当前的centos7连接就断开了,我们再手动重新连接上
再查看redis服务状态,发现已经随系统自动启动了
10)让服务不随着系统启动
systemctl disable redis
在multi-usr服务组 redis的软关联(快捷方式)就被删除了,自然redis服务也不会再随着系统启动了。
11)查看当前系统都有那些服务,服务的状态,这些服务都包含了哪些信息?
systemctl list-unit-files
还可以利用通道和gref命令进行筛选
Linux用户与权限
1)用户
Linux是多用户多任务系统,包含两个概念:用户和用户组;
用户与账户是同一概念,用于登录系统与区分资源权限;
用户让系统变得更安全,同时也保护了用户的个人数字资产。
2)用户组
用户组就是将用户分组,隶属用户自动拥有组权限;
一个用户可隶属于多个组,用户可任意切换当前组;
用户组的出现让用户权限管理变的更轻松。
3)用户与用户组常用命令
4)项目内部文件权限管理实践
假如一个项目组有三名员工:两个程序猿+一个测试,分别在研发组和测试组
1??创建3个用户,并设置密码(最好8位以上,包含字母数字)
2??创建两个组,将人员分配到各自组中 -g ??注意是小写
3??创建3个centos副本,分别用三个用户登录
查看用户隶属于哪个组,执行命令:
groups
4??root用户为初始的目录进行创建和授权
假设资源放在共享资源目录 /usr/local/share
创建各组的文件夹
ll可以查看目录的权限
第一个root列表示当前目录是哪个用户创建的(属主,拥有者,用户名) ,第二个root列表示这个目录关联的用户组是哪个
drwxr... 表示权限代码,由10位组成。权限码右边一列的数字表示权限的权重。
文件权限代表码:
红色(1~4位)表示属主的权限
黄色(5~7位)表示与属主相同用户组下的其他用户所拥有的权限
蓝色(8~10位)表示属主所在用户组以外的其他用户拥有的权限
-表示没有对应属性
调整dev-document目录的权限:
chown 用户:组名 目录名字 更改对应文件/目录的属主或用户组
chmod 权限码 目录 改变对应目录/文件的权限
chmod 750 组用户可读写,其他用户不允许访问;7=4+2+1属主有全部权限,5=4+1所在用户组有读和执行权限,0=其他用户没有任何权限
chmod 777 所有用户拥有完整权限;
chmod 700 只有属主拥有完整权限。
设置其他用户不可访问后,其他组将没有权限查看
在目录上的w写权限,表示对目录名称修改的权限
属主d1要创建一个文件,允许研发组所有研发人员可见:
以下是默认产生的权限
第一位是d表示是一个文件夹,-表示是文件
修改权限为770,d2也可以进行该文件的操作,但t2没有权限
给一个用户赋予多个用户组 -G ??注意是大写
但对于d1用户来说,如果要是新的用户组权限对他生效,需要将系统断开重新连接
默认左边第一个是当前用户组
切换到新的用户组:
5)sudo超级管理员命令
sudo可以让普通用户拥有超级管理员的执行权限;
普通用户要进行经过超级管理员授权才能使用;
对某一用户进行sudo授权,授权命令:
visudo 查看授权文件
tips:在普通模式下输入100gg 可以快速定位到100行
进入编辑模式,在root下面一行,增加用户d1 以及相关权限信息
第一个ALL表示允许d1用户从哪个客户端上进行远程连接(可修改为主机名,这样就只有主机名一致的电脑才能远程连接d1做sudo管理员的任务)
第二个ALL表示切换用户的意思,可以切换至其他任意用户来执行某个命令
第三个ALL表示利用sudo可以执行哪些超级管理员的命令
:wq保存并退出
格式检查授权文件:
visudo -c
这时d1就有了sudo权限。
可以测试一下,默认情况下,除了系统管理员root是不能够创建其他用户的
很多拥有sudo权限的用户不希望每次使用sudo命令的时候都重新输入密码,这个可以进行配置:
在root用户上对sudo配置进行修改
执行visudo,定位至100行,在第三个ALL前增加NOPASSWD:
保存并退出
格式检查授权文件:
visudo -c
重新连接d1,直接使用sudo命令,就不用再输入密码了
Centos 7 防火墙firewall
防火墙是借助硬件和软件对内外部网络环境对保护措施;
centos7基于firewall实现应用层防火墙,centos基于iptables;
firewall-cmd是firewall的核心命令。
firewall-cmd
systemctl start|restart firewalld 启动防火墙
firewall0cmd --state|--reload 查看状态,重载防火墙
firewall-cmd --zone=public ==permanent --add-port=8502/tcp
对外开放tomcat
Bash Shell
什么是Shell
Shell是一个用c语言编写的脚本解释器,是用户通过代码操作Linux的桥梁;
Shell脚本描述要执行的任务,完成系列复杂操作,文件通常以.sh后缀;
Shell脚本通过Shell解释器执行,按解释器分类分为多种类型。
LinuxShell分类
一键发布Tomcat应用程序
综合训练
Linux部署项目
部署架构
浏览器??tomcat web服务器??mysql数据服务器
centos安装mysql8