提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、虚拟机安装
1 创建虚拟机
创建新的虚拟机 -> 自定义 -> 默认 -> 稍后安装操作系统 -> 选择操作系统和版本 -> 设置虚拟机名称和位置 -> 处理器配置(默认) -> 虚拟机内存(默认) -> 网络连接:选择NAT -> I/O控制器类型(默认) -> 磁盘类型(默认) -> 创建新虚拟磁盘 -> 指定磁盘容量 -> 磁盘文件(默认) -> 完成
2 虚拟机系统安装
CD/DVD设置系统IOS镜像文件->开启虚拟机->安装->设置硬盘->i will configure partitioning->添加引导分区 /boot 256m->添加分区 swap 2048m->添加分区 /->在network&hostname中修改主机名->install
二、配置常见参数
1 网络
1.查看自己虚拟网卡地址
编辑->虚拟网络编辑器->vmnet8
2.修改网络配置信息
vi /etc/sysconfig/network-scripts/ifcfg-ens33
# 修改
ONBOOT=yes
BOOTPROTO=static # 静态ip DHCP动态获取ip
# 添加
IPADDR=192.168.146.201
NETMASK=255.255.255.0
GATEWAY=192.168.146.2
DNS1=114.114.114.114
# 删除
UUID
3.重启网卡
reboot # 重启
systemctl restart network # 重启网卡
ip addr # 查看IP信息
2 防火墙
1.保护本机的端口不被别人访问
2.如果端口需要被别人访问到,需要添加端口的防火墙除外
3.关闭防火墙
# 本次开机状态下防火墙关闭:本次服务内关闭防火墙
systemctl stop firewalld
# 服务器重启后防火墙禁用:禁用防火墙服务
systemctl disable firewalld
# 查看防火墙状态
systemctl status firewalld
3 软件安装限制
1.操作系统对未知软件的安装有可能拒绝或者警告,我们需要禁用这个功能
2.修改限制
vi /etc/selinux/config
# 修改
SELINUX=disabled
4 关机
# 直接拔掉电源
halt
# 直接关闭机器,但是有可能当前虚拟机其他人正在使用
poweroff
# 马上关闭计算机,但是可以给其他用户发送消息
shutdown -h now
# 重启
reboot
三、Linux常见命令
linux查询网站:linux命令大全
1 命令帮助
# 查看命令类型
type
# 查看内置命令的帮助文档
help
# 查看外部命令的帮助文档
man
2 常见命令
# 查询命令文件的位置
whereis
# 查看文件的类型
file
# 查看当前在线的用户
who
# 我是谁,当前使用的用户
whoami
# 我在哪,当前路径
pwd
# 查看内核信息
uname -a
# 类似于sout syso,打印语句
echo
# 清屏
clear
# 查看历史使用命令
histort
# 清除历史
histort -c
3 特殊字符
“.” :
- 如果文件的开始是“.”,说明当前文件是一个隐藏文件
- “.”指向当前目录
- “. .”指向当前目录的上级目录
“$” :说明这是一个变量
“*” :通配符
“~”:当前用户的家目录
- 每个用户的家目录是不同的
- root用户家目录在系统根目录下,其他用户的家目录在“/home/用户名”目录下
“/” :整个linux文件的根目录
命令的参数:
- 如果是单词一般加“- -”
- 如果是字符或者是缩写一般加“-”
四、Linux文件系统
1 磁盘挂载
mount /dev/disk1 /usr/download
disk1 1T
mount /dev/disk2 /usr/upload
disk2 100T
mount /dev/disk3 /usr/upload/photo
disk3 1P
2 二级目录
/bin # 可执行文件
/boot # 引导分区
/dev # 硬件设备信息
/etc # 系统配置文件
/home # 普通用户的家目录
/lib # 类库
/lib # 动态连接库
/media # 多媒体文件
/mnt # 挂载区
/opt # 软件安装目录
/proc # 当前的进程信息
/root # 超级管理员的家目录
/run # 临时的文件系统,开机启动信息
/sbin # 管理员相关命令
/srv # 系统启动需要的数据
/tmp # 临时数据存放目录
/var # 数据存放目录,不会被清除
/usr # 存放当前用户操作处理信息
3 文件操作
cd # 切换目录
ls ll # 显示文件夹下所有文件
mkdir # 创建文件目录
mkdir -p # 自动创建文件父目录
mkdir -p a/{bcd}ls # 一次可以创建多子目录
rmdir # 删除空文件夹
cp # 拷贝文件或者文件夹
cp -r # 拷贝文件夹下所有内容
mv # 移动文件或文件夹
rm # 删除文件或文件夹
rm -f # 强制删除文件
rm -r # 删除文件夹
rm -rf # 强制删除文件或文件夹
# Inode:文件在文件系统中的id;access:访问时间;modify:修改时间;change:创建时间
stat # 查看文件状态
touch # 如果不存在该文件,则创建文件,如果存在该文件,则修改三个时间
# 软链接和原始文件不是同一个文件,硬链接与原始文件是一个文件
ln # 创建文件的硬链接
ln -s #创建软连接(+源文件地址 链接名)
cat # 一次性加载文件内容
tac # 一次性倒叙加载文件内容
# 分页查看文档内容,回车(下一行),空格(下一页),b(回退),q(退出)
more less
# 从文章开始读取n行,默认如果超过10行则读取10行,否则读取现在行数(head -行数 文件名)
head
tail # 从文章结尾开始读取n行(tail -n 文件名)
# 监听指定名字的文件,但是当文件被删除后,即使重新创建,inode也会发生变化,监听会失败
tail -f baidu
# 监听指定名字的文件,如果文件删除后,重新创建,会重新监听新文件的数据变化,监听不受影响。
tail -F baidu
4 vi与vi编辑器
1.打开文件
vi a.txt # 正常打开文件
vi +n a.txt # 打开文件,将光标置于第n行
vi + a.txt # 打开文件,将光标置于最后一行
vi +/word # 打开指定搜索单词的位置;n:下一个;N:上一个
2.三种模式:
- 编辑模式
- 输入模式
- 末行(命令行)模式
命令行模式常用命令:
set nu # 设置行号
set nonu # 取消行号
w # 保存
q # 退出
wq # 保存并退出
q! # 强制退出但不保存
/pattern # 搜索指定模式的字符串
s/p1/p2/ # 替换字符串,将p2替换为p1,只替换当前行第一个
s/p1/p2/g # 替换当前行所有字符串
3,8s/p1/p2/g # 查找指定行并替换
g/p1/s//p2/g # 替换全文字符串
5 计算机间数据传输
1.windows -> linux
# 安装lrzsz
yum install lrzsz -y
rz /a # 将文件从windows上传到linux
sz /a # 将文件从linux传输到windows
2.linux -> linux
scp /a/a.txt root@192.168.146.201:/b/
scp root@192.168.146.201:/a/a.txt /b/
scp -r # 拷贝文件夹
6 文件大小
df -h # 查看分区信息
du -h # 查看目录空间大小
du -h --max-depth=1 /a/ # 查看目录所占空间大小,指定文件夹深度
7 文件压缩
1 tar:主要针对.tar.gz文件
tar -zxvf a # zx解压;v显示打包过程;f指定压缩包的名称
tar -zcvf a b # a压缩后的名称 b源文件;zc压缩
-C # 指定解压或者压缩目录
2 zip:主要针对.zip文件
# 安装
yum install zip unzip -y
# 压缩
zip -r a.zip src
# 解压
unzip a.zip
五、Linux的网络信息
1 主机名称修改
hostname node1 # 临时修改
vi /etc/hostname # 长久修改
2 DNS解析
域名解析服务:将域名转换为ip地址
linux修改主机域名
vi /etc/hosts
# 添加
192.168.146.201 node1
3 网络相关命令
ifconfig # 查看当前网卡的配置信息,可用ip addr替代
netstat # 查看当前网络的状态信息
ping # 查看与目标ip是否能够连通
talnet # 查看与目标ip的指定端口是否能够连通
curl -XGET 192.168.146.201 # 在命令行访问某些ip地址的网址
netstat:查看当前网络的状态信息
- 一个机器默认有65536个端口,端口号[0,65535]
- 一个端口只能被一个程序所监听,端口已经被占用
- -anp:查看计算机的端口监控情况
- -r :查看核心路由表
talnet:查看与目标ip的指定端口是否能够连通
- 安装:yum install talnet -y
- talnet 192.168.146.201 8080
4 主机间相互免密钥
ssh-keygen -t rsa -P ‘’ -f ~/.ssh/id_rsa # 生成密钥
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.146.201 # 公钥传递
~/.ssh/authorized_keys # 密钥存放地址
5 主机名与host校验
1.本次连接有效
ssh -v -o GSSAPIAuthentication=no root@192.168.146.201
2.所有有效
# 修改本机客户端配置文件ssh_config
vi /etc/ssh/ssh_config
# 修改
# GASSAPIAuthentication yes
GASSAPIAuthentication no
# 添加
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
6 日期与时间
1.日期自动同步
yum install ntp -y
ntpdate cn.nap.org.cn
7 用户
# 新增用户(会创建同名的组和家目录)
useradd username
# 设置密码
passwd username
# 删除用户(级联删除家目录和组)
userdel -r username
# 修改用户名
usermod -l oldusername username
# 锁定用户名
usermod -L username
# 解锁用户名
usermod -U username
# 查看(用户名,编号,组编号,家目录)
cat /etc/passwd
# 查看用户名和密码
cat /etc/shadow
# 切换用户
su username
8 组
# 创建组
grouadd gname
# 删除组
groupdel gname
# 修改组名称
groupmod -n gname oldgname
# 查看当前用户所对应的组,注:当创建用户时,会默认创建一个同名的主组
groups
# 修改附属组
usermod -G gname username
# 修改主组
usermod -g gname username
# 查看组信息
cat /etc/group
9 权限
权限项 | 读/写/执行 | 读/写/执行 | 读/写/执行 |
---|---|---|---|
字符表示 | r/w/x | r/w/x | r/w/x |
数字表示 | 4/2/1 | 4/2/1 | 4/2/1 |
权限分配 | 文件所有者U | 文件所属组用户G | 其他用户O |
1.权限的UGO模型:
三组权限(属主的权限、属组的权限、其他的权限)
将来修改文件权限可以从rwx和ugo两个方面修改
2.修改文件权限
修改文件所属的主
chown uname /a/b.txt
# 修改文件夹时让子目录迭代修改
chown -R uname:gname /a/b.txt
chown uname:gname /a/b.txt
修改文件所属的组
# 当用户的组被修改后,需要重新登陆才能获取新组的权限
chgrp gname /a/b.txt
修改文件的rwx
chmod o+w /a/b.txt
chmod ug+rw /a/b.txt
chmod ugo-rw /a/b.txt
# 权限rwx分别对应数字4/2/1 5=4+0+1 r-x
chmod 664 /a/b.txt // rw- rw- r--
3.权限赋予:将管理员权限分配给普通用户
# 文件位置
vim /etc/sudoers
# 修改
visudo
# 修改Line 99
uname ALL=(root) 权限路径
# 切换用户
su uname
六、管道与重定向
1 管道
|:将前面的结果作为参数传递给后面的命令
grep:强大的文本搜索工具
cat a.txt | grep word
2 重定向
改变数据输出的位置,方向
# 1:正确信息 2:错误信息
ls / 1> a.txt
ls / > a.txt
ls abcd 2> a.txt
# >:覆盖 >>:追加
ls / 1> a.txt
ls / 1>> a.txt
# 结合使用
ls /etc/abc > a.txt 2>&1
ls /etc/abc >> a.txt 2>&1
七、Linux的系统进程
1 进程信息
# UID所属用户;PID当前进程编号;PPID当前进程编号的父进程编号
ps ef
# 所有信息
ps -aux
# 当前服务器内存使用率
top
2 后台进程:在命令后添加一个&
ping www.baird.com >> baidu &
# 查看当前的后台进程
jobs -l
# nohub防止后台进程被挂起
nohub ping www.baidu.com >> baidu 2>&1 &
3 杀死进程
kill -9 17599
八、软件安装
1.yum命令
search # 查看查询命令或者软件
info # 查看包信息
2.更换阿里源
# 安装wget
yum install wget -y
# 备份系统原始配置文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 使用wget获取阿里yum源配置文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清空以前yum源的缓存
yum clean all
# 获取阿里云的缓存
yum makecache
3.安装MySQL
# 安装mysql依赖
yum install perl net-tools -y
# 卸载mariadb
rpm -qa | grep mariadb
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
# 安装mysql
tar -xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar
rpm -ivh mysql-community-common-8.0.23-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.23-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-compat-8.0.23-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-client-8.0.23-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-server-8.0.23-1.el7.x86_64.rpm --force --nodeps
# 启动mysql
systemctl start mysqld
# 查找密码并登陆mysql
cat /var/log/mysql.log | grep password
ALTER USER() ‘root’@‘localhost’ IDENTIFIED BY ‘Cz12345@’;
mysql -u root -p
# 修改mysql密码
set global validate_password.policy=0;
set global validate_password.length=6;
set global validate_password.mixed_case_count=0;
ALTER USER() ‘root’@‘localhost’ IDENTIFIED BY ‘123456’;
# 修改mysql远程登录权限
use mysql;
update user set host=‘%’ where user=‘root’;
commit;
exit;
# 重启数据库
systemctl restart mysqld
# 使用Navicat连接mysql
九、Linux三剑客
1 普通剑客
# 用制定规则来切分文本
cut
# 对文件passwd以:进行切分,取第1,2,3列值
cut -d’:’ -f1,2,3 passwd
# 对文本中的行进行排序
sort
sort abc.txt
# 对每一行的数据进行切分,按照第二列进行排序
sort -t’ ’ -k2 abc.txt
# 逆序排序
sort -t’ ’ -k2 -r abc.txt
# 按照数值大小进行排序,如果有字母,字母在前
sort -t’ ’ -k2 -n abc.txt
# 统计单词的数量
wc
# 结果:-l:行数;-w:单词数;-c:字符数
wc abc.txt
2 grep
# grep对文本进行搜索
# 同时搜索多个文件
grep school passed abc.txt
# 显示匹配的行号
grep -n school passwd
# 显示不匹配
grep -nv school passwd --color=auto
# 忽略大小写
grep -i school passwd --color=auto
# 使用正则表达式匹配
grep -E “[1-9]+” passwd --color=auto
3 sed
sed:从文件或者管道中读取一行,处理一行,输出一行;如此循环
1.行的选择模式:
10 # 第十行
m,n # 第m行到第n行
m,+n # 第m行到第m+n行
m~n # 从第m行开始依次累加n行
m,$ # 从m行开始到最后一行
/school/ # 匹配到school的行
/u1/,/u4/ # 从匹配u1到匹配u4
2.增
sed ‘2a wenben’ passwd # 追加一行,在后面
sed ‘2i wenben’ passwd # 打印到控制行之后,插入一行,在前面
sed -i ‘2a wenben’ passwd # 直接修改到文件
3.删
sed ‘3,10d’ passwd # 删除第3到第10行
4.改
1.整行替换
sed ‘3,20c hahaha’ passwd # 3-20行每一行都替换为指定文本
sed ‘3~1c hehehe’ passwd # 从第3行开始每隔1行换一次
2.字符替换
sed ‘1,5s/root/wenben/g’ passwd
sed ‘1,5s#/#-#g’ passwd
4 awk
作用:找谁,干啥
十、Linux的shell编程
1 执行shell的方式
# 执行的必须是一个可执行文件
./abc.sh
# 执行文件可以是一个普通文件
sh abc.sh
# 直接在当前进程执行脚本,执行bash时开启一个子进程,当脚本中出现ping时开启一个子线程
source bac.sh
2 shell语法
1.变量
export # 可以将当前进程的变量传递给子进程使用
2.shell语法:查询网站
3 脚本开机自启动
vim /etc/rc.d/rc.local # 在其中添加脚本
chmod u+x /etc/create.d/crystal/local # 赋予执行权限
reboot
vim schoolntpdate.sh # 创建开机自启动脚本
# 脚本内容如下
——————————————————
#! /bin/bash
# chkcofig: 2345 88 99
# description:auto_run
# 开机自启动同步时间
yum info nap && ntpdate cn.nap.org.cn
——————————————————
chomd u+x schoolntpdate.sh # 给其设置执行权限
cp schoolntpdate.sh /etc/init.d # 将脚本拷贝到/etc/init.d/目录下
chkconfig —add /etc/init.d/schoolntpdate.sh # 添加到服务
reboot # 重启服务器
4 定时任务
1.查看定时任务服务状态
systemctl status crond.service
2.添加任务,编辑当前用户的任务列表
crontab -e
3.编辑任务
***** command # 分 时 日 月 周 命令
第1列表示分钟1-59,每分钟用或者/1表示
第2列表示小时1-23,0表示0点
第3列表示日期1-31
第4列表示月份1-12
第5列表示星期0-6,0表示星期天
第6列要运行的命令
:表示任意时间,实际上就是每的意思
-:表示区间,是一个范围
,:是分割时段
/n:表示分割,可以看成是除法,/5 * * * * cmd,表示每隔5分钟执行一次
# 每晚21:30重启apache
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
# 每月1、10、20日的4:45重启apache
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
# 每周六、周日的1:10重启apache
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
# 每天18:00-23:00之间每隔30分钟重启apache
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
# 每周六的11:00重启apache
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
# 每一小时重启apache
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
# 晚上11:00-早上7:00之间,每隔一小时重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
# 每月的4号与每周一到周三的11:00重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
# 1月1号的4:00重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
4.使其生效
systemctl restart crond.service
5.查看当前的定时任务
crontab -l
6.产看历史任务
vim /var/spool/mail/root
7.清除任务
crontab -t
5 编写环境集群脚本
#! /bin/bash
echo "————————在opt和var创建文件夹"
mkdir -p /opt/db
mkdir -p /var/db
echo "————————禁用防火墙"
systemctl stop firewalld
systemctl disable firewalld
echo "————————修改selinux”"
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
echo "————————安装wget"
yum instal wget -y
echo "————————更换yum源"
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
echo "————————安装常用软件,man、man-pages、ntp、vim、lrzsz、zip、unzip"
yum install man man-pages ntp vim lrzsz zip unzip -y
echo "————————DNS域名配置"
echo "192.168.146.201 node1" >> /etc/hosts
echo "192.168.146.202 node2" >> /etc/hosts
echo "192.168.146.203 node3" >> /etc/hosts
echo "192.168.146.204 node4" >> /etc/hosts
echo "————————安装jdk"
cp jdk-8u162-linux-x64.tar.gz /usr/java
cd /usr/java
tar -zxvf jdk-8u162-linux-x64.tar.gz
rm -f jdk-8u162-linux-x64.tar.gz
echo export JAVA_HOME=/usr/java/jdk1.8.0_162 >> /etc/profile
echo export PATH=$JAVA_HOME/bin:$PATH >> /etc/profile
echo export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib >> /etc/profile
source /etc/profile
echo "————————安装tomcat"
tar -zxvf apache-tomcat-8.5.78.tar.gz
mv apache-tomcat-8.5.78 /usr/opt/db/apache-tomcat-8.5.78
echo "————————安装mysql"
rpm -e --nodeps `rpm -qa | grep mariadb`
tar -xvf mysql-8.0.28-1.el7.x86_64.rpm-bundle.tar
rpm -ivh mysql-community-common-8.0.28-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.28-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-compat-8.0.28-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-client-8.0.28-1.el7.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-server-8.0.28-1.el7.x86_64.rpm --force --nodeps
temppasswd =`grep "A temporary password" /var/log/mysqld.log | awk '{ print $NF}'`
mysql -urology -p$temppassword —connect-expired-password << EOF
ALTER USER() 'root'@'localhost' IDENTIFIED BY 'Cz12345@';
set global validate_password.policy=0;
set global validate_password.length=6;
set global validate_password.mixed_case_count=0;
ALTER USER 'root'@'localhost' IDENTIFIED BY '970522';
use mysql;
update user set host='%' where user='root';
commit;
exit;
EOF
systemcal restart mysqld
echo "————————设置开机启动项"
touch /usr/local/script/auto_ntpdate.sh
echo '#! /bin/bash' >> /usr/local/script/auto_ntpdate.sh
echo 'yum info ntp && ntpdate cn.ntp.org.cn' >> /usr/local/script/auto_ntpdate.sh
chomd u+x /usr/local/script/auto_ntpdate.sh
echo '/usr/local/script/auto_ntpdate.sh' >> /etc/rc.local
chmod u+x /etc/rc.local
echo "————————删除文件"
rm -rf apache-tomcat-8.5.78.tar.gz
rm -rf jdk-8u162-linux-x64.tar.gz
rm -rf mysql*
rm -rf *.sh
:set fileformat=unix