目录
linux概述
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个多用户、多任务、支持多线程和多 CPU 的操作系统
特点
- 开源稳定
- 多线程 ,多用户,处理高并发
- 安全性好
- 对内存和文件管理优越
用途
- Linux 运维工程师
- Linux 嵌入式开发工程师
- Linux 环境下部署项目
VMware虚拟机
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统
进入虚拟系统后,所有操作都是在这个全新的独立的虚拟系统里面进行,不会对真正的系统产生任何影响,现有系统和虚拟镜像间灵活切换
linux目录结构
linux常用命令
文件目录
- cd… 进入到根目录
- ll 查看该目录下详细文件信息
- ls 查看该目录下文件
- ls -a 显示隐藏文件
- mkdir abc 创建文件夹名为abc
- rm -f abc 删除文件夹名为abc
- rmdir dir1 删除一个叫做 ‘dir1’ 的目录’(删除空文件夹)
- rm -rf dir1 删除一个叫做 ‘dir1’ 的目录并同时删除其内容
- cp 文件名 /目标地址 复制文件
- touch file 创建文件
- tar –zxvf abc 解压.tar.gz 文件abc .tar.gz
- env 查看环境变量
- printenv USER 查看环境变量USER的值
- ps -f 查看当前进程
网络配置
仅主机模式
桥接模式
通过物理主机网卡架设了一座桥梁,从而连入了实际的网络中
NAT 模式
利用主机的VMnet8 虚拟网卡,主机上的 VMnet8 虚拟网卡被直接连接到 VMnet8 虚拟交换机上与虚拟网卡进行通信
配置
-
将主机上的VMnet8虚拟网卡的网关与vmware虚拟机nat设置的默认网关相同
-
设置静态固定ip
修改 /etc/sysconfig/network-scripts/ifcfg-ens33
ONBOOT=yes 启动生效 BOOTPROTO=static 设置为静态 ip IPADDR=192.168.网段.xx ip 地址 GATEWAY=192.168.网段.2 网关 NETMASK=255.255.255.0 子网掩码 DNS1=192.168.网段.2
防火墙设置
systemctl start firewalld.service 启动防火墙
systemctl stop firewalld.service 停止防火墙
systemctl status firewalld 查看防火墙状态
systemctl disable firewalld.service 禁用防火墙
软件安装
yum : 软件包管理器
基于 RPM包管理,能够从指定的服务器自动 下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum 提供了查找、安装、删除某一个、 一组甚至全部软件包的命令,而且命令简洁而又好记
语法
- yum list | grep 程序名 查看已经安装的软件
- Yum list 程序名 查看可以安装的软件
yum [options] [command] [package …] (安装)
- options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
- command:要进行的操作 。 Install(安装), update (更新), info (查看信息),remove (删除), clean (清除缓存)
- package :操作的对象
vim编辑器
安装:yum -y install vim
命令:
- vim 文件名 进入文件编辑,默认为预览模式
- i 进入编辑模式
- esc 退出输入模式
- :wq 保存并离开
- :q! 离开不保存
宝塔Linux
sudo /etc/init.d/bt default
查看登录地址和账号
cd /www/server/panel && python tools.py panel testpasswd
重置密码
java环境搭建
安装jdk
- 将jdk上传到/usr/local/java 目录下
- 解压: tar –zxvf jdk-8u261-linux-x64.tar.gz
- 配制环境变量:
- vim /etc/profile 修改环境变量文件加入如下两行(具体视安装 java地址修改)
- export JAVA_HOME=/usr/local/java/jdk1.8.0_111
- export PATH= P A T H : PATH: PATH:JAVA_HOME/bin
- 使文件生效 : source /etc/profile
安装tomcat
- 将安装包apache-tomcat-9.0.37.tar.gz解压到/usr/local
- 进入bin目录
./startup.sh 启动服务器 ./shutdown.sh 关闭服务器
在浏览器中访问虚拟机中的 tomcat: ip+端口
安装mysql
-
检测系统是否自带安装 mysql :yum list installed | grep mysql
-
给 CentOS 添加 rpm 源,并且选择较新的源
wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm
-
安装第一步下载的 rpm 文件
yum install mysql80-community-release-el8-1.noarch.rpm
-
使用 yum 安装 mysql
yum install mysql-server
-
查看当前是否为开机服务
systemctl list-unit-files|grep
-
设置为开机启动
systemctl enable mysqld.service
-
查看当前是否启动 MySQL 服务
ps -ef|grep mysql
-
启动 mysql 服务
systemctl start mysqld.service
-
登录设置即可
mysql -uroot -p
-
设置其他 ip 可以访问
Update user set host=’%’where user=’root’
-
设置密码及加密格式
输入命令 ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘newpassword’;
-
刷新指令 FLUSH PRIVILEGES;(刷新权限)
下载元数据失败问题
CentOS Linux 8 - AppStream 错误:为仓库 ‘appstream’ 下载元数据失败 : Cannot prepare internal mirrorlist:
原因:CentOS Linux 8操作系统版本在2022年12月31日结束了生命周期(EOL),Linux社区不再维护该操作系统版本。所有的CentOS Linux 8的yum源都无效!
解决:
- 备份旧的源
cd /etc/yum.repos.d/
mkdir repoBack
mv *.repo repoBack/
- 更新新的源
到阿里云网站http://mirrors.aliyun.com/repo/
下载对应的repo文件
下载完成后传到 /etc/yum.repos.d/ 目录下
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
- 清除旧的yum缓存并生成新的yum缓存
yum clean all
yum makecache
yum update
Shell编程
shell是一个命令行解释器,它接收应用程序和用户命令,然后调用内核
可以用shell编程编写一些定时化操作命令,比如向数据库保存日志等
hello world
第一行以#!/bin/bash
开头,指定解析器,后面编写命令,使用bash
或sh
执行
使用chomd +x hello.sh
给这个文件添加可执行权限
- 就可以直接执行
/shells/hello.sh
来运行脚本文件 - 如果在shell目录下,直接使用相对路径
./hello.sh
来执行 . hello.sh
:使用source
或.
执行文件
前两种都是启动了一个bash进程,在进程里执行命令,第三中不启动子shell进程,避免了子环境获取不到父环境信息
变量
系统变量
自定义变量
a=10
定义局部变量
a=1+2
a=1+2 , a=$[1+2]
a=3运算用[ ]
readonly a=5
定义只读变量,不能撤销
echo $a
输出
a="hello world"
定义局部变量语句
set |grep a
可以获取系统或自定义变量
export a
导出局部变量,声明成全局变量
unset a
撤销a 的赋值
在子shell改完后的全局变量在父shell不可知
特殊变量
$0
为脚本名称,$1
第一个参数 ,${10}
第十个参数
$#
获取所有输入参数个数
$*
代表命令行中所有参数,看成一个整体
$@
代表命令行中所有参数,把每个参数区分对待(集合)
$?
最后一次执行命令的返回状态:0
正常 1
一般性错误
运算符
a=$[5*10]
运算
a=$(expr 5 \* 2)
将一串字符当作命令
条件判断
[ $a = 10 ]
,注意空格[ $a != 10 ]
不等
用$?
接收判断结果,0为true,1为false
整数间比较
-eq
等于
-ne
不等于
-lt
小于
-gt
大于
-le
小于等于
-ge
大于等于
按照文件权限判断
[ -r hello.sh ]
该文件是否有可读权限
-w
-x
&&
逻辑与,||
逻辑或
流程控制
if判断,前后加个x,防止传空值报错
多分支
case
循环
for
语法1
语法2
语法3,类似增强for循环
while
读取控制台输入
-t
超时取消退出
函数
函数就像轻量级的脚本文件,多出返回值
系统函数
调用: $()
,命令替换
basename
字符串截取,显示文件名,删掉所有的前缀包括最后一个’/',然后将字符显示出来;
可以切前缀或者后缀
dirname
字符串截取,截取前面的路径