Linux基础
文章目录
关于Linux系统
什么是操作系统
-
操作系统是应用程序运行的基础支撑环境
-
操作系统作用是管理和控制计算机系统的硬件与软件资源
-
Intel x86架构上常见的操作系统:Windows、Linux、Unix…
ps:有种特殊的Linux支持ARM架构,称为ARM Linux,与标准Linux并不兼容,课程讲解为基于Intel x86的标准Linux
Linux操作系统
- Linux是开源的基于Intel x86架构的类Unix多用户操作系统
- Linux是目前最主要的服务器端操作系统
- 互联网大厂都在使用Linux作为服务器主要操作系统
Linux特点
- 免费使用,自由传播
- 支持多任务、多用户、多CPU
- 高效而灵活
- 兼容任意x86架构计算机
- 强大易用的系统命令
- 完整的应用软件生态
Linux发行版本
- Linux系统内核(Kernel)提供了Linux操作系统的核心功能
- 不同开发商在内核基础上扩展封装,形成了不同发行版本
- 常见发行版:Red Hat Linux、CentOS、Ubuntu、SUSE…
Linux发行版选择建议
- 桌面系统:Ubuntu
- 服务器操作系统:CentOS(免费)、Red Hat Linux(收费)
- 特定需求:Debian(稳定性)、Fedora(新特性)、麒麟Linux(国产)
CentOS - 社区企业操作系统
- 基于Red Hat Enterprice Linux的开源企业级Linux发行版本
- 各版本Centos都会获得十年的支持,与RHEL保持同步更新
- Centos采用社区支持,同时修正了RHEL许多BUG
CentOS版本选择
- Centos 5/6:历史版本,已被淘汰
- Cent0S 7:主流版本,稳定成熟,大多数服务器的首选版本
- CentOS 8:全新版本,基于最新内核,不排除存在漏洞隐患
Linux系统目录
Linux倒挂树形目录结构
- ‘/’是所有目录的顶点,称为“根目录”
- 不同目录下的数据可分布在不同磁盘,所有目录按规则组织与命名
- Linux也区分绝对路径与相对路径
绝对路径 | 用途 |
---|---|
/ | 根目录 |
/bin * | 常见的二进制命令所在目录,例如ls、cp、mkdir… |
/boot | Linux内核与系统引导程序目录 |
/dev | 设备文件的目录,比如声卡、磁盘、光驱… |
/etc * | yum、rpm方式安装应用程序的默认配置文件路径 |
/home | 用于存放用户的数据,用户的“家目录” |
/var | 系统与软件服务运行日志目录 |
/lib | 启动系统与运行命令所需的共享库文件与内核模块目录 |
/proc | 系统运行时,进程信息与内核信息存放在此目录 |
/root | Linux超级用户目录,类似于windows的administrator |
/sbin | 系统管理命令存放目录,包含两个重要子目录 |
/usr * | 存放用户应用程序的目录,包含俩个重要子目录 |
/usr/local * | 编码方式安装程序的默认目录 |
/usr/src * | 程序源码目录 |
服务器远程管理
SSH客户端
- SSH是专为远程登录和其他网络服务提供的安全性协议
- SSH分为两个不兼容版本1.x与2.x, 默认通过SSH2.x连接
- 基于SSH远程连接工具有很多,最常见的是Xshell与SecureCRT
Xshell与Xftp
- Xshell是著名的Linux客户端,常用于在Windows下远程访问
- Xshell同时还支持Telent、RLogin、Serial等其他连接方式
- Xftp是Xshell配套组件,用于向服务器上传/下载文件
Linux文件操作指令
Linux命令格式:
命令【参数选项】【文件或者路径】
命令 | 用途 |
---|---|
cd | 切换目录 |
pwd | 查看当前目录 |
ls、ll | 显示目录内容 |
mkdir | 创建目录 |
cp | 复制文件与目录 |
mv | 移动或重命名文件 |
rm | 删除文件或目录 |
find | 查找目录或文件 |
vim文本编辑器
关于Vim文本编辑器
- vi是Linux重要的文本编辑工具,vim是它的增强版
- vim用于在远程环境下用命令形式对文本进行在线编辑
- 用法格式:vim【选项】【文件】
vim三种模式
- 普通模式:默认模式,文本只读,不可编辑
- 编辑模式:编辑文本模式,普通模式按i键进入,Esc键退出
- 命令模式:执行保存、搜索、退出等操作
Vim重要快捷键
命令 | 用途 |
---|---|
delete或x | 删除单个字符 |
dd | 删除整行 |
/str | 全文查找str字符串,n下一个,N前一个 |
:% s/old/new/g | 替换文件内所有old字符串为new |
u | 撤销最近一次操作 |
:wq或者wq! | 退出并保存,只读文件要额外加! |
:q! | 强制退出放弃保存 |
常用文本工具
命令 | 用途 |
---|---|
echo | 屏幕打印与文本输出 |
cat | 合并文件或查看文件内容 |
tail | 显示文件内容尾部 |
grep | 文本过滤工具 |
打包与压缩
Linux压缩程序-gzip
- gzip是Linux系统的文件压缩程序
- gzip压缩包文件扩展名.gz
- 大流量的网站默认都在使用gzip进行数据压缩传输
tar打包与压缩
- tar是Linux系统将多个文件打包和压缩的工具
- tar本质是打包软件,扩展名.tar
- tar可结合gzip或其他压缩文件实现打包压缩扩展名.tar.gz
- 压缩命令:tar zcvf tomcat.tar.gz /usr/local/tomcat
- 解压缩命令:tar zxvf tomcat.tar.gz -C /usr/local/tomcat
tar常用可选项
选项 | 用途 |
---|---|
z | 通过gzip压缩或解压 |
c | 创建新的tar.gz文件 |
v | 显示执行过程 |
f | 指定压缩文件名称 |
x | 解压缩tar.gz文件 |
-C | 指定解压缩目录 |
安装应用程序:
为CentOS安装应用程序
- 在CentOS中安装第三方应用程序包含两种方式:
- rpm:Red Hat软件包管理器,相当于应用程序安装文件的执行者
- 编译安装:用户自己从网站下载程序源码进行编译安装
yum与rpm的关系
- rpm安装过程中,需要用户自己解决依赖问题
- yum通过引入软件仓库,联网下载rpm包及依赖,并依次自动安装
- yum是rpm的前端程序,其目的就是简化rpm的安装过程
yum常用命令
- yum search 应用名 #在仓库中查询是否存在指定应用
- yum install -y 应用名 #全自动下载安装应用及其依赖
- yum info 应用名 #查看应用详细信息
- yum list installed 应用名 #查看已安装的应用程序
- rpm -ql 应用名 #查看安装后输出的文件清单
- yum remove -y 应用名 #全自动卸载指定应用
编译方式安装应用程序
- 如yum仓库未提供rpm,往往需要采用编译安装方式
- 编译安装是指应用官网下载源码后,对源码进行编译后使用
- 编译命令:make #使用对应编译器对源码编译生成可执行文件
yum与编译安装比较
yum安装 | 编译安装 | |
---|---|---|
兼容性 | 差,每种发行版都要准备 | 好,全平台适用 |
复杂度 | 简单 | 复杂 |
安装速度 | 快 | 慢 |
来源 | 应用仓库 | 官网下载 |
应用场景 | 日常系统软件 | 开源软件,最新版本 |
Linux系统管理命令
使用ifconfig查看网卡ip
netstat 查看网络端口号
netstat -tulpn 或者 netstat -ano
netstat常用选项
选项 | 用途 |
---|---|
t | 显示tcp传输协议的连接状况 |
u | 显示udp传输协议的连接状况 |
l | 显示出于监听状态的网络连接 |
p | 显示PID和程序名称 |
n | 显示ip地址 |
a | 显示所有连接 |
o | 显示计时器 |
查看进程&杀掉进程
- ps-ef
- kill -9 PID
应用服务化
应用服务化说明
- 应用服务化是指让应用程序在系统后台运行
- Linux系统对服务化应用进行统一管理
- 服务管理命令:systemctl
systemctl
指令 | 用途 |
---|---|
start | 启动服务 |
stop | 停止服务 |
restart | 重启服务 |
enable | 设置开机启动 |
disable | 禁止开机启动 |
status | 查看服务状态 |
daemon-reload | 重载服务配置文件 |
list-unit-files | 列出所有服务 |
Linux用户与权限
用户
- Linux是多用户多任务系统,包含俩个概念:用户与用户组
- 用户与账号是同一个概念,用于登录系统与区分资源权限
- 用户让系统变的更安全,同时也保护了用户的个人数字资产
用户组
- 用户组就是将用户分组,隶属用户自动拥有权限
- 一个用户可隶属于多个组,用户可任意切换当前组
- 用户组的出现让用户权限管理变更轻松
用户与用户组常用命令
命令 | 用途 |
---|---|
useradd | 创建新用户 |
passwd | 修改密码 |
usermod | 修改用户信息/分配组(覆盖原组) |
groupadd | 创建新的用户组 |
chown | 更改文件的属主或属组 |
chomod | 更改文件的访问权限 |
newgrp | 切换用户当前组 |
文件权限代码表
d | r | w | x | r | w | x | r | w | x |
---|---|---|---|---|---|---|---|---|---|
4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 | |
目录 | 属主读取 | 属主写入 | 属主执行 | 组读取 | 组写入 | 组执行 | 其他读取 | 其他写入 | 其他执行 |
chmod命令
- chmod 750:组用户可读写,其他用户不允许访问
- chmod 777:所有用户拥有完整权限
- chmod 700:只有属主拥有完整权限
sudo超级管理员命令
sudo
- sudo可以让普通用户拥有超级管理员执行权限
- 普通用户要进行经过超级管理员授权才能使用
- 授权命令:visudo
CentOS7防火墙firewall
什么是防火墙
- 防火墙是借助硬件和软件对内外部网络环境的保护措施
- CentOS 7基于firewall实现应用层防火墙,CentOS6基于iptables
- firewall-cmd是firewall的核心命令
firewall-cmd
- systemctl start|restart firewalld #启动防火墙
- firewall-cmd --state|reload #查看状态,重载防火墙
- firewall-cmd --zone=public -permanent --add-prot=8502/tcp
Bash Shell
什么是Bash Shell
- Shell是一个用c语言编写的脚本解释器,是用户通过代码操作Linux的桥梁
- Shell脚本描述要执行的任务,完成系列复杂操作,文件通常以.sh后缀
- Shell脚本通过Shell解释器执行,按解释器分类分为多种类型
Linux Shell 分类
shell种类 | Shell解释器 |
---|---|
Bourne Shell | /usr/bin/sh或/bin/sh |
Bourne Again Shell | /bin/bash(默认) |
C Shell | /usr/bin/csh |
K Shell | /usr/bin/ksh |
Shell for Root | /sbin/sh |