Linux
相关概念
操作系统
是应用程序运行的基础支撑环境
- 作用:管理和控制计算机系统的硬件与软件资源
TTY
计算机的终端(terminal)设备
文件
Linux 中一切都是文件
目录
文档:目录
有且只有一个根目录,就是
/
用
/
表示目录层级关系,例如:/usr/bin
一般在 Linux 下命名目录时尽量不要使用空格或其他特殊符号,尽量使用小写字母,会省去很多不必要的麻烦
直属子目录
bin
:常用二进制命令存放目录- 包含会被所有用户使用的可执行文件
- 普通用户 和 root 用户均可使用命令
sbin
:系统管理命令存放目录- 包含系统级的重要可执行程序
- root 用户可用命令
boot
:启动目录,Linux 内核与系统引导程序目录dev
:设备文件存放目录,里面的每个子目录对应一个外设(光盘驱动器文件)etc
:系统配置文件存放目录root
:超级用户 root 的家目录home
:普通用户家目录,用户私人目录- 每个用户都在 home 目录下有一个私人目录,除 root,root 用户拥有所有权限,和普通用户不在一起
lib
:函数库存放目录,启动系统与运行命令所需的共享库文件与内核模块目录- 包含被程序所调用的库文件,例如
.so
结尾的文件 - windows 中这样的库文件是以
.dll
结尾的
- 包含被程序所调用的库文件,例如
media
:媒体设备挂载目录- 当可移动的外设(USB 盘、SD 卡、DVD、光盘等等)插入时,可以通过 media 子目录来访问这些外设中的内容
mnt
:系统挂载目录- 类似 media 目录,但一般用于临时挂载一些装置
opt
:第三方软件存放目录- 表示可选的应用软件包,用于安装多数第三方软件和插件
srv
:服务存放数据目录- 包含一些网络服务启动之后所需要取用的数据
tmp
:临时目录,普通用户和程序存放临时文件的地方usr
:存放用户应用程序的目录/usr/local
:编译方式安装程序的默认目录/usr/src
:程序源码目录
var
:系统相关文档内容目录- 通常包含程序的数据,比如 log(日志)文件
proc
:系统运行时,进程信息与内核信息存放lib64
:run
:sys
:
路径格式
- 绝对路径
- 从根目录
/
开始写起
- 从根目录
- 相对路径
- 当前目录
.
- 上级目录
..
- 家目录
~
- 当前目录
命令提示符
[sunzhenyang@localhost ~]$
sunzhenyang
:当前用户的名字(Linux 是多用户才做系统)- 修改位置:
setting -> Details -> User
- 修改位置:
@
:前面是用户名,后面是所在的域,例如:874530670@qq.comlocalhost
:电脑/主机的名字,也就是主机名(hostname)- 修改位置:
setting -> Details -> About
- 修改位置:
~
:当前所在目录的名字,会随着用户进入不同目录而改变- 表示当前用户的家目录(home directory)
$
:指示所具有的权限,表示普通用户,有权限的限制#
:表示超级用户,也就是 root,拥有所有权限
命令参数
- 参数是写在命令之后的一些补充选项,命令和参数之间有空格隔开
- 格式:
command parameters
- 参数没有固定格式,可以包含数字、字母等等,但一般遵循一定的规范
- 短参数
- 最常用的参数形式是一个短横线后接一个字母:
command -p
- 一次可以加多个短参数,用空格隔开:
command -p -a -T -c
- 多个短参数可以合并:
command -paTc
- 短参数字母是区分大小写的,表示不同含义
- 最常用的参数形式是一个短横线后接一个字母:
- 长参数
- 以两个短横线开始
- 格式:
command --parameters
- 多个长参数不能合并,只能以空格隔开
command --paramters1 --paramters2
- 可以组合使用短参数和长参数
- 同一个意义的参数有短参数和长参数两种形式
- 例如:
ls -a
和ls --all
- 例如:
- 参数的值
- 有一些参数需要赋值,短参数和长参数赋值方式不同
- 短参数赋值:
command -p 10
- 长参数赋值:
command --paramters=10
配置文件
Linux 或 unix 的许多程序启动时,都需要
rc
后缀的初始文件或配置文件Linux 中配置文件大多以 点(
.
)开头表示隐藏,而且大多以 rc 结尾一般配置在用户家目录下
快捷键
Ctrl + Alt + F1
:回到图形界面Ctrl + Alt + F2
:terminal 1(:0 大致等于 tty1)Ctrl + Alt + F3
:terminal 2(tty2)Ctrl + Alt + F4
:terminal 3(tty3)Ctrl + Alt + F5
:terminal 4(tty4)Ctrl + Alt + F6
:terminal 5(tty5)Ctrl + C
:可以终止大部分终端的命令和正在执行的程序,有点类似 windows 中的Alt + F4
Ctrl + L
:清空命令行(同clear
命令)Ctrl + D
:给终端传递 EOF ( End Of File, 文件结束符 )Shift + PgUp
:用于向上滚屏,与鼠标滚轮向上滚屏一个效果Shift + PgDown
:用于向下滚屏,与鼠标滚轮向下滚屏一个效果Ctrl + A
:光标跳到一行命令的开头,同键盘上的 Home 键Ctrl + E
:光标跳到一行命令的结尾,同键盘上的 End 键Ctrl + U
:删除光标左侧命令字符Ctrl + K
:删除光标右侧命令字符Ctrl + W
:删除光标左侧单词(单词指用空格隔开的一个字符串,例如:-a
)Ctrl + Y
:粘贴Ctrl + U
、Ctrl + K
、Ctrl + W
删除的字符串
命令
Tab 键补全命令
按两次 Tab 键补全文件名、路径名(结果过多时:空格键跳转到下一页,回车键跳转到下一行,Q 键退出列表)
方向键上下用于显示上一条或下一条命令
Ctrl + R
:查找使用过的命令
history
:列出之前使用过的所有命令,可以用!编号
的格式重新运行 history 输出中对应的命令
系统相关
uname
:查看当前系统uname -a
:查看当前系统的详细描述hostname
:获取当前主机名命令 --help
:查看某个命令的帮助信息ip addr
:查看 ip 地址- 可以简写为
ip -a
- 可以简写为
data
:显示当前时间 3- CST:Central Standard Time 的缩写,表示中央标准时间(时区)
clear
:清屏shutdown
[选项][时间 hh:mm / mm] [消息]并有如下选项:- k 不执行任何关机操作,只发出警告信息给所有用户
- r 重新启动计算机(或
reboot
) - h 关机并彻底断电
- f 快速关机且重启动时跳过 fsck
- n 快速关机不经过 init 程序
- c 取消之前的定时关机
系统管理
ifconfig
:获取 IP 地址netstat -tulpn
或netstat -ano
:查看网络端口号- 命令参数
t
:显示 TCP 传输协议连接状况u
:显示 UDP 传输协议连接状况l
:显示处于监听状态的网络连接p
:显示应用的 PID 和 程序名称n
:显示 IP 地址a
:显示所有连接o
:显示计时器
- 结果参数
Proto
:网络协议Recv-Q
:接收队列,等待处理的数据包的数量Send-Q
:发送队列,等待处理的数据包的数量Local Address
:本地地址Foreign Address
:远程地址State
:网络连接状态- ·
LISTEN
:表示此连接正在被监听
- ·
PID/Program name
:应用进程编号/应用名称
- 命令参数
ps -ef
:查看进程ps -ef | grep vim
kill -9 PID
:杀掉 PID 进程kill -s QUIT PID
:采用正常方式关闭进程
用户管理
sudo su
:切换为 root 用户visudo
:对某些用户进行授权visudo -c
:对文件进行格式化检查Ctrl + D
或exit
:退出 root 用户who
:查看当前已登录的用户信息whoami
:获取当前用户名字useradd [-g 群组] 用户名
:创建用户并分配群组passwd 用户名
:设置密码userdel [-r] 用户名
:删除用户
文件管理
查看
echo
echo "文本"
:在终端输出指定字符,字符用双引号包裹echo "hello" > hello.txt
:>
表示将左侧位置产生的结果重写至右侧文件echo "hello" >> hello.txt
:>>
表示将左侧位置产生的结果追加至右侧文件
cat 文件路径 文件路径
:一次性在终端显示文件的所有内容- 可以连接多个文件,会把多个文件内容合并显示
-n
:显示行号-E
:显示空行cat a.txt b.txt >> c.txt
:将多个文件内容合并输出到一个文件cat > test.txt << EOF
:创建输入流并将输入文本重写入到指定文件<<
:创建输入留EOF
:指定的结束字符(可以是其他文本)- 将
>
改为>>
即可把重写文本操作改为追加文本操作
head + 文件路径
:显示文件的开头几行-n + 行数
:指定显示行数
tail + 文件路径
:显示文件的结尾几行(默认显示 10 行)-n + 行数
:指定显示行数-f
:实时追踪文件的更新- 默认每隔 1s 检查一下文件是否有新内容
-s + 秒数
:指定间隔检查的描述
grep 要查找的文本 文件路径
:将包含文本的文本行进行提取-v
:将不包含文本的文本行进行提取- 要查找的文本可以是正则表达式
|
:通道,将前面命令的输出结果作为后面命令的依据ll | grep bin
-E
:使用扩展的正则表达式对结果进行筛选ll | grep bin[0-9]{1,5}.txt
less + 文件路径
:分页显示文件内容- 命令中快捷键
d
键:前进半页(半个屏幕)u
键:后退半页(半个屏幕)空格
键:文件内容读取下一个终端屏幕的行数,相当于前进一个屏幕页,与键盘上的 PageDown(下一页) 效果相同b
键:后退一页,与键盘上的 PageUp(上一页) 效果相同回车
键:文件内容读取下一行,与向下键效果相同y
键:后退一行,与向上键效果相同q
键:终止less
命令或退出帮助文档h
键:显示帮助文档=
键:显示在文件中的位置- 当前页面的内容是文件的第几行到第几行
- 整个文件的行数
- 当前页面的字符数
- 整个页面的字符数
- 当前页面占整个文件的百分比
/
(斜杠):进入搜索模式- 在斜杠后输入要搜索的文字按下回车键,就回把所有符合的结果都表示出来
- 要在搜索的结果中跳转
- 按
n
键(跳到下一个符合项目) - 按
N
键(shift + n
跳到上一个符合项目)
- 按
- 正则表达式也可以用在搜索内容中
- 命令中快捷键
操作
touch + 文件路径
:当文件不存在时,创建一个空白文件,可同时创建多个文件cp
:拷贝文件-r/-R
:拷贝目录*
:通配符
mv
:移动或重命名文件或目录rm
:删除目录或文件-i
:向用户确认是否删除-f
:不询问用户是否确定删除文件-r
:递归删除,用于删除目录
查找
locate + filename|function|reg
:搜索包含关键字的所有文件或目录- 不会对实际的整个硬盘进行查找,而是在文件的数据库里进行查找
- 对于刚创建不久的文件,还没有被收录进文件数据库,所以找不到其索引,不会返回任何结果
- 一般每天会更新一次数据库,隔 24 小时再用 locate 查找就可以找到了
updatedb
:强制系统立即更新文件数据库,此命令只能由 root 用户执行find
:查找文件- 可以让我们对每个找到的文件做后续的操作
- 不会在文件数据库中查找文件的记录,而是遍历实际硬盘
find [何处] 何物 [做什么]
- 何处:指定在哪个目录中查找,此目录的所有子目录也会被查找
- 如果没有提供此参数,会在当前目录及其子目录进行查找
- 何物:(必须)可以根据 文件名字、大小、最近访问时间 等等来查找
- 做什么:找到文件后最为每个文件做一定的操作,称为“后续处理”
- 默认地,假如不指定这个参数,该命令只会显示找到的文件
-name
:按名称查找-type
:按类型查找d
:目录f
:文件
-printf
:格式化打印查找结果%p
:文件名%u
:文件所有者
-delete
:删除查找到的文件-exec
:可以后接一个命令,对每个查找到的文件进行操作- 不必用双引号括起来
{}
:会用查找到的每个文件来替代\
:是必须的结尾
-ok
:和-exec
类似,但每次操作查找到的文件前都有一次确认提示
- 何处:指定在哪个目录中查找,此目录的所有子目录也会被查找
- find 只会查找完全符合
何物
字符串表示的文件,locate 会查找所有包含关键字的文件- 例如查找
thing
,find 只会找到thing
, 为不会找到thing1
- 可以使用通配符(
*
)解决此问题
- 例如查找
# 根据文件名查找
find -name "new_file"
# 根据文件大小查找
find /var -size +10M
find /var -size -50k
find /var -size +20G
# 按文件类型查找
find . -name "new_file" -type d
# 按最近访问时间查找(7天内)
find -name "*.txt" -atime -7
# 在特定的目录下按文件名查找
find /var/log -name "syslog"
# 格式化打印查找结果
find -name "*.txt" -printf "%p - %u\n"
# 删除当前目录及其子目录下所有以 .jpg 为后缀的文件
find -name "*.jpg" -delete
# 对每个找到的文件修改权限
find one -name "*.txt" -exec chmod 600 {} \
目录管理
查看
ls [-al] [文件名或目录名]
:列出当前目录下的目录和文件-a
:列出所有文件,包含隐藏文件-A
:与-a
类似,但不包含.
和..
-l
:使得ls
命令列出一个显示文件和目类似-录的详细信息的列表(文件以字节为单位)-h
:表示适合人类阅读的-t
:按文件最近一次修改时键排序-i
:显示文件的 inode
ll
:列出当前目录下的目录和文件信息|
:通道,将前面命令的输出结果作为后面命令的依据ll | grep bin
cd [目录名称]
:切换目录- 不加路径参数时会直接回到家目录(~)
cd ..
:返回上一级目录cd ../..
:返回上上级目录
pwd
:显示当前目录路径du
:表示磁盘使用/占用(只显示目录)-a
:显示目录和文件的大小-h
:表示适合人类阅读的-s
:只显示总计大小
which
:获取命令的可执行文件的位置which node
whereis 文件或目录
:查找特定目录find 目录 [-name/user/size] 参数
:查找
操作
mkdir [-p] 目录名称
:创建目录-p
:递归创建目录结构,例如:mkdir -p one/two/three
-v
:用于显示执行过程
rmdir [-p] 目录名称
:删除目录,只能用于删除空目录cp
:拷贝文件-r/-R
:拷贝目录*
:通配符
mv
:移动或重命名文件或目录rm
:删除目录或文件-i
:向用户确认是否删除-f
:不询问用户是否确定删除文件-r
:递归删除,用于删除目录
ln
:创建链接(类似于 windows 中的快捷方式)- physical link:物理连接或硬链接
- Symbolic link:符号链接或软链接
压缩和解压缩
压缩文件类型
*.gz
:gzip 压缩格式的文件*.bz2
:bzip2 压缩格式的文件*.xz
:xz 压缩格式的文件*.tar
:tar 打包的文件*.zip
:zip 压缩格式的文件*.tar.gz
:打包并使用 gzip 压缩的文件*.tar.bz2
:打包并使用 bzip2 压缩的文件*.tar.xz
:打包并使用 xz 压缩的文件
压缩、解压缩命令
gzip
gzip 是 linux 系统中的文件压缩程序,默认扩展名为
.gz
tar
tar 是 linux 系统将多个文件打包和压缩的工具,本质是打包软件,扩展名为
.tar
可以结合 gzip 或其他压缩工具实现打包压缩,扩展名为
.tar.gz
tar [-ctxzjJvf] 压缩文件 [源文件]
:打包、压缩文件z
:只用 gzip 方式c
:打包压缩x
:解打包解压缩v
:显示过程f
:指定压缩包名t
:查看内容j
:使用 bzip2 方式J
:使用 xz 方式-C + 目录
:解压缩到某个目录
# 压缩命令
tar zcvf tomcat.tar.gz /usr/local/tomcat
# 解压缩命令
tar zxvf tomcat.tar.gz -C /use/local/tomcat
软件的安装与卸载
安装方式
编译安装:用户自己从网站下载程序源码进行编译安装
- 下载源码包(
curl、wget
) - 解压(
tar
) - 进入到该目录(
cd
) - 编译前配置(
./configure
) - 编译(
make
)- 错误时,可能需要先安装
gcc
gcc
:C 语言源代码的编译工具包yum install -y gcc
- 错误时,可能需要先删除文件夹并重新解压安装文件源码包
- 错误时,可能需要先安装
- 编译安装(
make install
) - 注意
- 编译安装时软件包依赖解决
- 删除 make clear 然后直接删除目录
- 下载源码包(
rpm:Red Hat 软件包管理器,相当于应用程序安装文件的执行者
rpm -ivh 软件包
i
:安装v
:显示详细信息h
:显示进度
rpm -q 安装包
:查询是否安装rpm -qi 安装包
:查询包信息rpm -ql 安装包
:查询安装位置rpm -e 安装包
:卸载
yum:软件仓库安装
yum search 包名称
:在仓库中查询是否存在指定 应用yum list 包名称
:查询可以安装的软件包yum list installed 包名称
:查询已安装的软件包yum list installed *tree*
:模糊匹配筛选已安装的软件包
yum info 包名称
:查看应用详细信息yum install [-y] 包名称
:全自动下载安装应用及其依赖-y
:自动回答 yes
yum update [-y] 包名称
:更新yum remove [-y] 包名称
:卸载
总结
- 编译安装,兼容性强,同一平台都可以安装
- rpm 安装管理方便
- 需要用户自己解决依赖问题
- yum 省时省力
- 引入软件仓库,联网下载 rpm 包及依赖,并依次自动安装
- 是 rpm 的前端程序,其目的是简化 rpm 的安装过程
文件存储
- 每个文件分为三部分:文件名、文件内容、权限
- 每个文件的文件内容都被分配到一个标识号码,就是
inode
- 每个文件名都绑定到它的文件内容(用
inode
标识)
硬链接
使链接的两个文件共享同样的文件内容,就是同样的
inode
一旦文件 1 和文件 2 之间有了硬链接,那么修改文件 1 或文件 2,修改的是相同的一块内容
缺陷:只能创建指向文件的硬链接,不能创建指向目录的
ln file1 file2
:创建 file2 并指向 file1 的文件内容对硬链接来说,删除任意一方的文件,共同指向的文件内容并不会从硬盘上被删除,同时删除硬链接的所有文件,共同指向的文件内容才会消失,也就是
inode
才会被删除
软链接
类似于 windows 下的快捷方式,原理很相似
ln -s file1 file2
:创建 file1 的软链接 file2- 如果删除了 file2,file1 不会有任何影响,如果删除 file1,file2 会变成死链接,因为指向的文件不见了
- 软链接可以指向目录
用户和权限
sudo
:以 root 身份运行命令
用户组织
- root 用户是默认创建的,超级用户
- 进入 root 的几种方式
sudo su
:会输入当前用户密码,进入后使用pwd
命令查看依然为普通用户目录su
:会输入 root 密码,进入后使用pwd
命令查看依然为普通用户目录su -
:会输入 root 密码,进入后使用pwd
命令查看为 root 家目录
root 可用命令
useradd
:添加用户useradd user1
passwd 用户名
:修改用户密码passwd user1
userdel
:删除已创建的用户userdel user1
- 不加参数只会删除用户,不会删除用户的家目录
-r/--remove
:连用户家目录一并删除
usermod
:修改用户账户-l
:对用户重命名,/home 中的家目录名不变,需要手动修改-g
:修改用户所在群组,此用户家目录内所有文件所在的用户群组会相应改变(会将用户从之前的群组中删除)usermod -g friends user1
-G
:将用户添加到多个群组,中间用逗号隔开(会将用户从之前的群组中删除)usermod -G friend1,firend2 user1
-aG
:追加,改变群组时保留之前的群组,追加群组一定要用-G
权限管理命令
说明
所有者 | 所属组 | 其他用户 | |
---|---|---|---|
文件/目录 | rwx | rwx | rwx |
符号(数值) | 权限 | 对文件的含义 | 对目录的含义 |
---|---|---|---|
r(4) | 读权限 | 查看文件 | 查看目录 |
w(2) | 写权限 | 修改文件 | 修改目录内容 |
x(1) | 执行权限 | 执行文件 | 进入目录 |
权限 | 数字 | 计算 |
---|---|---|
--- | 0 | 0 + 0 + 0 |
r-- | 4 | 4 + 0 + 0 |
-w- | 2 | 0 + 2 + 0 |
--x | 1 | 0 + 0 + 1 |
rw- | 6 | 4 + 2 + 0 |
r-x | 5 | 4 + 0 + 1 |
-wx | 3 | 0 + 2 + 1 |
rwx | 7 | 4 + 2 + 1 |
- 第一个字符
-
:表示文件d
:表示目录l
:表示连接(windows 中的快捷方式)
- 后面九个字符表示三组读写执行权限:所有者、所属组、其他用户
- 最后的小点表示 SELinux 的安全标签
root root
:对应所有者和所属组
修改权限
chmod
:修改访问权限,不需要是 root 用户才能运行,只要是文件的所有者就可以使用此命令来修改文件访问权限chown [-R] 用户名 文件或目录
:修改所有者chown [-R] 用户名:组名 文件或目录
:修改所有者和组chgrp [-R] 组名 文件或目录
:修改所属组chmod [-R] xyz 文件夹或目录
:权限修改-R
:递归设置子目录和子文件- 第一种修改法
x
:所有者权限数值之和y
:所属组权限数值之和z
:其他用户权限数值之和
- 第二种修改方法
x
:角色,** u g o a ** 分别表示所有者、所属组、其他用户、所有角色y
:设置,** + - = ** 分别表示增加、减少、设置z
:权限, ** r w x **:分别表示读权限、写权限、执行权限
// 用数字分配权限,具体含义参考上面表格
chmod 777 file.txt
// 用字母分配权限
chmod u+rx file.txt
chmod g+r file.txt
chmod o-r file.txt
chmod g+r o-r file.txt
chmod go-r file.txt
chmod +x file.txt
chmod u=rwx,g=r,o=- file.txt
chmod -R 700 /home/sunzhenyang
群组管理
- Linux 中每一个用户都属于一个特定的群组
- 如果不设置用户的群组,默认会创建一个和它用户名一样的群组
- 只有 root 用户可以修改一个文件的所有者和群组
群组命令
groups
:显示当前用户所在群组,后加用户名会显示输入用户名所在群组groupadd
:创建群组groupadd friends
groupdel
:删除群组groupdel friends
chown
:改变文件所有者chown friends file.txt
chown sunzhenyang:firends file.txt
-R
:递归设置子目录和子文件
chgrp
:改变文件的群组chgrp friends file.txt
-R
:递归设置子目录和子文件
newgrp 用户组
:将当前组切换到新的用户组
文本编辑器
Vim
Vi
的增强版,用于在远程环境下用命令的形式对文本进行在线编辑
vi 文件名
:用 vi 编辑器打开文件vimtutor
:查看 vim 教程- 模式
- 命令模式(默认)
k j h l
:上 下 左 右dd
:剪切当前行yy
:复制当前行p
:在下一行粘贴P(shift + p)
:在上一行粘贴w
:保存delete
或x
:删除单个字符/str
:全文查找str
字符串n
:下一个N
:上一个
:% s/old/new/g
:替换文件内所有old
字符为new
u
:撤销最近一次操作- 转换到编辑模式
a
:在光标之后插入A(shift + a)
:在当前行之后插入(行末)i
:在光标之前插入I (shift + i)
:在当前行之前插入(行首)o
:在光标之下插入O(shift + o)
:在上当前行之上插入
- 编辑模式
- 最后行模式
: 或 /
:进入最后行模式w
:保存wq
:保存并退出wq!
:(强制只读文件)保存并退出q
: 不保存退出q!
: 文档已被修改时,强制不保存退出set nu
:显示行号
- 命令模式(默认)
Nano
配置文件
.nanorc
一般配置在每个用户的家目录中新建
.nanorc
文件全局配置:
/etc/nanorc
每一行一句配置语句,配置语句以
set
或unset
开头set
:激活unset
:关闭
// 激活鼠标
set mouse
// 激活自动缩进
set autoindent
// 激活智能 Home 键
set smarthome
命令
nano file.txt
:打开文件- 如果 file.txt 不存在,就会创建一个名为 file.txt 的空文件
-m
:激活鼠标-i
:激活自动缩进功能-A
:激活智能 Home 键功能- 通常情况下按下键盘的 Home 键光标会自动跳到一行的开始,但是加了
-A
之后,会根据一行的开始出有无缩进来智能判断
- 通常情况下按下键盘的 Home 键光标会自动跳到一行的开始,但是加了
nano -miA file.txt
:同时激活上述三个属性
快捷键
Ctrl + C
:显示目前光标所在处的行数与列数等信息Ctrl + R
:打开其他文件Ctrl + G
:显示帮助文档Ctrl + W
:查找Ctrl + \
:替换Ctrl + K
:剪切当前行Ctrl + U
:粘贴Ctrl + Y
:上一页(PgUp)Ctrl + V
:下一页(PgDn)Ctrl + F
:向前移动一格光标(左键)Ctrl + B
:向后移动一格光标(右键)Ctrl + P
:向上移动一行(上键)Ctrl + N
:向下移动一行(下键)Ctrl + O
:保存文件Ctrl + X
:退出
SSH
是专为远程登录和其他网络服务提供的安全协议
- 分为两个不兼容版本 1.x 和 2.x,默认通过 SSH2.x 连接
- 常见工具:Xshell、SecureCRT
应用服务化
指让应用程序以服务方式在系统改后台运行
- Linux 系统对服务化应用进行统一管理
systemctl
:服务管理命令
指令 | 用途 |
---|---|
start | 启动服务 |
stop | 停止服务 |
restart | 重启服务 |
enable | 设置开机启动 |
disable | 禁止开机启动 |
status | 查看服务状态 |
daemon-reload | 重载服务配置文件 |
list-unit-files | 列出所有服务 |
操作步骤
- 进入服务文件夹:
cd /usr/lib/systemd/system
- 新建 redis.service 文件并输入内容:
vim redis.service
[Unit]
# 描述
Description=Redis
# 在某些系统服务之后启动
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
# 类型 forking:后台运行
Type=forking
# PID文件路径
PIDFile=/var/run/redis_6379.pid
# 服务启动命令
ExecStart=/usr/local/redis/redis-6.2.5/src/redis-server /usr/local/redis/redis-6.2.5/redis.conf
# 服务停止命令
ExecStop=/bin/kill -s QUIT $MAINPID
# 为每个服务设置私有的临时文件目录
PrivateTmp=true
[Install]
# 将当前服务分配到系统默认服务组,允许服务随系统启动
WantedBy=multi-user.target
# 重载服务配置文件
systemctl daemon-reload
# 启动 Redis 服务
systemctl start redis
# 查看 Redis 服务状态
systemctl status redis
# 关闭 Redis 服务
systemctl stop redis
# 重启 Redis 服务
systemctl restart redis
# 设置 Redis 服务 开机启动
systemctl enable redis
# 关闭 Redis 服务 开机启动
systemctl disable redis
防火墙
借助硬件和软件对内外部网络环境的保护措施
CentOS 7 基于 firewall 实现应用层防火墙
- 核心命令:
firewall-cmd
- 核心命令:
CentOS 6 基于 iptables
命令 | 描述 |
---|---|
firewall-cmd --state | 查看防火墙状态 |
firewall-cmd --list-ports | 查看防火墙房型的端口 |
firewall-cmd --zone=public --permanent --add-port=8080/tcp | 放行 8080 端口 |
firewall-cmd --zone=public --permanent --remove-port=8080/tcp | 移除被放行的 8080 端口 |
firewall-cmd --zone=public --permanent --add-port=8000-9000/tcp | 放行范围内的端口号 |
firewall-cmd --reload | 配置重载 |
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.163.210" port protocol="tcp" port="3306" accept" | 对指定 IP 向本机指定端口发送的数据包放行 |
Shell
是用 C 语言 编写的脚本解释器,是用户通过代码操作 Linux 的桥梁
- 用于输入终端的各种命令
- 是一个用户跟操作系统之间的一个命令解释器,也就是用户与 Linux 操作系统之间沟通的桥梁
- Shell 脚本描述要执行的任务,完成系列复杂的操作,文件通常以
.sh
后缀 - Shell 脚本通过 Shell 解释器执行,按揭使其分类分为多种类型
- 目前大部分 Linux 发行版默认的 shell 是
Bash
- 目前大部分 Linux 发行版默认的 shell 是
# deploy_tomcat.sh
echo "准备下载Tomcat9"
wget https://mirror.bit.edu.cn/apache/tomcat/tomcat-9/v9.0.34/bin/apache-tomcat-9.0.34.tar.gz
echo "正在解压缩Tomcat9"
tar zxf apache-tomcat-9.0.34.tar.gz
echo "防火墙开放8080端口"
firewall-cmd --zone=public --permanent --add-port=8080/tcp
firewall-cmd --reload
echo "启动Tomcat"
cd ./apache-tomcat-9.0.34/bin
./startup.sh
.bashrc
是 Bash 这个 shell 程序的配置文件(不用登录的图形化终端)
位于家目录下
.bashrc
本身的语法也是 Bash 语法,是一种脚本语言默认在用户下次登录系统时才能生效
source .bashrc
:使改动立即生效终端 bash 全局配置文件:
/etc/bashrc
.profile
需要登录的,非图形界面的终端的配置文件
位于家目录下
profile
文件会调用.bashrc
,profile
文件会用本身的配置加上.bashrc
的配置默认在用户下次登录系统时才能生效
source .profile
:使改动立即生效全局配置文件:
/etc/profile
软件仓库(基于 RedHat)
软件包
- 一个软件包是软件所有文件的压缩包
- 二进制形式,包含了安装软件的所有指令
- 在 Red Hat 一族里,软件包的后缀是
.rpm
- Debian 一族(Ubuntu、Debian 等)的软件包后缀是
.deb
- 软件包管理包括了依赖关系的管理
- 软件包不需要通过搜索引擎来找到并下载
- 几乎所有
.rpm
软件包存放在相同的地方,成为软件仓库
依赖关系
- 通常来说,很少有一个软件可以单独在 Linux 上运行而不依赖于其他程序
- 一个软件经常需要使用其他程序或者其他程序的片段(称之为“库”)
- 一个软件依赖其他程序,忙着就是依赖关系
管理软件仓库
package
:软件的二进制安装包dependency
:依赖repository
:仓库包含软件仓库列表的文件
- CentOS:
/etc/yum.repos.d/CentOS-Base.repo
(系统文件,只能被 root 用户修改)
- CentOS:
CentOS 官方源列表:https://www.centos.org/download/mirrors/
# 修改为阿里源
# 备份源配置文件(CentOS 7)
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 下载ailiyun的yum源配置文件到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 运行yum makecache生成缓存
yum makecache
包管理工具
终端的软件包管理工具一般用
yum
yum 是 CentOS 中的默认包管理工具,也用于 Red Hat 一族
yum update
:更新软件包(不删除旧包),生产环境最好用此命令,防止因旧软件包依赖而出现问题yum upgrade
:更新软件包(删除旧包)yum search + package
:搜索软件包yum install + package
:安装软件包yum remove + package
:删除软件包(yum remove autoremove + 软件包
)
本地的
.rpm
软件包,可以用rpm
命令来安装sudo rpm -i *.rpm
:安装sudo rpm -e + 包名
:卸载
本地的
.rpm
软件包,可以用yum
命令来安装sudo yum localinstall *.rpm
:安装sudo yum remove + 包名
:卸载
最小化安装
yum install -y net-tools.x86_64
yum install -y wget
yum install -y vim-commom
yum install -y vim-enhanced
# 下载 MySQL
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# 准备安装源
yum localinstall -y mysql80-commumity-release-e17-3.noarch.rpm
#
yum search mysql-comm
#
yum install -y mysql-community-server
# 启动 MySQL
systemctl start mysqld
# 查看 MySQL 默认密码
vi /var/log/mysqld.log
# 进入 MySQL 命令行
mysql -u root -p
# 修改密码
alter user 'root'@'localhost' identified with mysql_native_password by ‘qwQW88173081!’
# 修改访问
use mysql;
select host,user form user;
update user set host='%' where user='root'
# java环境安装
yum search jdk
yum install -y java-1.8.0-openjdk
java -version
# 安装 Tomcat
阅读手册(RTFM)
man
:是 manual 的缩写,是英语 “使用手册” 的意思- 若不加数字,
man
默认从数字最小的手册中寻找相关命令和函数
- 若不加数字,
- 手册包含
- 可执行程序或 Shell 命令
- 系统调用(Linux 内核提供的函数)
- 库调用(程序库中的函数)
- 文件(例如:
/etc/passwd
) - 特殊文件(通常在
/dev
下) - 游戏
- 杂项(例如:man(7)、groff(7))
- 系统管理命令(通常只能被 root 用户使用)
- 安装手册:
sudo yum install -y man-pages
(CentOS 中默认安装了) - 补全/更新 手册:
sudo mandb
main + 数字编号 + 命令/函数等
可以查找到相关的命令和函数apropos
:查找命令(根据手册的关键字找到命令)-h
:帮助,可查看相关命令的文档- 大多数命令都接受这个参数,有时
--help
也可以
- 大多数命令都接受这个参数,有时
whatis
:列出man
命令显示的手册的开头部分,也就是概述命令
手册显示后快捷键
上键
:向上移动一行下键
:向下移动一行PgUp
:上一页PgDn
:下一页Home
:跳转到开头End
:跳转到结尾/
:搜索,和less
命令中功能类似- 在斜杠后输入要搜索的文字按下回车键,就回把所有符合的结果都表示出来
- 要在搜索的结果中跳转
- 按
n
键(跳到下一个符合项目) - 按
N
键(shift + n
跳到上一个符合项目)
- 按
- 正则表达式也可以用在搜索内容中
q
:退出手册
手册解析
NAME
:手册对应命令或函数的名字,后接简单描述SYNOPSIS
:使用此命令的所有方法(参数组合)- 粗体的文字标识要原封不断的输入
- 下划线的文字标识要用实际的内容替换(固定参数除外)
[OPTION]
:选项(命令参数),表示可选的参数,可组合多个... ...
:省略号表示可以有多个此类内容[-hvc]
:-h
、-v
、-c
选项是可选的,非强制性的a|b
:可以输入a
或 输入b
,但不能同时输入a
和b
DESCRIPTION
:命令更深入的描述,包括所有参数及其用法AUTHOR
:作者COPYRIGHT
:版权SEE ALSO
:与此命令有关的命令,扩展阅读