VMware虚拟机安装
Vmavare虚拟机
CentOS8系统
准备iso
光盘
详细步骤如下
1.新建虚拟机
2.选择典型(推荐)点击下一步
3.选择稍后安装iso
4.选择linux
5.选择系统存放位置
6.分配磁盘大小(分配20个G,分配多一点),点击下一步
7.点击完成
8.编辑虚拟机
内存大小
使用iso
镜像文件
网络适配器,选择VMnet1
9.直接安装
10.选择英文界面
11.安装软件,第一个点击一下即可
12.设置用户密码
13.安装成功,重启
14.快照备份
修改密码
Root用户密码修改流程
1.e
按e进入编辑模式
2.rd.break
在quiet后加入rd.break
3.ctrl+x
按ctrl+x进入swtch_root模式
4.mount -o remount,rw /sysroot
重新挂载根分区
5.切换根分区
chroot /sysroot
6.passwd root
修改root的密码,必须是8位以上复杂密码
7.touch /.autorelabel
selinux在重启后更新label
8.exit
退出
9.reboot
重启系统
10.最后用root和新密码登录即可
RPM软件包
什么是RPM:
RPM:redhat package management英文缩写,只适于于Redhat和Centos系统
相当于windows的exe程序
安装RPM包:
rpm -ivh psmisc-23.1-3.el8.x86_64
查看RPM包:
rpm -qa
rpm -qa | grep psmisc-23.1
查看RPM包安装的文件:
rpm -ql psmisc-23.1
rpm -ql psmisc-23.1 | grep pstree
反查文件是否是由RPM包安装的:
rpm -qf /usr/bin/pstree
查看命令所在路径
which pstree
删除RPM安装程序:
rpm -e psmisc-23.1
yum软件包管理
类似于python中pip
第三方包管理
1.挂载光盘
mount /dev/cdrom /media
2.查看挂载
df
3.配置yum
cd /etc/yum.repos.d/
mv CentOS-Media.repo /mnt
rm -rf *
mv /mnt/CentOS-Media.repo ./
4.vi CentOS-Media.repo
[c8-media-BaseOS]
baseurl=file:///media/BaseOS
gpgcheck=0
enabled=1
[c8-media-AppStream]
baseurl=file:///media/AppStream
gpgcheck=0
enabled=1
5.查看yum可控制的软件包
yum list | wc -l
yum list | grep iptables
6.yum安装rpm软件包
yum -y install iptables-services
YUM仓库的前提是做准备光盘
1.检查光盘是否正常挂载
df
2.挂载
mount /dev/cdrom /media
配置YUM仓库:
1.删除其他repo文件,只留下CentOS-Media.repo
cd /etc/yum.repos.d/
mv CentOS-Media.repo /mnt
rm -rf *
mv /mnt/CentOS-Media.repo ./
2.设置CentOS-Media.repo文件
vi CentOS-Media.repo
[c8-media-BaseOS]
baseurl=file:///media/BaseOS
gpgcheck=0
enabled=1
[c8-media-AppStream]
baseurl=file:///media/AppStream
gpgcheck=0
enabled=1
查看YUM可控制的软件包
yum list
yum list | wc -l
yum list | grep httpd
YUM安装rpm软件包
yum -y install httpd
用YUM如何去卸载rpm包
yum -y remove httpd
selinux
1.查看
sestatus
2.关闭
vi /etc/selinux/config
SELINUX=disabled
3.重启
init 6
firewald
firewalld防火墙:
1.查看
systemctl status firewalld
2.关闭
systemctl stop firewalld
3.开机关闭
systemctl disable firewalld
iptables
1.查看规则
iptables -L -n
2.清空规则
iptables -F
3.保存规则
service iptables save
原理图
IP、DNS配置
主机名管理:
1.查看主机名(localhost)
hostname
2.查看主机名与系统详情
hostnamectl status
3.临时修改
hostname yzmedu
4.永久修改
1)直接修改文件
vi /etc/hostname
2)hostnamectl方法
hostnamectl set-hostname
3)重启生效
init 6
网络管理:
1.查看
ifconfig
ifconfig ens32
2.临时修改
ifconfig ens32 192.168.10.1
3.永久修改
1)修改文件
vi /etc/sysconfig/network-scripts/ifcfg-ens32
BOOTPROTO=dhcp | static
ONBOOT=yes | no
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=114.114.114.114
DNS1=8.8.8.8
查看路由信息
route -n
通讯测试:
检测是否能正常通讯
ping www.baidu.com
可测试ip、dns和网关是否都设置正确
nmclic网络配置
a.查看网络设备状态
nmcli device status
查看网卡详细信息
nmcli device show ens32
b.设置静态ip地址
nmcli connection modify ens32 ipv4.addresses ‘192.168.1.100’
c.设置DNS
nmcli connection modify ens32 ipv4.dns ‘114.114.114.114’
d.设置网关
nmcli connection modify ens32 ipv4.gateway ‘192.168.1.1’
e.设置IP地址为手动指定
nmcli connection modify ens32 ipv4.method manual
f.设置IP地址为dhcp自动获取
nmcli connection modify ens32 ipv4.method auto
g.设置开机自动连接
nmcli connection modify ens32 connection.autoconnect yes
重新加载配置文件
nmcli connection reload
激活网卡
nmcli connection up ens32
nmcli device connect ens32
nmcli device reapply ens32
SSH客户端
SSH客户端有很多,如宝塔面板,cmder
cmder
1 |
|
密钥方式登录
SSH密钥操作:
1.win生成密钥对
ssh-keygen -t rsa
2.进入.SSH目录
cd C:\Users\Administrator.ssh
3.把公钥拷贝到linux下/root/.ssh目录下
scp id_rsa.pub root@192.168.2.1:/root/.ssh
4.在linux上把公钥改名
mv id_rsa.pub authorized_keys
5.客户端无口令测试-命令操作
ssh root@192.168.2.1
6.客户端无口令测试-文件传输
scp index.php root@192.168.2.1:/root/
ssh登录服务器
ssh root@192.168.2.1
宝塔面板
直接登录
WinSCP
这个软件可用于传输文件到Linux服务器上
系统启动流程
1.BIOS加电自检
2.把MBR加载到内存
3.加载grub
4.Kernel自身初始化
5.启动第一个程序systemd
6.检查默认运行级别
7.启动相应级别下的所有程序服务
8.加载/etc/rc.d/rc.local脚本
9.systemd执行multi-user.target下的getty.target及登录服务
10.systemd执行graphical需要的服务
Linux运行级别
0 shutdown.target(关机)
1 emergency.target(紧急救援模式)
2 rescue.target(救援模式)
3 multi-user.target(多用户模式|字符系统模式)
4 无
5 graphical.target(桌面系统)
6 无(重启)
查看默认级别
systemctl get-default
设置默认级别
systemctl set-default multi-user.target
切换运行级别
1.ini命令
init 0|1|3|5|6
2.systemctl命令
systemctl isolate multi-user.target
systemctl isolate graphical.target
查看运行级别
runlevel
列出所有target
systemctl list-units –type=target –all
查看系统中所有服务的启动状态
systemctl list-unit-files
脚本自启动文件/etc/rc.d/rc.local
systemctl start sshd.service
systemctl服务名官方建议
sshd.service
查看服务是否启动
systemctl is-active sshd.service
systemctl status sshd.service
查看是否开机启动
systemctl is-enabled sshd.service
systemctl
自定义服务脚本,添加到systemctl的管控范围
systemctl服务管理:
1.查看服务启动级别
[Install]
WantedBy=multi-user.target
2.查看状态
systemctl status sshd.service
3.启动服务
systemctl start sshd.service
4.重启服务
systemctl restart sshd.service
5.关闭服务
systemctl stop sshd.service
6.重载服务
systectl reload sshd.service
7.开机启动
systemctl enable sshd.service
8.开机关闭
systemctl disable sshd.serivce
9.是否开机启动
systemctl is-enabled sshd.service
10.是否启动
systemctl is-active sshd.serivce
自定义startMyApp.sh脚本程序:
vi /mnt/startMyApp.sh
1 |
|
给脚本设置执行权限:
chmod a+x startMyApp.sh
自定义myapp服务脚本:
vi /etc/systemd/system/myapp.service
[Unit]
Description=myapp service
[Service]
Type=simple
WorkingDirectory=/mnt
ExecStart=/mnt/startMyApp.sh
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
把myapp服务加入开机启动:
systemctl enable myapp.service
关闭开机自启动
systemctl disable myapp.service
启动myapp服务:
systemctl start myapp.service
关闭myapp服务:
systemctl stop myapp.service
查看myapp服务状态:
systemctl status myapp.service
-———————————
跟踪文件
tail -f MyApp.txt
脚本开启自启动
vi /etc/rc.local
添加命令
/mnt/startMyApp.sh
设置权限
chmod +x /etc/rc.d/rc.local
文件目录结构
bin 系统常用命令
boot 系统启动文件
dev 硬件设备
etc 程序配置文件
home 普通用户家目录
lib 程序服务
lib64 程序服务
media 挂载光盘
mnt 测试目录
opt 测试目录
proc cpu、内存和硬盘等设备信息
root root家目录
run 程序进程pid
sbin 只有root才有权执行的命令
srv 自己的程序或源代码的放置目录
sys 内核信息文件
tmp 临时文件
usr 非系统程序或源代码安装执行目录
var 系统或程序日志
用户和组
用户管理:
1.查看用户
id root
2.创建用户
useradd user1
3.设置密码
passwd user1
4.shell中设置密码
echo “123” | passwd –stdin user1
5.与用户有关的文件
/etc/passwd 用户信息
/etc/group 用户组信息
/etc/shadow 用户密码
/home/user1 用户家目录
6.删除用户
userdel -r user1
组管理:
1.把user1加入root组
gpasswd -a user1 root
2.把user1从root组删除
gpasswd -d user1 root
Vi编辑器
图解
输入模式
1.a
在当前字符的后面输入
2.s
删除当前字符并输入
3.i
在当前字符的前面输入
4.o
当前字符所在行下方输入
5.A
当前行后面输入
6.S
删除当前行并输入
7.I
当前行前面输入
8.O
当前字符所在行上一行输入
命令模式
1.H
左
2.J
下
3.K
上
4.L
右
5.x
删除当前字符,3x删除三个字符
6.r
单字符替换
7.dd
删除一行,剪切一行
8.dw
删除一个单词
9.d^
从当前字符删除到行首
10.d$
从当前字符删除到行末
11.G
最后一行
12.1G
第一行 nG第几行
13.dG
从当前行删除到最后一行
14.d1G
从当前行删除到第一行
15.yy
复制当前行
16.3yy
复制三行,nyy
17.p
粘贴到下一行
18.2p
重复粘贴两次,np
19.P
粘贴上一行
20.u
撤销
21.ctrl+r
恢复
22./hello
查找hello单词,查找多个n键
23.v
按v键再按上下左右进行视图选中,进行快速缩进
末行模式
1.q
不保存退出
2.q!
强制不保存退出
3.wq
保存退出
4.x
保存退出,与wq一致
5.w
保存不退出
6.%s/hello/world/g
把一篇文章中的所有hello全部替换成world,%第一行到最后的意思
7.1,10s/hello/world/g
把第1行到第10行的hello替换成world
系统命令
1.查看历史命令
history
2.清除历史命令
history -c
3.关闭系统
init 0
4.重启系统
init 6
5.查看当前目录下的所有文件
ls
6.查看当前目录下的所有文件及权限
ll或ls -l
7.切换目录
cd
8.记录最近两次使用的目录
cd -
9.查看当前操作路径
pwd
10.强制中断正在执行的操作
ctrl+c
11.清空当前屏幕
clear或ctrl+l
查看内存:
free
free -m
free -g
查看硬盘:
df
df -T
df -h
查看系统正在登录的用户:
who
查看系统最后一重要操作:
last
查看进程实时消耗的cpu和内存:
top
查看系统1分钟、5分钟和15分钟平均负载:
uptime
查看服务进程:
ps -ef
pstree
查看服务端口:
netstat -tunpl
杀掉进程:
kill -9 pid
pkill pname
文件操作
1.创建文件
touch file
2.删除文件
rm -rf file
3.修改文件名
mv file1 file2
4.查看文件内容
cat file | more
5.复制文件
cp file1 file2
6.移动文件
mv file1 file2
7.编辑文件
vi file
8.批量创建文件
touch {1..9}.txt
9.查看文件前十行数据
cat 2.txt | head -2
10.查看文件后十行数据
cat 2.txt | tail -2
11.跟踪文件数据
tail -f file
12.查找文件
1)find /mnt -name 2.txt
2)updatedb
locate file1
13.查找文件内容
grep ‘linux’ file
grep -i ‘linux’ file
目录操作
1.创建目录
mkdir dir1
2.递归创建多级目录
mkdir -p dir1/dir2/dir3
3.删除目录
rm -rf dir1
4.修改目录名称
mv dir1 dir2
5.复制多级结构目录
cp -r div1 div2
6.查看目录
tree dir1
Gz压缩包管理
1.制作gz压缩包:
tar czf mydir1.tar.gz mydir1
2.gz压缩包解压:
tar xzf mydir1.tar.gz
3.查看gz压缩包:
tar tf mydir1.tar.gz
Bz2压缩包管理
1.制作bz2压缩包:
tar cjf mydir1.tar.bz2 mydir1
2.bz2压缩包解压:
tar xjf mydir1.tar.bz2
3.查看bz2压缩包:
tar tf mydir1.tar.bz2
Zip压缩包管理
1.制作zip压缩包:
zip -r mydir1.zip mydir1
2.zip压缩包解压:
unzip mydir1.zip
3.查看zip压缩包:
unzip -l mydir1.zip
光盘管理
挂载光盘:
mount /dev/cdrom /media
查看挂载情况:
df
df -h
df -Th
卸载光盘:
umount /media
开机挂载:
vi /etc/fstab
/dev/cdrom /media iso9660 defaults 0 0
开机挂载测试:
mount -a
文件权限
chomd
查看文件详情:
ls -l file
查看目录详情
ll -d dir
权限类型:
r 读(4)
w 写(2)
x 执行(1)
- 无权限(0)
权限详情:
drwxr-xr-x 2 root root 6 Oct 16 19:14 dir
1.目录
2.root对dir的权限:rwx:读+写+执行
3.root组对dir的权限:rx:读+执行
4.other用户对dir的权限:rx:读+执行
-rw-r–r– 1 root root 0 Oct 16 19:14 file
1.文件
2.root对file的权限:rw:读+写
3.root组对file的权限:r:读
4.other对file的权限:r:读
权限分配:
1.数字式
chmod 755 /mnt
2.英文参数式
chmod a+x file
3.umask权限掩码
1)默认权限: 文件:666,目录777
2)文件:644(默认权限:666-权限掩码:022)
3)目录: 755(默认权限:777-权限掩码:022)
查看单个目录本身的权限:
ll -d /mnt
Acl
权限控制更加精确,以文件为单位,精确把控每个文件或目录。
u+g+o所有人对linux具有执行权限:
chmod a+x linux.sh
chmod +x linux.sh
chmod 755 linux.sh
chmod u+x,g+x,o+x linux.sh
#a=u+g+o
1.设置权限:
setfacl -m u:user1:rwx /test
2.查看权限:
getfacl /test
3.删除user1在/test上的权限:
setfacl -x u:user1 /test
4.删除/test上的所有acl权限:
setfacl -b /test
5.设置acl的默认权限:
setfacl -m d:u:user1:rwx test
sudo
控制用户对系统命令的执行权限
1.sudo权限设置:
visudo
user1 localhost=/usr/sbin/useradd
shell技巧
1.tab
快速补全
2.!1001
调出历史中第1001号命令
3.!s
调出最后一次以s开头的命令
4.|
管道
帮助技巧:
1.ls –help
2.systemctl -h
3.man ls
shell编程
别名管理:
1.查看别名
alias
2.新建别名
alias myif=’nmcli device show ens32’
3.删除别名
unalias myif
日期管理-date:
date ‘+%Y-%m-%d %T’
Y 年
m 月
d 日
H 时
M 分
S 秒
Bash重定向:
1.正确输出 >
2.正确追加输出 >>
3.错误输出 2>
4.错误追加输出 2>>
5.正确和错误输出 &>
6.正确和错误追加输出 &>>
7.正确或错误立即销毁 &>/dev/null
Shell编程-基础操作:
1.变量定义
name=’user1’
2.输出变量
echo $name
echo “my name is ${name}”
Shell编程-文件测试:
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-L:测试是否为符号连接(Link)文件
Shell编程-字符串测试:
=: 字符串内容相同
!=:字符串内容不同
-z: 字符串为空
Shell编程-数学测试:
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-ge:大于或等于(Greater or Equal)
-le:小于或等于(Lesser or Equal)
Shell编程-逻辑测试:
&&:逻辑与
||:逻辑或
!: 逻辑否
Shell编程-用户交互:
read -p ‘please input your name: ‘ name
echo $name
Shell编程实例:
1.光盘挂载
if [ ! -e /media/BaseOS ]
then
mount /dev/cdrom /media &> /dev/null
echo ‘cdrom is ok’
else
echo ‘cdrom is ok’
fi
2.创建用户
read -p ‘please input your name:’ name
if [ ! -z $name ]
then
read -p ‘please input your pass:’ pass
if [ ! -z $pass ]
then
useradd $name
echo $pass | passwd –stdin $name &> /dev/null
echo “your name is ${name},your pass is ${pass},create is ok”
else
echo ‘pass is empty’
fi
else
echo ‘name is empty’
fi
3.内存判断
mem=free -m |grep 'Mem'|awk '{print $4}'
if [ $mem -lt 400 ]
then
echo “mem is no,now is ${mem}”
else
echo “mem is yes,now is ${mem}”
fi
4.循环输出
for name in cat /etc/passwd | awk -F: '{print $1}'
do
echo $name
sleep 1
done
任务计划
Crontab任务计划:
cron是一个可以用来根据时间、日期、月份和星期的组合来调度对周期性任务执行的守护进程
,利用cron所提供的功能,可以将需要周期性重复执行的任务设置为cron任务,并且设置为在主机较空闲的时间自动完成。
查看Crontab服务:
systemctl status crond
任务计划格式:
*(分) *(时) *(日) *(月) *(周) 周期执行的程序
30 22 2 1 * time.sh
每年1月2日晚上22:30执行time.sh脚本
30 22 * * 6 time.sh
每周六晚上22:30执行time.sh脚本
30 22 * * 1,3,5 time.sh
每周的周一、周三和周五晚上22:30执行time.sh脚本
30 22 * * 1-5 time.sh
每周的周一到周五晚上22:30执行time.sh脚本
* * * * * time.sh
每分钟执行一次time.sh脚本
*/5 * * * * time.sh
每五分钟执行一次time.sh脚本
00 10 * * * time.sh
每天晚上00点执行time.sh脚本
查看cron任务计划:
crontab -l
编辑cron任务计划:
crontab -e
删除所有cron任务计划:
crontab -r
Cokpit监控系统
Cockpit Web系统监控:
systemctl enable –now cockpit.socket
开启cockpit服务:
systemctl start cockpit.service
查看cockpit状态:
systemctl status cockpit.service
Web系统访问: