Linux操作系统

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模式:把你的电脑作为路由器,只有你的主机才能访问该虚拟机,其他主机无法访问该虚拟机

桥接模式:把虚拟机作为主机和你的电脑效果是一样,它们都使用同一个交换机。其他人的电脑能够访问我的虚拟机

 

 

如果显示127.0.0.1,表示无法获取远程ip,参考Linux虚拟机不显示IP地址的三种解决方法_鸿翊的博客-CSDN博客https://blog.csdn.net/weixin_44567943/article/details/102670429?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-1-102670429-blog-121650863.pc_relevant_multi_platform_whitelistv2_ad_hc&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-1-102670429-blog-121650863.pc_relevant_multi_platform_whitelistv2_ad_hc&utm_relevant_index=2

 在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.安装软件

软件的安装方式:

  1. 二进制安装。---只需要解压就可以。 只针对特殊平台。 比如jdk tomcat

  2. RPM: 按照一定的规范就可以按照该软件。 无法安装依赖的文件。

  3. yum 远程安装 基于RPM 帮你把依赖的文件安装上去。 多

  4. 安装源码安装。 编译--->打包---->安装。

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 firewalld

4. 查看哪些端口号被放行
firewall-cmd --list-port

5. 防火墙移除端口号
firewall-cmd --remove-port=8080/tcp --zone=public --permanent

6. 关闭防火墙----慎重【关闭】 开启还会启动
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 密码等级

卸载mysql7:CentOS7.7 彻底卸载MySQL5.7 - 知乎 (zhihu.com)

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 脚本时,向脚本传递参数,脚本内获取参数的格式为:$nn 代表一个数字,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 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值