Linux-基础
环境准备
-
文档阅读
-
Centos
连接用户信息 1
2login: root
passwd: root -
系统版本查看
1
cat /etc/redhat-release
-
基本权限符
1
2
3
4
5# 超级用户提示符
$ 普通用户提示符
~ 当前所在家目录
主机名修改
-
查看主机名
1
hostname
-
centos7
主机名文件方式修改 1
2
3
4
5
6
7
8
9# centos 信息查看
cat /etc/redhat-release
显示: CentOS Linux release 7.9.2009 (Core)
# [root@xxxxxx] -> 修改 xxxx 的名称
vim /etc/hostname
# 重启
reboot -
命令行修改
( 推荐
)1
2# root 用户
hostnamectl set-hostname "coder-itl"主机名修改 -
域名解析
可以通过主机名找到对应计算机的
IP
地址, 这就是主机名映射 (域名解析)
关闭防火墙
-
临时关闭防火墙
1
2
3
4# 检查防火墙状态
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld -
永久关闭防火墙
1
systemctl disable firewalld
-
关闭
selinux
1
2vim /etc/selinux/config
# disable
关机与重启
-
关机指令
1
2
3
4
5
6
7
8
9
10# 扣除电池式关机
halt 0
# 按下关机键式关机(不关心正在运行的任务)
poweroff
# 定时关闭
shutdown -h now (立即关机)
shutdown -h 10 (定时关机: 10) -
重启
1
reboot
ISO 镜像源
-
Centos7 镜像文件
下载地址1
2
3
4
5
6
7
8# 镜像文件信息解释
CentOS-7.0-x86_64-DVD-1503-01.iso 标准安装版,一般下载这个就可以了(推荐)
CentOS-7.0-x86_64-NetInstall-1503-01.iso 网络安装镜像(从网络安装或者救援系统)
CentOS-7.0-x86_64-Everything-1503-01.iso 对完整版安装盘的软件进行补充,集成所有软件。(包含centos7 的一套完整的软件包,可以用来安装系统或者填充本地镜像)
CentOS-7.0-x86_64-GnomeLive-1503-01.iso GNOME桌面版
CentOS-7.0-x86_64-KdeLive-1503-01.iso KDE桌面版
CentOS-7.0-x86_64-livecd-1503-01.iso 光盘上运行的系统,类拟于winpe
CentOS-7.0-x86_64-minimal-1503-01.iso 精简版,自带的软件最少 -
镜像源下载
所有镜像下载列表:http://isoredirect.centos.org/centos/7
163
镜像源下载: http://mirrors.163.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2207-02.iso
软件镜像源
-
镜像源地址
-
网易镜像源: https://mirrors.163.com/
-
更换阿里云源
1
2
3
4
5
6
7
8
9
10
11
12
13
14# 注意权限问题
yum install -y wget
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bk
cd /etc/yum.repos.d
wget -nc http://mirrors.aliyun.com/repo/Centos-7.repo
mv Centos-7.repo CentOS-Base.repo
# 全部清除
yum clean all
# 更新列表
yum list
# 缓存yum 包信息到本机,提高搜索速度
yum makecache
# 更新 yum
yum update -y
-
软件包安装
-
Centos7
默认未安装重要的包 软件包名 包含的核心命令 psmisc
含有 killall 、pstree
等命令 net-tools
含有 netstat,ifconfig,route,arp
等命令 properties-completion
properties-completion-extras
tab
补全功能工具包 vim-enhanced
vim
编辑器工具包 -
运维常用包安装
1
2yum install -y tree nmap dos2unix lrzsz nc lsof wget tcpdump htop iftop iotop sysstat nethogs psmisc vim-enhanced
properties-completion properties-completion-extras net-tools
-
-
SSH 远程
-
端口占用查看
1
yum install -y nmap
查看所有开放使用的端口 -
检测端口号占用问题
1
2
3
4
5# netstat -> net-tools 安装后使用
yum install -y net-tools
# 查看指定端口信息
netstat -anp|grep 端口号
lsof -i:端口号 检测端口号占用 PID
0.0.0.0:22
如图,
可以看到当前系统的 8080
端口被程序 (进程号 5928
)占用了 0.0.0.0:22
,表示所有 IP
都可以访问 22
端口 无输出, 表示该端口处于空闲状态 -
SSH
修改配置文件 1
2
3
4
5
6
7
8vim /etc/ssh/ssh_config
# 过滤
esc: /Port 修改端口号【2209】
# 重启服务
service sshd restart
# 验证连接
1. 连接方式一: ssh -l用户名 ip -p 端口号
2. ssh 用户名@ip:port 【ip: 使用内网自定义 ip 可用于连接】 ssh
设置默认登录用户为 Root
-
设置默认登录用户为
Root
-
如果安装过程中为设置
root
用户, 修改 root
用户密码 1
2# 重置 root 用户密码,
根据提示输入当前账户的密码和 root 的新密码两次
sudo passwd root -
切换为
root
用户 1
2su -
# 输入 root 用户密码 -
设置默认登录用户为
root
1
2# 编辑自定义文件
vim /etc/gdm/custom.conf-
在
[daemon]
加入两行 1
2
3
4
5
6[daemon]
AutomaticLoginEnable=True
AutomaticLogin=root
[security]
...
# 保存退出 -
重启
1
reboot
-
-
-
提升普通用户为
root
权限 - 要将用户添加到
sudoers
文件中,请以 root
用户身份执行以下步骤
1
2
3
4# 切换 root 用户
su - root
# 使用 root 用户执行如下
sudo visudo-
在文件的底部添加以下行,其中
coderitl
是要添加到sudoers
文件中的用户名,添加后保存退出 1
coderitl ALL=(ALL:ALL) ALL
- 要将用户添加到
Linux 命令
-
创建目录
1
mkdir -p [目录名] (-p
递归创建) -
删除目录
1
rm -rf 【目录名】 【-r 删除目录 -f 强制】
-
复制
1
2
3
4
5
6cp [选项] [原文件或目录] [目标目录]
-r 复制目录
-p 连带文件属性复制
-d 若源文件是链接文件,则复制链接属性
-a == -pdr -
重命名
1
2mv [在移动的基础上进行重命名]
cp xx xx -
文件搜索命令
-
find
名令基础使用 -
grep
命令1
2
3
4
5
6
7
8
9
10
11grep 【选项】 字符串 文件名
选项:
-i 忽略大小写
-v 排除指定字符串
grep "size" 文件名(xxx)(在xxx 中查找 size 相关的字符串 )
grep -v "size" 文件名(xxx)(在 xxx 中不查找 size 相关的字符串 ) -
find
与 grep
的区别1
2
3find 命令: 在系统当中搜索费和条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配
grep 命令: 在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式包含匹配
-
-
帮助命令
1
2
3man
help
常见目录
-
linux
常用目录 1
2
3
4
5
6
7
8
9+ / 根目录
+ /bin 命令保存目录(普通用户就可以读取)
+ /boot 启动目录,启动相关文件
+ /dev 设备文件保存目录
+ /etc 配置文件保存目录
+ /home 普通用户家目录
+ /lib 系统库保存目录
+ /mnt 系统挂载目录
+ /media 挂载目录
压缩与解压缩
tar-压缩
-
Linux
和 Mac
系统常用有两种压缩格式, 后缀名分别是 .tar
: 称之为tarball
,归档文件,即简单的将文件组装到一个 .tar
的文件内, 并没有太多文件体积的减少, 仅仅是简单的封装 .gz
: 也常见为.tar.gz
,gzip
格式压缩文件, 即使用 gzip
压缩算法将文件压缩到一个文件内, 可以极大的减少压缩后的体积
-
语法
1
tar [-c -v -x -f -z -C] 参数
1 参数 2 ... 参数 N -c
: 创建压缩文件,用于压缩模式 -v
: 显示压缩,解压过程,用于查看进度 -x
: 解压模式-f
: 要创建的文件,或要解压的文件, -f
选项必须在所有选项中位置 处于最后一个
-z
:gzip
模式, 不使用 -z
就越是普通的 tarball
格式 -C
: 选择解压的目的地,用于解压模式
-
tar
命令压缩 1
2# 将 1.txt 2.txt 3.txt 压缩到 test.tar 文件内
tar -cvf test.tar 1.txt 2.txt 3.txt-cvf => .tar
1
2# 将 1.txt 2.txt 3.txt 压缩到 test.tar.gz 文件内,使用 gzip 模式
tar -zcvf test.tar.gz 1.txt 2.txt 3.txt-zcvf => .tar.gz
-
压缩大小比较
压缩大小比较 ( 10240(.tar)>142(.tar.gz)
)
tar-解压
-
常见组合
1
2# 解压 test.tar 将文件解压到当前目录
tar -xvf test.tar -
解压到指定目录
1
2# 将 test.tar 解压到 /opt/txt 目录下
(解压的目录必须存在)
tar -xvf test.tar -C /opt/txt -
.tar.gz
解压 1
2# 以 gzip 模式解压 test.tar.gz 并将文件解压到指定目录
tar -zxvf test.tar.gz -C /opt/txt解压
zip-压缩
-
可以使用
zip
命令, 压缩文件为 zip
压缩包 -
安装
1
apt-get install -y zip(ubuntu)| yum install -y zip(centos)
-
语法
1
zip [-r] 参数
1 参数 2 ... 参数 N - 选项
-r
: 被压缩的包含文件夹的使用,需要使用 -r
选项, 和 rm,cp
等命令的 -r
效果一致
- 选项
-
实例
1
2# 将 1.txt 2.txt 3.txt 压缩到 test.zip 文件内
zip test.zip 1.txt 2.txt 3.txt压缩 1
2# 将 test 文件夹,txt
文件夹 1.txt 文件压缩到 test.zip 文件内
zip -r test.zip test txt 1.txt-r
zip-解压
-
使用
unzip
命令, 可以方便的解压 zip
压缩包 -
安装
1
yum install -y unzip
-
语法
1
unzip [-d] 参数
- 选项
-d
: 指定要解压去的位置,同 tar
的 -C
选项 - 参数: 被解压的
zip
的压缩包文件
解压 - 选项
日期与时间
-
date
命令可以在命令行中查看系统的时间 -
语法
1
date [-d] [+
格式化字符串] - 选项
-d
: 按照给定的字符串显示日期,一般用于日期计算 - 格式化字符串: 通过特定的字符串标记,
来控制显示的日期格式 %Y
: 年%y
:年份后两位数字 %m
: 月份%d
: 日%H
: 小时%M
: 分钟%S
: 秒%s
:自 1970-01-01 00:00:00 UTC
到现在的秒数
- 选项
-
查看时间
1
date
-
格式化输出
1
2
3
4# 年月日
date +%Y-%m-%d
# 输出年月日时分秒
date "+%Y-%m-%d %H:%M:%S"有空格使用引号包裹 -
-d
具体使用 - 支持的时间标记
year
month
day
hour
minute
second
- 支持的时间标记
-
查看日历
1
cal 2022
日历 -
时区概念
-
时区信息
CST
-
UTC
(世界标准时间)协调世界时,又称世界标准时间或世界协调时间,简称
UTC(从英文 “ Coordinated Universal Time
”是最主要的世界时间标准,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间。 -
GMT
(格林尼治平时)格林尼治平时(又称格林尼治平均时间或格林尼治标准时间,旧译格林威治标准时间;英语:
Greenwich Mean Time
,GMT
)是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。理论上来说,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。由于地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能与实际的太阳时有误差,最大误差达
16
分钟。 由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治时间已经不再被作为标准时间使用。现在的标准时间,是由原子钟报时的协调世界时(
UTC
)。 -
CST
(北京时间)北京时间,
China Standard Time
,中国标准时间。在时区划分上,属东八区,比协调世界时早8
小时,记为 UTC+8
。 -
修改时区
1
2rm -f /etc/localtime
sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime时区校准 (东八区)
-
-
日期自动同步
1
2
3
4
5
6
7yum install -y ntp
# 启动服务
systemctl start ntpd
# 设置为开机自启
systemctl enable ntpd
# 同步时间
ntpdate -u cn.ntp.org.cn / ntp.aliyun.com
Chmod
-
标识
标识 详细说明 -
权限修改
权限项 读 写 执行 读 写 执行 读 写 执行 字符表示 r w x
r w x``r w x
数字表示 4 2 1
(所有权限:4+2+1=7
)1
2
3# 777
chmod 777 app.sh
# 741 文件所有者(7: 读 写 执行) 文件所属用户组 (4: 读) 其他用户 (1: 执行) 741
Chown
-
作用
使用
chown
命令, 可以修改文件, 文件夹的所属用户和用户组 普通用户无法修改所属为其他用户或组,
所以此命令只适用于 root
用户执行 -
语法
1
chown [-R] [用户][:][用户组] 文件或文件夹
- 选项
-R
,同chmod
,对文件夹内全部内容应用相同规则 - 选项
用户
,修改所属用户 - 选项
用户组
,修改所属用户组 :
用于分割用户和用户组
- 选项
-
示例
chown root hello.txt
将 hello.txt
所属用户修改为 root
chown :root hello.txt
将 hello.txt
所属用户组修改为 root
chown root:coderitl hello.txt
将 hello.txt
所属用户修改为 root
,所属用户组修改为 coderitl
chown -R root test
将文件夹 test
的所属用户修改为 root
并对文件夹内部全部内容应用同样规则
文件查看
-
文件查看
-
more
和 less
1
2
3more
和 cat 都是一次性读取所有内容到内存, 不适合读取大文件, 占资源
less命令是显示多少文本, 消耗多少内存, 省资源 -
head
和 tail
命令 1
2
3
4
5
6
7
8
9
10# head
head默认查看文件前 10 行
# 查看指定行 前5 行
head -5 文件
# tail
tail 默认查看文件后 10 行
tail -5 文件
tail -f 日志文件测试使用
-
统计
-
统计
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17# 列出当前目录下所有的文本内容行数
[root@localhost ~]# wc -l ./*
18 ./aa.txt
48 ./anaconda-ks.cfg
18 ./bb.txt
18 ./cc.txt
9 ./replace-yum-repo.sh
wc: ./zookeeper3.5.7: 是一个目录
0 ./zookeeper3.5.7
wc: ./zulu8: 是一个目录
0 ./zulu8
111 总用量
[root@localhost ~]# ^C
# 统计 aa.txt 文本行数
[root@localhost ~]# wc aa.txt
统计文件大小
-
du
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21-h: 表示可以高可读性的形式进行显示,
如果不写 -h 默认以 kb 的形式显示文件大小
# 实例
du -h *
# 查看日志占用大小
[root@localhost ~]# du -sh /var/log
3.4M /var/log
# 查看 anaconda 占用的磁盘大小
[root@localhost log]# du -sh anaconda/*
24K anaconda/anaconda.log
4.0K anaconda/ifcfg.log
1.7M anaconda/journal.log
0 anaconda/ks-script-Ppd1S0.log
0 anaconda/ks-script-q3qgzU.log
112K anaconda/packaging.log
32K anaconda/program.log
88K anaconda/storage.log
240K anaconda/syslog
24K anaconda/X.log
[root@localhost log]#
grep
-
在指定文件中查找关键字
1
2
3grep 'keyword' -n test.txt
# 打开时编辑指定行
vim +n FileName查找 1
2
3
4
5# 在系统安全查看与 root 相关的
[root@localhost ~]# grep -n 'root' /var/log/secure
7:Aug 11 21:25:51 localhost login: pam_unix(login:session): session opened for user root by LOGIN(uid=0)
9:Aug 11 17:36:58 localhost sshd[16274]: Accepted password for root from 192.168.247.1 port 13418 ssh21
2# 在多个文件中查找
grep 'keyword' ./*在多个文件中查找 1
2# 忽略大小写
grep 'info' -i -n a.txt忽略大小写 -
管道符
1
2
3
4
5
6# 命令 1: 拿到用户文件信息 | 交给 grep 去过滤
[root@localhost test]# cat /etc/passwd | grep 'root'
root:x:0:0:root:/root:/bin/properties
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost test]# -
文件过滤
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18# 不使用管道符 将所有后缀包含 txt 的文件信息汇总到 all.txt
find / -name '*.txt' > all.txt
# 查找文件为 txt 并且与 zookeeper 相关的文件名
[root@localhost test]# find / -name '*.txt' | grep 'zookeeper'
/root/zookeeper3.5.7/lib/jline-2.11.LICENSE.txt
/root/zookeeper3.5.7/lib/netty-buffer-4.1.45.Final.LICENSE.txt
/root/zookeeper3.5.7/lib/netty-common-4.1.45.Final.LICENSE.txt
/root/zookeeper3.5.7/lib/netty-transport-native-epoll-4.1.45.Final.LICENSE.txt
/root/zookeeper3.5.7/lib/netty-transport-4.1.45.Final.LICENSE.txt
# 找出文件内容
root@localhost test]# find / -name '*.txt' | grep 'apache' ./*
./a.txt:apache1
./b.txt:apache2
./c.txt:apache3 -
进程过滤
1
2
3
4# 进称过滤
[root@localhost test]# ps -ef | grep mysql
root 83472 9546 0 12:21 pts/1 00:00:00 grep --color=auto mysql -
检查端口
1
2
3
4
5
6
7# 检查系统端口的命令
# 查看所有端口 查到 => LISTEN
[root@VM-4-7-centos ~]# netstat -tunlp | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1686/docker-proxy
tcp6 0 0 :::3306 :::* LISTEN 1702/docker-proxy
[root@VM-4-7-centos ~]#
快捷键
-
ctrl+c
: 可以快速终止一些错误运行 -
ctrl+d
: 快速退出,比如从python
交互界面快速退出 -
history
: 历史命令查看-
快速执行历史命令
!
,命令前缀 可以快速执行上一次命令 从下往上搜索执行
-
-
ctrl+r
: 通过模糊匹配检索历史命令执行- 回车执行
- 左右键进行修改
-
光标移动
-
ctrl+a
: 跳到命令开头 -
ctrl+e
: 跳到命令结尾 -
ctrl+
: 向左跳一个单词键盘左键 -
ctrl+
: 向右跳一个单词键盘右键 光标快速移动
-
-
清屏
ctrl+l
clear
Yum 详解
-
是什么
yum:RPM
包软件管理器, 用于自动化安装配置 Linux
软件, 并可以自动解决依赖问题 -
语法
1
yum [-y] [install | remove | search] 软件名称
-
选项
-y
: 自动确认,无需手动确认安装或卸载过程 -
install
: 安装 -
remove
: 卸载 -
search
: 搜索 -
测试
使用测试 yum
命令需要 root
权限, 可以使用 su
切换到 root
,或者使用sudo
提权 yum
需要连接网络
-
-
ubuntu
系统使用 apt
-
语法
1
apt [-y] [install | remove | search] 软件名称
-
Systemctl
-
Linux
系统很多软件 (内置或第三方) 均支持使用 systemctl
命令控制: 启动、停止、开启自启 能够被 systemctl
管理的软件, 一般也称之为 服务
-
语法
1
systemctl start(启动) | stop(停止) | status(状态信息) | enable(开启开机自启) | disable(关闭开机自启) 服务名
查看 Redis
运行状态 -
安装第三方软件
-
时间同步
ntp
-
查看状态
自动注册的服务名为 ntpd
-
软连接
-
作用
在系统中创建软连接,可以将文件,文件夹链接到其他位置,类似
Windows
系统中的 快捷方式
-
语法:
ln -s 参数
1 参数 2 -
选项
-s
: 创建软连接 -
参数
1
: 被链接的文件或文件夹 -
参数
2
: 要链接去的目的地 -
实例
1
2
3
4
5ln -s /etc/yum.conf ~/yum.conf
ls -s /etc/yum ~/yum在软连接过程中, 路径指定很重要, 否则无法生效 链接无效 (路径指定问题导致) 链接正确 (可以使用)
-
配置VIM
编辑器
基本配置
-
配置 vim
1
2
3
4
5
6
7
8
9# 创建文件写入以下配置信息
vim .vimrc
set nu # 显示行号
syntax on # 高亮显示
set ts=4 # 制表位
set expandtab # 自动转换 tab
set ruler # 显示光标
set nohls # 关闭搜索高亮 -
基本使用
认识与使用
末行模式
-
显示关闭行号
( 按下
)Esc 后执行 1
2set nonu # 关闭行号
set nu # 显示行号 -
制表键位数设置
1
set ts=4
-
vim
下代码高亮显示 1
2syntax on # 开启
syntax off # 关闭 -
光标所在位置
1
2
3set ruler # 显示光标所在位置
set noruler # 关闭光标显示显示光标所在位置 -
命令模式
-
移动光标
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15G # 光标移到文件末尾
200G # 光标移动到第 200行
gg # 光标移动到行首
h 左
j 下
k 上
l 右
ctrl + y / ctrl + e 移动一行
ctrl + f / ctrl + b 翻一页
0 光标移动到行首
$ 光标移动到行尾
w 光标移动到下一个单词方向控制 -
删除
1
2dd # 删除光标所在行
100dd 从光标所在删除 100 行 -
复制
1
2
3
4
5
6
7yy # 复制光标所在行
10yy # 光标所在行开始复制 10 行
p # 粘贴
10p # 粘贴 10 遍 -
撤销恢复
1
2u # 撤销
ctrl + r # 恢复 -
映射快捷键
1
2
3map
gg99999dd # 回到行首 删除 9999 行
inoremap _main if __name__ == '__main__' -
多文件操作
1
2:ls # 查看当前打开的所有文件(类似于
windows 的 windows + Tab, 在 linux 只显示文件名称)
:b 数字 # 显示指定文件多文件操作 -
窗口显示
(分屏) -
水平拆分
1
2
3
4sp
# 切换窗口
ctrl + ww -
垂直拆分
1
vs # 垂直拆分窗口
-
退出窗口
1
2
3qa # 水平拆分垂直窗口
wqa # 保存并退出所有窗口
-
-
中断恢复
-
shift + r
中断恢复 -
删除隐藏文件
1
2
3
4
5# 显示隐藏文件
ls -a
rm -y 上一次中断的执行文件.后缀名.swp
-
-
命令别名
1
2
3
4# 别名: 简化输入
alias 别名 = '命令'
# alias nl='ls -laR' # 递归显示, -
查找替换
1
2
3
4
5
6
7
8
9
10
11
12# 全文替换
:1,$s/替换目标 / 替换为 /ci # c 确认 i 忽略大小写
# 前 n 替换
:1,10s/替换目标 / 替换为 /ci # c 确认 i 忽略大小写
# 一行有多个需要替换就需要添加 g 参数
:1,10s/替换目标 / 替换为 /cg # c 确认 g 全局 global
# 直接替换
:1,$s/替换目标 / 替换为
-
VIM
查找
? 或 /
-
快捷键
1
2
3shift + v | V # 选中光标所在行
shift + g | G # 向下选择 -
vim
主题 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15# 末行模式下
:colorscheme (空格一下,按下 ctrl + d)
# 显示可选主题
blue default desert evening koehler murphy peachpuff shine torte
darkblue delek elflord industry morning pablo ron slate zellner
# 可以从网络下载主题
https://github.com/flazz/vim-colorschemes
# 可写入 .vimrc 文件永久配置 存入 git 进行版本控制, 以后方便使用
# 开源: https://github.com/liuchengxu/space-vim (以后配置)配置 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19vim ~/.vimrc
syntax enable
syntax on
colorscheme desert
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
set nu
set mouse=a
set selection=exclusive
set selectmode=mouse,key
set autoindent
set showmatch
set paste
set listchars=tab:>-,trail:-
set ruler
set clipboard+=unnamed
可视模式
-
v
: 字符可视模式 -
V
: 行可视模式 -
ctrl + v
: 块可视模式- 配合
d
和 I
命令可以进行块的便利操作
- 配合
宏
-
录制宏
1
末行模式: q 其他字母 -
python
注释宏录制 -
vim
文件 -
按下
q
,在键入其他字母Eg. a 寄存器名称
-
按下
i
-
添加注释
#
-
按下
ESC
,按下j
进入下一行 -
按下
q
结束宏 -
播放宏
- 数字
@a
- 数字
-
演示
宏模式
-
用户和用户组管理
-
用户分类
- 超级管理员
root
- 家目录:
/root
- 家目录:
- 普通用户
coder-itl
/home/coder-itl
- 超级管理员
-
新建用户
1
2
3
4# 验证用户是否存在
id test
# 添加新用户
useradd test创建新用户 test
-
删除用户
1
userdel -r test
删除用户以及家目录 -
修改用户密码
1
2# 修改 root 用户密码
passwd root -
修改用户属性
1
2# 这个 test 用户登录后访问的目录是
usermod -d /home/aTest test细节过程 -
修改用户属性
1
2# 用户的生命周期
chage
-
新建用户组
1
groupadd 组名称
修改用户所属组 -
创建用户的同时添加到用户组
1
useradd -g 组名 用户名
用户 zs
添加到 h5
-
-
删除用户组
1
groupdel 组名
-
su
1
2# 使用 login shell 方式切换用户
su - 用户名su
-
sudo
1
# sudo: 以其他用户身份执行命令
visudo
: 设置需要使用sudo
的用户 (组)
-
exit
: 注销当前登录用户 -
提升一个用户权限
-
首先为这个用户创建密码
1
passwd test
-
修改
Linux
密码复杂度策略 -
查看当前密码复杂度
1
cat /etc/pam.d/system-auth | grep -i password
-
查看密码最长使用天数
1
2# 默认永久
cat /etc/login.defs | grep -v '#' | grep -v '^$' -
修改密码策略
1
2
3vim /etc/pam.d/system-auth
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 minlen=4 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1 authtok_type=1
2
3
4
5
6
7# retry 允许重试
3 次
# minlen 最小位数
# ucredit 大写字母位数
# lcredit 小写字母位数
# dcredit=N: N >= 0:密码中最多有多少个数字;N < 0 密码中最少有多少个数字. dcredit=-1 密码中最少有 1 个数字
# ocredit=N:特殊字母的个数 ocredit=-1 密码中至少有 1 个特殊字符
# 它表示密码必须至少包含一个大写字母(ucredit),两个小写字母(lcredit),一个数字(dcredit)和一个标点符号(ocredit)设置简单密码
-
-
-
visudo
直接输入编辑的是 /etc/sudoers
文件内容 1
2# 查看该文件的内容
cat /etc/sudoers | grep -v '#' | grep -v '^$'主要关注点 root ALL=(ALL) ALL
解释:
root
: 用户名
ALL=(ALL)
可连接终端( 任意: 1. 字符终端 2. 远程终端
)(Eg:ssh)
ALL
: 可执行所有命令-
添加
test
拥有可以执行 shutdown
的配置 1
2
3
4test ALL=/usr/sbin/shutdown -c
# 按下 ESC,输入 : !which 会获取到这个命令的地址 => /usr/sbin/shutdown
-
-
-
/etc/passwd
解析 -
/etc/shadow
: 保存用户和加密后的密码内容 -
``
环境变量
-
临时设置
1
2# 语法
export 变量名= 变量值 临时配置 -
永久生效
-
针对当前用户生效,
配置在当前用户的 ~/.propertiesrc
文件中, 并通过 source .propertiesrc
立即生效 在文件中 export 变量名
= 变量值 -
针对所有用户生效,
配置在系统的 /etc/profile
文件中 - 并通过语法
source /etc/profile
,进行立即生效,或重新登录 终端
生效
在 /etc/profile
末尾添加自己的软件所需内容 - 并通过语法
-
上传下载
-
下载
1
yum install -y lrzsz
-
上传
1
rz
选择上传文件 -
下载
1
sz
选择传输的文件与保存文件位置
实用技巧
-
解决上传
windows
中文文档乱码 1
2
3
4
5
6
7
8
9
10
11
12
13
14原因: 编码的问题
命令: iconv 命令转码
参数:
-f --from-code=名称 原始文本编码
-t --to-code=输出编码
-o --output=file 输出文件名
上传命令:
rz
命令实战: iconv -f gb2312 -t utf8 文件.后缀名 -o new-name. 后缀名
windows默认编码: gb2312 -
解决
Linux
服务器上的脚本导到 windows
上串行问题 1
2
3# 将 linux 上的换行符转换为 windows 可以识别的换行符
unix2dos 文件名.sh -
紧急模式恢复
root
密码 -
重启虚拟机
按下 e
-
修改密码流程
-
修改语言显示:
LANG=en
-
查看挂载分区:
mount
,最后一行信息,可以看出权限信息 -
重新挂载再根分区:
mount -o remount,rw /
根据查看的挂载分区填写根分区路径 / -
切换至根分区:
chroot /
根据查看的挂载分区填写根分区路径 / -
修改密码,密码不能过于简单
修改密码 -
创建文件:
touch /.autorelabel
-
退出:
exit
-
重启:
reboot
-
-
-
rpm
包的安装 1
2
3
4
5
6
7
8
9
10
11
12
13
14rpm: 已经使用 GCC 编译后的
tar: 源码包,需要编译
使用:
wget rpm-package···
rpm -ivh /package-path/参数解析:
i install 安装软件包
v 显示附加信息,提供更多详细信息
h hash 安装时输出 ####### 标记
V 校验,对已经安装的软件进行校验
-
dnf
管理软件包 1
优点: 自动补全依赖 -
系统进程管理
1
2
3
4
5
6
7
8
9
10ps 查看进程工具
参数解析:
a 显示跟当前终端关联的所有进程
u 基于用户的格式显示
x 显示所有进程,不以终端机来区分
-aux
e 显示所有进程
f 显示完整格式输出
-efps
-
具体分析
参数解析 1
2
3
4
5
6
7
8
9
10
11user: 启动这些进程的用户
pid: 进程的 id
%cpu: 进程占用的 cpu 百分比
%mem: 占用内存的百分比
vsz: 进程占用的虚拟内存大小(单位: kb)
rss: 进程占用的物理内存大小(单位: kb)
stat: 该进程目前的状态,linux进程有 5 钟基本状态
start: 该 process 被触发启动的时间
time: 该 process 实际使用 cpu 运作的时间
command: 该程序的实际指令 -
理解含义
1
2
3
4
5[root@T-yuan ~]# ps -ef|grep nginx
root 16848 1 0 Jun24 ? 00:00:00 nginx: master process nginx
nobody 17022 16848 0 Jun24 ? 00:00:00 nginx: worker process
root 30903 27960 0 11:24 pts/1 00:00:00 grep --color=auto nginx
-
-
系统定时任务
1
2
3[root@T-yuan ~]# ps aux | grep crond
root 1278 0.0 0.0 126392 1612 ? Ss Jun24 0:00 /usr/sbin/crond -n
root 32539 0.0 0.0 112812 976 pts/1 R+ 11:35 0:00 grep --color=auto crond1
2
3
4
5
6
7crontab
参数解析:
-e 编辑 crontab 定时任务
-l 查询 crontab 任务
-r 删除当前用户所有的 crontab 任务
-
开始编辑一个定时任务
项目 含义 范围 第一个 * 一小时当中的第几分钟 0 - 59 第二个 * 一天当中的第几个小时 0 - 23 第三个 * 一个月中的第几天 1 - 31 第四个 * 一年中的第几个月 1 - 12 第五个 * 一周当中的星期几 0,7(星期日) 时间 含义 45 22 * * * 在 22 点 45 分执行命令 0 17 * * 1 每周一的 17 点 0 分执行命令 0 5 1,15 * * 每月一号和十五号 的凌晨 5 点 0 分执行命令 40 4 * * 1-5 每周一到周五的凌晨 4 点 40 执行命令 */10 4 * * * 每天的凌晨 4 点, 每隔 10 分钟执行一次命令 0 0 1,15 * 1 每月一号和十五号, 每周一的 0 分都会执行命令, 注意: 星期几和记号最好不要同时出现, 因为他们的定义都是天 特殊符号 含义 * 代表任何时间, 比如第一个 * 就代表一小时中每分钟都执行一次的一次 , 代表不连续的时间, 比如”0 8,12,16 * * *” 每天的 8 点 0 分,12 点 0 分,16 点 0 分都执行一次命令 - 代表连续的时间范围, 比如: “0 5 ** 1-6” 代表在周一到周六的凌晨 5 点 0 分执行命令 */n 代表 每隔多久执行一次, 比如: “*、10 * * * *” 代表没隔 10 分钟就执行一遍命令
-
Yun-安装 MYSQL
MYSQL-5.7
-
配置
yum
仓库 1
2
3
4
5# 更新密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# 安装Mysql yum 库
rpm -Uvh http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm由于
MySQL
并不在 CentOS
的官方仓库中,所以我们通过上述 rpm
命令: - 导入
MySQL
仓库的密钥 - 配置
MySQLQ
的 yum
仓库
- 导入
-
使用
yum
安装 MySQL
1
2# yum
安装 Mysql
yum -y install mysql-community-server -
安装完成后,启动
MySQL
并配置开机自启动 1
2systemctl start mysqld # 启动
systemctl enable mysqld # 开机自启MySQL
安装完成后,会自动配置为名称叫做: mysqld
的服务,可以被 systemctl
所管理 -
检查
MySQL
的运行状态 1
systemctl status mysqld
-
主要配置管理员用户
root
的密码以及配置允许远程登录的权限 -
获取
MySQL
的初始密码 1
2# 通过
grep 命令,在 /var/log/mysqld.log 文件中,过滤 temporary password 关键字,得到初始密码
grep 'temporary password' /var/log/mysqld.log -
登陆
MySQL
数据库系统 1
2
3
4
5
6
7# 执行
mysql -uroot -p
# 解释
# -u,登陆的用户,MySQL数据库的管理员用户同 Linux 一样,是 root
# -p,表示使用密码登陆
# 执行完毕后输入刚刚得到的初始密码,即可进入MySQL 数据库 -
修改
root
用户密码 1
2# 在
MySQL 控制台内执行
ALTER USER 'root'@'localhost' IDENTIFIED BY '密码'; -- 密码需要符合:大于8 位,有大写字母,有特殊符号,不能是连续的简单语句如 123,abc -
[扩展],配置
root
的简单密码 1
2
3
4
5
6# 如果你想设置简单密码,需要降低
Mysql 的密码安全级别
set global validate_password_policy=LOW; # 密码安全级别低
set global validate_password_length=4; # 密码长度最低4 位即可
# 然后就可以用简单密码了(课程中使用简单密码,为了方便,生产中不要这样)
ALTER USER 'root'@'localhost' IDENTIFIED BY '简单密码'; -
[扩展],配置
root
运行远程登录 1
2
3
4
5
6
7# 授权
root 远程登录
grant all privileges on *.* to root@"IP地址" identified by '密码' with grant option;
# IP地址即允许登陆的 IP 地址,也可以填写 %,表示允许任何地址
# 密码表示给远程登录独立设置密码,和本地登陆的密码可以不同
# 刷新权限,生效
flush privileges;
-
MYSQL-8.0
-
配置
yum
仓库 1
2
3
4
5# 更新密钥
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
# 安装Mysql8.x 版本 yum 库
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm -
使用
yum
安装 MySQL
1
2# yum
安装 Mysql
yum -y install mysql-community-server -
安装完成后,启动
MySQL
并配置开机自启动 1
2systemctl start mysqld # 启动
systemctl enable mysqld # 开机自启 -
配置
主要修改
root
密码和允许 root
远程登录 -
获取
MySQL
的初始密码 1
2# 通过
grep 命令,在 /var/log/mysqld.log 文件中,过滤 temporary password 关键字,得到初始密码
grep 'temporary password' /var/log/mysqld.log -
登录
MySQL
数据库系统 1
2
3
4
5
6
7# 执行
mysql -uroot -p
# 解释
# -u,登陆的用户,MySQL数据库的管理员用户同 Linux 一样,是 root
# -p,表示使用密码登陆
# 执行完毕后输入刚刚得到的初始密码,即可进入MySQL 数据库 -
修改
root
密码 1
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码'; -- 密码需要符合:大于
8 位,有大写字母,有特殊符号,不能是连续的简单语句如 123,abc -
[扩展],配置
root
的简单密码 1
2set global validate_password.policy=0; # 密码安全级别低
set global validate_password.length=4; # 密码长度最低4 位即可 -
允许
root 远程登录,并设置远程登录密码 1
2
3
4
5# 第一次设置
root 远程登录,并配置远程密码使用如下 SQL 命令
create user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码!'; -- 密码需要符合:大于8 位,有大写字母,有特殊符号,不能是连续的简单语句如 123,abc
# 后续修改密码使用如下SQL 命令
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码'; -
退出
MySQL
控制台页面 1
2
3
4# 退出命令
exit
# 或者通过快捷键退出:ctrl + d -
检查端口
MySQL
默认绑定了 3306
端口,可以通过端口占用检查 MySQL
的网络状态 1
netstat -anp | grep 3306
-
DNF
-
是
yum
的升级版, 在 Centos
,或 Red Hat 等上使用 有一些新增特性 -
下载
1
yum -y install dnf
-
列出已安装的软件包
1
dnf list installed
-
更新列表中的所有软件包
1
dnf upgrade
-
软件下载
1
dnf -y install zip[下载的软件包名]
过程更加清晰 -
软件删除
1
dnf -y remove zip[下载的软件包名]
-
升级指定的包
1
dnf -y upgrade package-name
-
镜像加速配置
1
2
3
4
5
6
7
8sudo dnf install epel-release
sudo sed -i.bak \
-e 's|^metalink|#metalink|' \
-e 's|^#baseurl=|baseurl=|' \
-e 's|download.fedoraproject.org/pub|mirrors.aliyun.com|' \
/etc/yum.repos.d/epel*.repo
1 |
#修改配置 |
镜像 ISO 挂载与本地 YUM 源
虚拟机挂载光盘 (ISO) 镜像
-
下载镜像文件
准本镜像文件 -
在虚拟机中添加
CD/DVD
添加 CD/DVD
,设备状态为 启动时连接
-
正常启动
-
在根目录创建一个文件夹
Eg: iso
1
2
3
4# 进入根目录
cd /
# 创建挂载点目录
mkdir iso -
由于镜像文件启动时已经正常加载,
此时查看挂载情况, 发现 镜像文件
在磁盘使用情况中不存在1
2# Linux df(英文全拼:disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计。
df -h -
在
Centos7
是已经将光盘加载到 sr0
1
2
3# Centos6 是 cdrom,Centos7 将该目录软连接到了 sr0
cd /dev
ls -lsr0
-
挂载
sr0
到 iso
目录 1
2
3
4
5# 没添加权限,
在使用过程中有一些不必要的警告信息会出现 mount /dev/sr0 -rw /iso
# 回到 根目录
cd /
# 进行挂载
mount /dev/sr0 /iso -
如果在挂载过程中出现
mount: no medium found on /dev/sr0
,就是未连接,可以选择右击连接
光盘未连接 -
连接后,
旁边出现 绿色小点
成功连接光盘标志 -
重新使用挂载命令挂载
挂载成功
-
物理光盘 ISO 挂载文件制作本地 YUM 源并安装 VIM
-
进入
yum
源目录 1
cd /etc/yum.repos.d
-
备份
1
2# 使用 rename 批量修改
rename repo repo.default *批量备份 -
创建本地
yum
源 1
2cd /etc/yum.repos.d
vi iso.repo1
2
3
4
5
6# 添加内容
[iso]
name=iso
baseurl=file:///iso
enable=1
gpgcheck=01
2# 就是把服务器的包信息下载到本地电脑缓存起来配合 yum -C search xxx 使用不用上网检索就能查找软件信息执行完
yum makecache -
当前网络状态
Linux
处于无网络状态 -
使用本地
yum
源无网络状态下载 vim
使用本地 yum
源
网络 YUM 源
-
删除
iso && iso.repo
1
2cd /
rm -rf iso -
还原
repo
1
2cd /etc/yum.repos.d
rename repo.default repo *还原 -
网络源配置
1
2
3
4sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org/centos|baseurl=https://mirrors.ustc.edu.cn/centos|g' \
-i.bak \
/etc/yum.repos.d/CentOS-Base.repo1
2# 更新缓存
yum makecache -
阿里云源更换