1.什么是Linux系统
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux,centos7 等。
Linux它是一款操作系统,和我们现在正在使用的Window系统一样,但是Window系统不稳定,而且不安全。
2.为什么使用Linux系统
因为Linux系统性能比较稳定而且比较安全,非常适合程序的运行。 我们开发的项目程序,都会部署到Linux系统上。
我们要学习linux系统,就必须在自己电脑上安装Linux系统或者租赁其他云服务的linux系统。
租赁:阿里云或者腾讯云等
安装: 借助虚拟机---模拟安装n个操作系统。
1.该系统开源的
2.安全,性能稳定
3.多用户,多任务,支持多线程和多CPU的操作系统
4.我们习惯把我们开发好的项目,部署到该系统上,使网络用户可以访问到你部署的项目。
3.如何使用Linux系统---Centos7
安装虚拟机:=VMware Workstation Pro=创建多个虚拟电脑---每个电脑可以安装自己相应的系统镜像。
如果VMware Workstation Pro不兼容 可以使用Cclean卸载---重新找一个版本
网络适配器的种类
NAT模式:把你的电脑作为路由器,只有你的主机才能访问该虚拟机,其他主机无法访问该虚拟机
桥接模式:把虚拟机作为主机和你的电脑效果是一样,它们都使用同一个交换机。其他人的电脑能够访问我的虚拟机
在centos黑窗口操作命令也可以,但是无法复制其他地方的命令到该窗口,这是我们使用客户端界面----xshell
4.ssh客户端工具---xshell
可以帮你连接你的虚拟机。
使用ifconfig 查看你虚拟机的ip地址。====>如果上面的命令不能用ip addr
5. linux目录结构
以下是对这些目录的解释:
/: 根目录
bin: 目录 命令目录 千万不要删除【以后很多命令不能使用了】
etc: 环境配置目录。
root: 账号为root用户名的目录
sbin: 存放命令的目录
usr: 用户目录 ---window program file 习惯把软件安装到该目录下
这几个比较常用,如果想要了解其他,可以查询
Linux 系统目录结构 | 菜鸟教程 (runoob.com)https://www.runoob.com/linux/linux-system-contents.html
6.linux下常见的命令
(1) ping 命令 测试网络联通型。
(2) 目录的切换 cd 【change directory】
cd 指定的目录名称 如cd /usr/local
cd ../ 切换到上一级目录
cd / 切换到根目录
(3) 查看当前所在的目录 pwd
pwd
(4) 查询当前目录下的子目录和子文件 ls
ls 指定目录 查询指定目录下子文件和子目录
ls 查看当前目录下的子文件和子目录
ls -l 以列表的形式查询指定目录下的子文件的详细信息
d:表示目录
-:表示文件
l:表示快捷方式
root:当前文件所属的用户
root:当前文件所属用户的组
ls -a 查询指定目录下所有的文件包含隐藏文件
(5)创建空文件 touch
touch 文件名
跟是否有后缀无关
(6)创建文件夹 mkdir
mkdir 目录名称
mkdir -p 多层目录mkdir -p f/g/h
(7)删除文件或目录 rm
rm 文件名 【删除文件时会有提示框】
rm -f 文件名 【暴力删除】 -f: 表示强制删除 force默认rm不允许删除目录,可以使用参数 -r 删除目录
rm -r 文件夹
rm -rf 文件或文件夹
(8) 编辑文件内容
进入命令模式[不能输入内容]---->i----->编辑模式【可以输入内容】---->Esc推到命令模式
---:wq[保存退出]
---:q![退出不保存]
(9) cat | head | tail | more查看文件内容
(10) 重命名|移动文件文件或目录 mv
mv 源文件名 目标文件名
例:mv a.txt aaa.txt 把a.txt重命名为aaa.txt
mv 源文件名 目标目录
mv a.txt /usr/local 把a.txt移动到/usr/local目录下
(11)复制文件或目录 cp
cp /usr/local/ldh.txt /aaa 把/usr/local/ldh.txt文件复制到/aaa目录下
默认不允许复制文件夹 可以使用参数 -r
cp -r aaa /usr/local/ 把目录aaa复制到/usr/local下
(12) 搜索 find
find 目录 -name '被搜索的文件名'
find 目录 -name 文件名*
查找以ldh开始的文件名
(13) 在文件中搜索指定的内容: grep
grep '内容' 文件名 grep 'system' anaconda-ks.cfg 在anaconda-ks.cfg中搜索system
grep '内容' 文件名 -n 显示行号
(14) 查看详细信息 ls -l
ls -l
(15) 修改权限 chmod
chmod [u|o|g]+[wxr] 文件
如: chmod u+r a.txt 但是只能一个一个设置 太复杂了
chmod 777 文件chmod 777 a.txt chmod 774 a.txt
(16) 解压缩文件
压缩:
tar -zcvf 压缩后的名称 要压缩的目录
解压:
tar -zxvf 压缩文件 解压到当前目录
tar -zxvf 压缩文件 -C /目标目录 解压到指定目录
(17) firewall 防火墙的命令
- 查看防火墙的状态:
systemctl status firewalld
- 设置防火墙允许放行哪些端口号
firewall-cmd --add-port=8080/tcp --zone=public --permanent
- 重启防火墙
systemctl restart firewalld
- 查看哪些端口号被放行
firewall-cmd --list-port
- 防火墙移除端口号
firewall-cmd --remove-port=8080/tcp --zone=public --permanent
- 关闭防火墙----慎重【关闭】 开启还会启动
systemctl stop firewalld
systemctl disable firewalld 永久禁用
(18) ps -ef | grep tomcat -----查看指定的进程
ps -ef | grep zookeeper-root-server | grep -v grep 排除自己
ps -ef | grep zookeeper-root-server | grep -v grep | wc -l 统计个数
kill -9 进程号 关闭指定进程
7. 修改ip为静态ip
如何获取网关:
设置ip地址区间:
设置静态ip命令
vi /etc/sysconfig/network-scripts/ifcfg-ens33
重启网络: systemctl restart network
8.安装软件
软件的安装方式:
二进制安装。---只需要解压就可以。 只针对特殊平台。 比如jdk tomcat
RPM: 按照一定的规范就可以按照该软件。 无法安装依赖的文件。
yum 远程安装 基于RPM 帮你把依赖的文件安装上去。 多
安装源码安装。 编译--->打包---->安装。
window和linux之间如何传递文件:xftp---文件传输。
8.1.安装jdk1.8
(1)通过xftp压缩文件上传到指定目录下 我下载到了/usr/local
(2) 解压该文件到当前目录
tar -zxvf jdk-8u161~~~~.tar.gz
(3)配置环境变量 vi /etc/profile
JAVA_HOME=jdk的安装路径
PATH=
(4)保存退出并刷新配置
source /etc/profile
(5)测试 在任何目录下运行javac都可以
这样就完成了
8.2.安装tomcat服务器----war包
(1)通过xftp上传到linux
(2)解压tomcat包
执行命令:tar -zxvf apache-tomcat-9.0.8.tar.gz
(3)启动tomcat
进入tomcat/bin目录
执行命令:./startup.sh
ps -ef | grep tomcat -----查看指定的进程
kill -9 进程号 关闭指定进程
(4)window中的浏览器访问tomcat
如果这时发现访问不了,是因为我们的防火墙没有放行,如果可以访问到,不需要执行
我们centos的防火墙没有给8080端口号放行。
防火墙的命令:
1. 查看防火墙的状态: systemctl status firewalld
2. 而是设置防火墙允许放行哪些端口号
firewall-cmd --add-port=8080/tcp --zone=public --permanent
3. 重启防火墙
systemctl restart firewalld4. 查看哪些端口号被放行
firewall-cmd --list-port5. 防火墙移除端口号
firewall-cmd --remove-port=8080/tcp --zone=public --permanent6. 关闭防火墙----慎重【关闭】 开启还会启动
systemctl stop firewalld
8.3.centos7安装mysql
首先在虚拟机中安装一个Centos7(VM虚拟机安装Centos7)
(1)下载wget命令
yum -y install wget
(2) 在线下载mysql安装包
wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
sudo rpm -ivh mysql80-community-release-el7-1.noarch.rpm
(3)安装mysql
yum install mysql mysql-server
(4)启动mysql
sudo systemctl start mysqld
(5)检查mysql状态
sudo systemctl status mysqld
有红框的时间就是状态正常
(6)查看临时密码
sudo grep ‘temporary password’ /var/log/mysqld.log 单引号改为英文的
下面就是临时密码
(7)配置mysql
sudo mysql_secure_installation
这里我们需要把临时密码粘过来,就能登陆成功,然后修改配置,全部输入y
密码就设置为 MyNewPass4!
然后后面是一系列的初始化设置,默认就好了
如果还想设置简单一点的密码可以设置密码策略等级
(1)连接入mysql
mysql -uroot -p
(2)查看当前密码策略等级
SHOW VARIABLES LIKE 'validate_password%';
(3) 降低安全策略等级
set global validate_password.policy=LOW;
(4)降低密码长度需求
set global validate_password.length=6;
(5)设置英文字母(包含大小写)最小长度
set global validate_password.mixed_case_count=0;
(6)设置特殊字符最小长度
set global validate_password.special_char_count=0;
(7)设置新密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
查看进程中服务是否启动
ps -aux | grep mysql
(8)查询mysql版本号
mysqladmin -u root -p version
设置允许远程访问
1.首先登录MySQL
mysql -uroot -p
2.切换到mysql数据库
use mysql;
3.查看user表
select Host,User from user;
发现root
用户只允许localhost
主机登录登录
4.修改为允许任何地址访问
update user set Host='%' where User='root';
5.刷新权限
flush privileges;
6.exit 退出mysql
开放端口-防火墙
firewall-cmd --get-active-zones
添加端口到防火墙中
firewall-cmd --zone=public --add-port=3306/tcp --permanent
防火墙重新读取端口列表
firewall-cmd --reload
7.使用Navicat连接工具测试(ifconfig查看自己的ip)
重启mysql服务
重启服务:systemctl restart mysqld.service
停止服务:systemctl stop mysqld.service
启动服务:systemctl start mysqld.service
查看服务:systemctl status mysqld.service
参考文献
mysql8安装:centos7下载安装mysql8.0(yum安装)_雪球干死黄旭东的博客-CSDN博客
mysql7安装:Centos7 安装MySQL详细步骤 - 帅哥的爸爸 - 博客园 (cnblogs.com)
修改密码策略:Centos8 —— 修改 MySQL8 密码策略等级_alun550的博客-CSDN博客_mysql8 密码等级
9. shell脚本--了解【能看懂别人的shell】
Shell 传递参数 | 菜鸟教程 (runoob.com)https://www.runoob.com/linux/linux-shell-passing-arguments.html
什么是shell脚本?
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
9.1 hello world入门
执行命令 vi hello.sh
#!bin/bash
echo "内容"
执行脚本:
修改权限:
9.2 Shell 变量
#!/bin/bash
# echo表示输出语句
echo "hello world"
# 定义变量
name="张三"
# 使用变量${}
echo "nihao ${name} welcome to qy151"
9.3.Shell传递参数
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
9.4.Shell数组
数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。
与大部分编程语言类似,数组元素的下标由 0 开始。
Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下:
注意:用空格隔开,不能用逗号
9.5.基本运算符
9.5.1.算术运算符
Shell 和其他编程语言一样,支持多种运算符,包括:
-
算数运算符
-
关系运算符
-
布尔运算符
-
字符串运算符
-
文件测试运算符
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。
expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
例如,两个数相加(注意使用的是反引号 *`* 而不是单引号 *'*):
两点注意:
-
表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
-
完整的表达式要被 包含,注意这个字符不是常用的单引号,在 Esc 键下边。
9.5.2.关系运算符
关系运算符只支持数字,不支持字符串,除非字符串的值是数字 .
9.5.3.布尔运算符
下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20:
运算符 | 说明 | 举例 |
---|---|---|
! | 非运算,表达式为 true 则返回 false,否则返回 true。 | [ ! false ] 返回 true。 |
-o | 或运算,有一个表达式为 true 则返回 true。 | [ $a -lt 20 -o $b -gt 100 ] 返回 true。 |
-a | 与运算,两个表达式都为 true 才返回 true。 | [ $a -lt 20 -a $b -gt 100 ] 返回 false。 |
9.5.4.逻辑运算符
以下介绍 Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20:
运算符 | 说明 | 举例 |
---|---|---|
&& | 逻辑的 AND | [[ $a -lt 100 && $b -gt 100 ]] 返回 false |
|| | 逻辑的 OR | [[ $a -lt 100 || $b -gt 100 ]] 返回 true |
9.6.Shell流程控制
和 Java、PHP 等语言不一样,sh 的流程控制不可为空,如(以下为 PHP 流程控制写法):
在 sh/bash 里可不能这么写,如果 else 分支没有语句执行,就不要写这个 else。
9.6.1.if else fi
if 语句语法格式:
if condition then command1 command2 ... commandN fi
写成一行(适用于终端命令提示符):
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; fi
ps -ef | grep -c "mysql"统计某个进程的个数
9.6.2.for循环
与其他编程语言类似,Shell支持for循环。
for循环一般格式为:
for var in item1 item2 ... itemN do command1 command2 ... commandN done
实例:
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done
9.6.3.while语句
while 循环用于不断执行一系列命令,也用于从输入文件中读取数据。其语法格式为:
while condition do command done