01_Linux(下)
八、组管理和权限管理
8.1.组管理
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。
1) 所有者
2) 所在组
3) 其它组
4) 改变用户所在的组
组的创建
groupadd 组名
文件/目录 所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。
修改文件的所有者:
指令:chown 用户名 文件名
修改文件所在的组:
chgrp 组名 文件名
改变用户所在的组:
1) usermod –g 组名 用户名
2) usermod –d 目录名 用户名 改变该用户登陆的初始目录。
其他组
除所有者和所在组之后的用户 系统的其他的用户都是改文件的其他组
8.2.权限管理
8.2.1.权限的基本介绍
0-9位说明:-rwxrw-r-- 1 root root 1212 Feb 2 09:39 abc.txt
1)第0位确定文件类型(说明: -:普通文件, ==d:==目录,l : 连接文件, ==c: ==字符设备文件[键盘,鼠标] b: 块设备文件[硬盘] )
2)1-3位 文件的所有者对改文件的权限 r 读权限 w 写权限 x 执行权限
3)4-6位 文件所在组及所在组的用户对改文件的权限
4)7-9位 其他用户对改文件的权限
5)如果是文件 则表示改文件的连接数 如果是目录 表示该目录拥有多少个子目录
6)文件的所有者
7)文件所在组
8)1212 表示文件的大小
9)文件最后一次的修改时间
10)文件名
l是链接,相当于windows的快捷方式
d是目录,相当于windows的文件夹
c是字符设备文件,鼠标,键盘算是
b是块设备,硬盘就是一个例子
1)第0位确定文件类型(d, - , l , c , b)
2)第1-3位确定所有者(该文件的所有者)拥有该文件的权限。—User
3)第4-6位确定所属组(同用户组的)拥有该文件的权限,—Group
4)第7-9位确定其他用户拥有该文件的权限 —Other
8.2.2.rwx权限详解
rwx 权限说明 既可以表示文件的权限 也可以表示目录的权限
rwx作用到文件(重要)
- r 表示可读 查看文件
- w 表示可以写文件 写入内容 修改 不一定表示拥有删除该文件的权限 你要删除改文件 必须拥有对改文件所在目录拥有写的权限才可以
- x 表示可执行改文件
作用在目录上(重要) - [ r ]代表可读(read): 可以读取,ls查看目录内容
- [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
- [ x ]代表可执行(execute):可以进入该目录
8.2.3.修改权限 -chmod
第一种方式 +、-、=来修改权限
u 表示修改拥有者的权限
g 表示修改所在组的权限
o 表示修改其他组的权限
赋予权限
回收权限
第二种方式:通过数字变更权限
r=4 w=2 x=1 rwx=4+2+1=7
x w r= 0
如果要赋予某一个权限则该位对应的数字就是1 否则就是0
8.2.4.课后练习
练习文件权限管理[课堂练习]
建立两个组(神仙,妖怪)
建立四个用户(唐僧,悟空,八戒,沙僧)
设置密码
把悟空,八戒放入妖怪 唐僧 沙僧 在神仙
用悟空建立一个文件 (monkey.go该文件要输出 i am monkey)
给八戒一个可以r w 的权限
八戒修改monkey.go 加入一句话( i am pig)
唐僧 沙僧 对该文件没有权限
把 沙僧 放入妖怪组
让沙僧 修改 该文件 monkey, 加入一句话 (“我是沙僧,我是妖怪!”);
九、定时任务调度(了解)
9.1.概述
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
2.个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。
crontab [选项]
常用选项:
9.2.快速入门
设置任务调度文件:/etc/crontab
设置个人任务调度。执行crontab –e命令。
接着输入任务到调度文件
如:*/1 * * * * ls –l /etc/ > /tmp/to.txt
意思说每小时的每分钟执行 ls –l /etc/ > /tmp/to.txt命令
9.3.参数说明
5个占位符的说明
项目 | 含义 | 范围 |
---|---|---|
第一个“*” | 一小时当中的第几分钟 | 0-59 |
第二个“*” | 一天当中的第几小时 | 0-23 |
第三个“*” | 一个月当中的第几天 | 1-31 |
第四个“*” | 一年当中的第几月 | 1-12 |
第五个“*” | 一周当中的星期几 | 0-7(0和7都代表星期日) |
特殊符号的说明
符号 | 含义 |
---|---|
* | 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。 |
, | 代表不连续的时间。如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次 |
- | 代表连续的时间范围。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令 |
*/n | 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔10分钟就执行一遍命令 |
特定时间执行任务案例
时间 | 含义 |
---|---|
45 22 * * * 命令 | 在22点45分执行命令 |
0 17 * * 1 命令 | 每周1 的17点0分执行命令 |
0 5 1,15 * * 命令 | 每月1号和15号的凌晨5点0分执行命令 |
40 4 * * 1-5 命令 | 每周一到周五的凌晨4点40分执行命令 |
*/10 4 * * * 命令 | 每天的凌晨4点,每隔10分钟执行一次命令 |
0 0 1,15 * 1 命令 | 每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。 |
9.4.crond 相关指令
- conrtab –r:终止任务调度。
- crontab –l:列出当前有那些任务调度
- service crond restart [重启任务调度]
十、进程管理(重点)
10.1.基本介绍
- 在LINUX中,每个执行的程序(代码) 都称为一个进程。每一个 进程都分配一个ID号。
- 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。
- 每个进程都可能以两种方式存在的。前台 与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行[sshd , crond]。
- 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
10.2.显示系统执行的进程
查看进程:ps命令
ps -a 显示所有进程信息
ps -u 以用户名的格式 显示进程信息
ps -x 显示后台进程
查看所有进程 ps -aux
| 管道符 将前边命令执行的结果 作为后续命令的数据来源
ps详解
1)指令:ps –aux|grep xxx ,比如我看看有没有sshd服务
2)指令说明
•System V展示风格
•USER:用户名称
•PID:进程号
•%CPU:进程占用CPU的百分比
•%MEM:进程占用物理内存的百分比
•VSZ:进程占用的虚拟内存大小(单位:KB)
•RSS:进程占用的物理内存大小(单位:KB)
•TTY:终端名称,缩写 .
•STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
•STARTED:进程的启动时间
•TIME:CPU时间,即进程使用CPU的总时间
•COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
应用实例
ps -ef
要求:以全格式显示当前所有的进程,查看进程的父进程。
•ps -ef是以全格式显示当前所有的进程
•-e 显示所有进程。-f 全格式。
•ps -ef|grep xxx
•是BSD风格
•UID:用户ID
•PID:进程ID
•PPID:父进程ID
•C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
•STIME:进程启动的时间
•TTY:完整的终端名称
•TIME:CPU时间
CMD:启动进程所用的命令和参数
10.3.终止进程kill和killall
10.3.1.介绍:
若是某个进程执行一半需要停止时,或是已消耗了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务。
10.3.2.基本语法:
kill [选项] 进程号(功能描述:通过进程号杀死进程 -9 强制终止)
killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)
10.3.3.常用选项:
-9 :表示强迫进程立即停止
终止某一个进程 kill -9 进程ID
10.4.看进程树pstree
pstree
常用选项:
-p :显示进程的PID
-u :显示进程的所属用户
10.5.服务(service)管理
介绍:
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。
查看防火墙状态
暂时关闭防火墙 下次开机 防火墙依然会是运行状态
开启防火墙
永久关闭防火墙 开机启动不会启动防火墙
开启开机启动防火墙
查看服务名:
方式1:使用setup -> 系统服务 就可以看到。
方式2: /etc/init.d/服务名称 【程序】
服务的运行级别(runlevel):
查看或者修改默认级别: vi /etc/inittab
Linux系统有7种运行级别(runlevel):常用的是级别3和5
•运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
•运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
•运行级别2:多用户状态(没有NFS),不支持网络
•运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
•运行级别4:系统未使用,保留
•运行级别5:X11控制台,登陆后进入图形GUI模式
•运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
开机的流程说明:
十一、RPM 与 YUM
11.1.rpm包的管理
介绍:
一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。
Linux的分发版本都有采用(==suse,redhat, centos ==等等),可以算是公认的行业标准了。
rpm包的简单查询指令:
查询已安装的rpm列表 rpm –qa|grep xx
其他的查询命令
rpm -qa 查询所有安装的rpm软件包
rpm –qa|grep xx 查询某一个特定的rpm软件包
rpm –q firefox 查询是否安装了某个软件包
rpm -qi XX查询软件包信息
卸载某一个rpm软件包:
基本语法
rpm -e 软件名称
强制删除:
rpm -e --nodeps 软件名称
安装rpm包:
rpm -ivh 软件包的全路径名称
-i install 安装
-v 提示
-h 进度条
11.2.Yum
介绍:
Yum 是一个Shell 软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
yum的基本指令
- 查询yum服务器是否有需要安装的软件
yum list|grep xx软件列表
- 安装指定的yum包
yum install xxx 下载安装
十二、项目环境搭建
12.1.安装JDK
所有的安装包统一放置在 opt目录下的soft目录
所有的软件统一安装在opt下的programfiles下
-
在opt目录下创建所需目录
-
上传需要安装的软件包
-
解压
进入解压的目录 对解压目录进行重命名
-
进行相关配置
vim /etc/profile
#set java environment
export JAVA_HOME=/opt/program/jdk8
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib\tools.jar
- 卸载系统自带的openjdk
rpm -qa |grep java
rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.221-2.6.18.1.el7.x86_64
rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.222.b03-1.el7.x86_64
rpm -e --nodeps java-1.7.0-openjdk-1.7.0.221-2.6.18.1.el7.x86_64
rpm -e --nodeps java-1.8.0-openjdk-1.8.0.222.b03-1.el7.x86_64
- 重新加载配置文件:【否则环境变量不会重新执行】
source /etc/profile
- 编写一个helloworld
12.2.安装MySQL
- 安装新版mysql前,需将系统自带的mariadb-lib卸载
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。
MariaDB由MySQL的创始人Michael Widenius(英语:Michael
Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL
AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael
Widenius的女儿Maria的名字。
[root@localhost ~]# rpm -qa|grep mariadb
mariadb-libs-5.5.52-1.el7.x86_64
[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64
- 解压mysql安装包到目标文件夹下:
tar -xvf mysql-5.7.18-1.el7.x86_64.rpm-bundle.tar -C /opt/programfiles/mysql
- rpm -ivh命令依次进行安装,安装顺序rpm -ivh
①mysql-community-common-5.7.18-1.el7.x86_64.rpm
②mysql-community-libs-5.7.18-1.el7.x86_64.rpm(依赖于common)
③mysql-community-client-5.7.18-1.el7.x86_64.rpm(依赖于libs)
④mysql-community-server-5.7.18-1.el7.x86_64.rpm(依赖于common,client)
- 启动和停止mysql服务
完成安装步骤之后,首先配置MySQL的开机自动启动,在这里使用systemctl命令。
# systemctl enable mysqld.service
接着使用systemctl start mysqld.service命令启动MySQL。
# systemctl start mysqld.service
停止服务:systemctl stop mysqlld.service
- 配置mysql登录
这时候又会碰到困难,没有密码进不去:设置登录无需密码
在/etc/my.cnf中添加
skip-grant-tables 保存退出
需要重启mysql服务:
service mysqld restart
然后再连接mysql就可以了
切换到mysql数据库
use mysql;
修改root用户的密码
update user set authentication_string =password('root@123')where user='root';
然后删除/etc/my.cnf文件中新增的
skip-grant-tables
(需要先重启mysql服务)然后再用root账号和密码进入mysql;
进去之后需要重新设置root密码:此时改密码需要符合密码规范
set password= password('Mysql@2020');
alter user 'root'@'localhost' password expire never;设置密码永不过期
使上述设置立即生效
flush privileges;
给root用户开启远程登录权限
grant all privileges on *.* to 'root'@'%' IDENTIFIED by 'Mysql@2020' with grant option;
立即生效 flush privileges;
12.3安装Tomcat
上传
将tomcat解压到指定目录下
[root@localhost soft]# tar -zxvf apache-tomcat-8.5.16.tar.gz -C /opt/programfiles/tomcat/
改名
查看tomcat目录并启动
安装maven
上传
解压
修改配置
配置环境变量
项目部署
将项目打包的war 上传到tomcat的webapps目录下
上传之后 需要修改数据库密码
重启tomcat
http://192.168.124.7:8080/ssm-1.0-SNAPSHOT/emp/