一、重置root用户密码
1.位于系统引导界面时,按下键盘上“e”键,进入内核编辑界面。
2.内核编辑界面无法使用鼠标,所以使用方向键找到linux16这一行,在行尾打一个空格后,加上rd.break参数,并按下CTRL+X的组合键来运行修改后的内核程序。
3.进入系统紧急救援模式后输入以下命令,密码输入时,屏幕上是不显示的。
mount -o remount,rw /sysroot
chroot /sysroot
passwd
新密码
再次输入新密码
touch /.autorelabel
exit
reboot
4.登录修改过密码的root用户,开始linux之旅
二、虚拟机实现登录内、外网
注意:
1.如果步骤正确,但是连接不了网络,可以尝试关闭防火墙或者修改成另一种模式来连接。
内网连接需要两台主机的ip地址位于同一网段下,外网连接则要求主机拥有ip地址和网关。
修改虚拟机的模式
右键虚拟机,打开设置
桥接模式
虚拟机拥有一个独立的ip地址,直接来连接外网
1.打开主机的CMD命令提示符,并查看主机ip地址、子网掩码、网关。
ipconfig
2.进入linux系统,打开终端,如果仅需要内网连接,则只需要设置一个临时ip地址就可以实现。
ifconfig ens33 ip地址 #这里的ip地址不能与主机和网关地址相同
ping 主机ip地址 #测试通信
如果出现下图中长时间无反应的情况,关闭windows的防火墙就可以解决。
3.如果需要连接外网,则需要打开路径为/etc/sysconfig/network-scripts/ifcfg-ens33的文件,并如图进行修改。
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #vim命令用于编辑文件
#打开文件后 按下 i 键开启编辑模式,编辑结束后按下ESC键退出编辑模式,然后输入:wq退出并保存文件
systemctl restart network #每次修改配置文件后都需要重启服务
BOOTPROTO是ip地址的分配方式,static指手动配置。
ONBOOT指是否启动网卡,yes启动,no关闭。
4.测试与外网的通信
NAT模式
NAT模式下,虚拟机和主机共用一个外网ip地址
1.启用VMnet8网络
右键主机桌面任务栏wifi图标,打开高级网络设置,启用VMnet8网络。
2.打开主机的CMD命令提示符,并查看主机ip地址、子网掩码。
ipconfig
打开VMware的编辑选项卡->虚拟网络编辑器,获取网关地址。
3.进入linux系统,打开终端,如果仅需要内网连接,则只需要设置一个临时ip地址就可以实现。
ifconfig ens33 ip地址 #这里的ip地址不能与主机和网关地址相同
ping 主机ip地址 #测试通信
如果出现下图中长时间无反应的情况,关闭windows的防火墙就可以解决。
4.如果需要连接外网,则需要打开路径为/etc/sysconfig/network-scripts/ifcfg-ens33的文件,并进行修改。
vim /etc/sysconfig/network-scripts/ifcfg-ens33 #vim命令用于编辑文件
#打开文件后 按下 i 键开启编辑模式,编辑结束后按下ESC键退出编辑模式,然后输入:wq退出并保存文件
systemctl restart network #每次修改配置文件后都需要重启服务
5.测试与外网的通信
ping www.baidu.com
三、服务的安装与配置
在线安装
yum -y install 服务名
四、根目录构造
/bin 存放二进制文件
/sbin 存放系统二进制文件
/etc 存放配置文件
/usr 存放用户程序
/home 用户家目录
五、常用命令
1.文件处理命令
命令格式:
命令 [选项] [参数]
ls
ls [选项] [文件或目录] #列出目录下文件和目录
选项:
-a 显示所有文件,包括隐藏文件
-l 显示详细信息
-h 人性化显示文件大小
下图第一列代表文件类型(-普通文件;d目录;l符号链接;)
第二列是所属用户权限(r读权限;w写权限;x执行权限;-无对应权限)
第三列所属组权限
第四列其他用户权限
第五列硬链接次数
第六列所属者名称
第七列所属组名称
第八列文件大小
第九列上一次修改日期
第十列文件名
pwd
pwd #显示当前所在目录
下图中,
root是用户名;
localhost是主机名;
home是当前所在目录名;
#指当前为特权用户($为普通用户)。
cd
cd [目录名] #目录跳转
快捷操作:
cd ~ #切换到用户目录
cd #切换到用户目录
cd - #切换到上一访问目录
cd .. #切换到上一级目录
cd . #切换到当前目录
touch
touch [文件名] #创建一个文件
mkdir
mkdir [选项] [目录名] #创建目录
选项:
-p 递归创建(允许创建多级文件夹)
快捷操作:
mkdir 文件夹名
mkdir -p aa/bb/cc
rmdir
rmdir 目录名 #删除目录(不允许删除非空目录)
rm
rm [选项] [文件名或目录名] #删除文件或目录
选项:
-r 递归删除目录,有提示
-f 强制删除文件
-rf 强制删除文件或目录,无提示
快捷操作:
rm -rf /* #删库跑路,去世命令
cp
cp [选项] [源文件名或目录名] [目标文件名或目录名] #复制文件
选项:
-r 复制目录
mv
mv [源文件或目录] [目标目录] #剪切文件命令
快捷操作:
mv 源文件 目标文件夹 #剪切
mv 源文件 不存在的文件名 #重命名文件
mv 源文件 目标文件夹/不存在的文件名 #剪切并重命名源文件到目标目录
history
history #查询历史命令
选项参数:
-c 删除历史记录
-r 恢复历史记录
================================================================
其他命令:
echo $HISTFILE #输出命令历史记录存储的文件路径
echo $HISTSIZE #输出命令历史记录的条数
!历史记录ID #执行该ID的命令
!! #执行上一命令
2.命令搜索命令
whereis 命令名 #查询此命令所在路径
which 命令名
$PATH #查看环境变量路径
3.文件搜索命令 find
find 文件名[通配符]
通配符:
* 匹配任意内容
? 匹配一个字符
[] 匹配范围内的一个内容
例子:
find abc* #查询所有名字前三个字符为abc的所有文件
find a? #查询所有名字首字符为a,长度为2的所有文件
find a[b,c] #插叙所有名字首字符为a,第二个字符为b或c的所有文件
========================================================================
find [搜索范围] [搜索条件]
搜索条件例子:
按照名字:
find / -name abc #按照名字,查询根目录下所有名字为abc的文件或目录(-iname 不区分大小写)
find / -user root #按照用户,查询根目录下所有root用户拥有的的文件
find / -nouser #查询没有所有者的文件
按照时间:
find / -atime +10 #查找10天前访问的文件
find / -ctime -10 #查找10天内修改文件属性的文件
find / -mtime 10 #查找10天当天修改文件内容的文件
按照大小:
find / -size +25k #查找大于25kb的文件(-25小于25kb;25等于25kb;+25大于25kb;M是mb)
========================================================================
复合条件:
find [搜索范围] [搜索条件1] [逻辑符号] [搜索条件2] ...
逻辑符号:
-a #and 逻辑与
-o #or 逻辑或
例子:
find / -name abc -a -ctime +10 # 查询名叫abc且创建时间是10天前的文件
find / -exec ls -lh {} \; #固定格式,在末尾加上(-exec ls -lh {} \;),显示详细信息
find / -exec 命令名 {} \; 对搜索到的数据进行操作
4.字符串搜索命令
grep [选项] 字符串 文件名 #查询文件中条件符合的字符串
选项:
-i 忽略大小写
-v 排除指定字符串
例子:
ps -ef | grep java #查询运行进程中名叫java的进程
#ps -ef 列举所有正在运行的进程
#| 管道命令,将左侧输出的结果输入右侧命令
5.帮助命令
man 命令名
命令名 --help
f,b键翻页,q退出
6.压缩命令
zip
需要安装zip服务
zip 压缩文件名 源文件 #压缩文件
zip -r 压缩文件名 源文件夹 #递归压缩,不加参数-r则仅仅压缩文件夹本身,不包含其中的文件
例子:
zip abc.zip abc
unzip 压缩文件名 #解压缩
gzip
gzip 文件名 #压缩文件,并删除源文件
gzip -r 目录名 #压缩该目录中所有文件
例子:
gzip abc
gunzip 压缩文件名 #解压压缩文件
gunzip -r 目录名 #解压该目录中所有压缩文件
tar
tar -cvf 打包文件名 源文件 #打包文件
选项:
-c 打包
-v 显示过程
-f 指定打包后的名称
例子:
tar -cvf abc.tar abc
tar -cvf 打包文件名 #解包
选项:
-x 解包
========================================================================================
tar -zcvf 压缩包名.tar.gz 源文件名 #压缩打包
#加上-C 指定目录
tar -zcvf 压缩包名.tar.gz -C 指定目录
tar -zxvf .tar.gz文件 -C 指定目录 #解压解包
7.关机与重启命令
shutdown [选项] 时间 #关机重启命令
选项:
-h 关机
-c 取消前一个关机命令
-r 重启
时间:
now 立刻
========================================================================
init [参数]
参数:
0 关机
6 重启
3 切换字符界面(CTRL+ALT+F2)
5 切换可视化界面(CTRL+ALT+F1)
8.系统信息查询
查看用户登录信息
w 用户名 #查看用户登录信息
命令输出:
USER 登录的用户名
TTY 登录终端
FROM 登录IP
LOGIN@ 登录时间
IDLE 用户闲置时间
JCPU 该终端连接的所有进程所占时间,
PCPU 当前进程所占用时间
WHAT 当前正在运行的命令
查看当前和过去登录用户信息
last #查看历史登录用户信息
命令输出:
用户名
登录终端
登录IP
最后一次登录的时间
lastlog #查看上一个登录的用户信息(默认读取/var/log/lastlog文件内容)
命令输出:
用户名
登录终端
登录ip
最后一次登录时间
磁盘使用情况
df -h #查看磁盘使用情况
命令输出:
文件系统
容量
可用空间
已用空间
可用百分率
挂载点(主要看这个)
查看任务进程
top #查看命令进程(CTRL+Z 退出进程界面)
命令输出解释:Linux系统中top命令详解_linux top-CSDN博客
查看内存占用
free #查看内存占用情况
查看历史操作
history #查看登录以来所有历史操作
打印命令
echo 字符串或变量 #打印信息到屏幕
文件查看命令
cat 文件名 #查看文件内容
========================================================
tail [选项] 文件名 #默认显示文件末尾10行
选项:
-f 显示文件新追加内容
-行数 显示文件末尾n行信息
9.vim编辑器
下图转载自哔哩哔哩浪飞yes老师。
vi 文件名 #编辑文件内容
10.系统服务管理
systemctl start <服务名> #启动服务
systemctl stop <服务名> #关闭服务
systemctl restart <服务名> #重启服务
systemctl status <服务名> #查看服务状态
systemctl enable <服务名> #添加开机启动项
systemctl disable <服务名> #静止开机启动项
systemctl list-unit-files #查看服务
11.进程查看与杀死进程
ps -ef #查看所有进程详细信息
ps -ef | grep 关键字 #查询特定进程信息
==============================================================
kill -9 进程PID #杀死进程
12用户管理操作
useradd 用户名 #添加新用户
useradd -G 组名 用户名 #添加新用户并分配到已有组
#查看系统用户 /etc/passwd
1.用户名
2.用户密码,用x代替
3.用户uid
4.用户gid
5.用户账户说明解释
6.用户家目录
7.用户使用的shell
=============================================================================
groupadd 组名 #新增组
#查看组 /etc/group
=============================================================================
usermod -G [组名] [用户名] #将用户分配到另一个组
=============================================================================
userdel [选项] 用户名 #删除用户
选项:
-r 删除用户所有相关文件
-f 强制删除
=============================================================================
groupdel 组名 #删除已有组
=============================================================================
passwd 用户名 #修改用户密码
su 用户名 #切换用户
13.文件权限修改
chmod [选项] 模式 文件名 #修改文件权限
选项:
-R 递归
模式:
[guoa] [+-=] [rwx] #字符模式
[mode=421] #数字模式
字符模式:
chmod u+w /share #給所有者/share文件的写权限
chmod a+rwx 文件 #給所有者,所属组,其他用户该文件的读、写和执行权限
数字模式:
权限的数字表现
r 4 r-- 100 #4代表只读
w 2 -w- 010 #2代表只写
x 1 --x 001 #1代表只执行
0 ---
1 --x
2 -w-
3 -wx
4 r--
5 r-x
6 rw-
7 rwx
例子:
chmod 755 /share
所有者权限 所属组权限 其他用户权限
7 5 5
111 101 101
rwx r-x r-x
该文件,所有者拥有读写执行权限,所属组拥有读和执行权限,其他用户拥有读和执行权限
14.sudo授权命令
#修改配置文件修改用户权限
vim /etc/sudoers
root ALL=(ALL)ALL
#用户名 被管理主机的地址=(可使用的身份)授权命令的绝对地址
%wheel ALL=(ALL)ALL
#%组名 被管理注解的地址=(可使用的身份)授权命令的绝对地址
例子:
給abc用户关机命令的权限
abc ALL=(ALL) /user/sbin/shutdown #修改配置文件的参数
sudo shutdown -h now #使用sudo 命令关机
15.重定向
重定向符 | 说明 |
< | 输入重定向 |
>或>> | 输出重定向(>覆盖源文件,>>追加源文件后),将标准输出到终端界面上的内容重定向输出到文件中 |
2>或2>> | 错误内容输出重定向(同上) |
&> | 同时实现输出重定向和错误输出重定向 |
命令操作 重定向符号 文件名
例子:
#将当前目录中包含的文件信息重定向输出到out.txt文件中
ls -la >out.txt
#将错误信息重定向输出到error.txt文件中
la >error.txt
六、防火墙
防火墙开启时,主机与外界隔绝,可以开放端口来与外界通信。
centos7的防火墙服务为firewalld
防火墙配置命令:firewall-cmd
防火墙帮助:firewall-cmd --help
查看防火墙状态:
firewall-cmd --zone=public --list-ports
开启端口:
firewall-cmd --zone=public --add-port=端口号/tcp --permanet #--permanet参数为永久生效,去掉则重启后失效
更新防火墙规则:
firewall-cmd --reload
删除端口:
firewall-cmd --zone=public --remove-port=端口号/tcp --permanet
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
七、shell脚本
Shell脚本以行为单位,一行一行执行,脚本中主要包含:注释、命令、Shell变量和流程控制语句。
1.执行一个shell脚本
在执行一个脚本文件时,就会生成一个子进程去执行文件,因此子进程中的参数无法在父进程中使用。
bash 脚本文件 #在子进程执行脚本文件,该文件必须有执行权限(chmod u+x 文件名)
bash ./脚本文件 #在父进程执行脚本文件
./脚本文件 #当脚本文件中已经有shebang指定了解释器后使用
2.shebang
shebang指shell脚本第一行以#!的语句,用于指定该脚本的默认解释器,
#如下,默认使用bash解释器执行该脚本
#!/usr/bin/bash
#使用方法:
#!解释器的绝对路径
3.变量
shell脚本语言是弱类型语言,使用前无需定义,数据类型为字符类型。
命名规则:
- 仅允许数字,下划线,字母,且不可数字开头。
- 见名知意。
- 区分大小写。
#变量的定义(单引号不识别特殊语法和符号,双引号识别)
变量名="变量值"
变量名='变量值'
#变量的使用(简写和完全体)
$变量名
${变量名}
本地变量
本地变量包括父子shell,父子shell的变量不共享。本地变量针对本地shell,只能在当前shell中使用。
环境变量
环境变量也叫全局变量,在父子进程都能使用。
局部变量
局部变量针对shell脚本,只能在脚本中使用。
特殊变量-状态变量
$? #判断上一次命令是否成功,成功返回0,不成功返回1-255
4.反引号
`变量或linux命令` #保留运行的结果
待整理
环境变量的设置
PATH=$PATH:绝对路径
修改文件所有者所有组的命令chown
更新日期
2024.3.11 密码修改和外网连接
2024.3.29 文件处理命令
2024.3.30 搜索命令
2024.4.1 其他命令-进程查看与杀死进程