Linux 教程
Linux 源码下载地址:www.kernel.org/
CentOS下载地址:mirrors.163.com/centos/ mirrors.aliyun.com/centos/7/is…
1. Linux 安装
- 磁盘分区
- /boot: 1G 文件系统:ext4
- /swap: 2G 文件系统:swap
- /:剩余的大小 文件系统:ext4
- 网络连接的三种方式
- 桥接模式: 虚拟系统可以直接和外部网络通讯,但容易造成IP冲突
- NAT模式: 网络地址转换模式,虚拟机系统可以和外部系统通讯,不会造成IP冲突,但是外部不能和虚拟系统通信
- 主机模式: 独立的系统
- 网络链接模式选择桥接模式,IP地址参考虚拟机
编辑/虚拟网络编辑器
- Linux网卡配置
-
修改配置文件,指定IP地址: /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static" IPADDR=10.0.28.128 NETMASK=255.255.255.0 GATEWAY=10.0.28.2 DNS1=10.0.28.2 -
查看IP地址: ip addr
-
重启网络服务: systemctl restart network
-
- 安装vim: yum -y install vim
- centos7已经停止维护,yum没有可用的镜像源,可以配置国内镜像源
1. 备份原有的repo文件:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2. 下载阿里云的CentOS7的repo文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
或者
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3. 清理yum缓存并重新生成缓存
yum clean all
yum makecache
2. Linux 目录结构
- /bin => 用于存放最常用的指令
- /sbin => 用于存放系统管理员常用的系统管理程序
- /home => 存放普通用户的主目录,每个用户都有一个自己的目录
- /root => 系统管理员的主目录
- /lib => 系统开机所需要最基本的动态连接共享库
- /lost+found => 这个目录一般情况下是空的,当系统非法关机后会存放一些文件
- /etc => 所有系统所需要的配置文件和子目录
- /usr => 用户很多应用程序和文件放在这个目录下
- /boot => 存放启动Linux时使用的核心文件,包括一些连接文件及镜像文件
- /proc => 这个目录是一个虚拟的目录,他是系统内存的映射,访问这个目录来获取系统信息
- /srv => 该目录存放一些服务启动之后需要提取的数据
- /sys => 这是linux2.6内核中的一个很大的变化,该目录下安装了2.6内核中出现的一个新的文件系统sysfs
- /tmp => 存放一些临时文件
- /dev => 类似于windows中的设备管理器,所有的硬件用文件的形式存储
- /media => linux系统自动设别的一些设备,如U盘,光驱等挂载在该目录下
- /mnt => 可以让用户临时挂在别的文件系统
- /opt => 给主机额外安装软件的目录
- /usr/local => 软件所安装的位置,一般是通过源码编译方式安装的软件
- /var => 存放不断扩展的文件,经常被修改的目录,各种日志文件等
- /selinux => SELinux是一种安全子系统,它能控制程序只能访问特定文件,有三种工作模式
3. Linux 实操篇
1 防火墙
// 查看防火墙状态
firewall-cmd --state
// 停止防火墙
systemctl stop firewalld
// 禁止开机启动
systemctl disable firewall.service
// 查看防火墙开放的端口
firewall-cmd --zone=public --list-ports
// 添加防火墙开放端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
// 重置
firewall-cmd --reload
2. 远程登陆
- XShell下载:www.xshell.com/zh/free-for…
- Linux查看IP地址:ifconfig
3. 文本编辑器
1. vi/vim
Linux会内置vi文本编辑器,vim具有程序编辑能力,相当于vi的增强版
vi/vim 安装命令 => yum install -y vim tree lrzsz wget curl unzip
-
编辑模式: 可进行编辑,按esc可进入一般模式
-
一般模式: 按 :或者/ 进入命令模式,按 i/I/a/A 进入编辑模式
-
命令模式: 按esc可进入一般模式
-
命令模式下 wq(保存并退出);q(退出,不保存);q!(强制退出,不保存)
2. 快捷键
- 拷贝当前行:一般模式中 yyp;拷贝多行:yy 行数 p
- 删除当前行:一般模式中 dd;删除多行:行数 dd
- 在文件中查找: 输入 /关键字,回车查找,输入 n 查找下一个
- 设置[取消]文件行号:输入 :set nu[:set nonu]
- 快速定位文件首行[尾行]:一般模式中 gg => 到达文件首航;G => 到达文件尾行
- 撤销操作:一般模式中 u
- 快速定位到某一行:一般模式中 输入行号 + shift + g
4. 关机,重启,用户管理
1. Linux 关机,重启,用户的登录注销
-
shutdown -h now => 立即关机
-
shutdown -h 1 => 1分钟后关机
-
shutdown -r now => 立即重启
-
halt => 关机
-
reboot => 重启
-
sync => 把内存中的数据同步到磁盘
注意:在执行关机,重启的命令前最好先执行 sync
-
su - [用户名] => 切换用户
-
logout => 退出当前用户
2. 用户管理
-
useradd 用户名 => 添加用户
如果添加用户时,没有指定用户目录,则默认用户目录在 /home/用户名 下
-
useradd -d 目录名称 用户名称 => 添加用户并指定用户目录
-
useradd -g 组名 用户名 => 添加用户并放入指定组
-
passwd 用户名 => 给指定用户设置密码
-
pwd => 显示当前用户所在目录
-
userdel 用户名 => 删除用户,保留用户目录
-
userdel -r 用户名 => 删除用户及其用户目录
-
id 用户名 => 查询用户信息
-
who am i => 查询第一次登录的用户
3. 用户组管理
介绍:类似于角色,系统可以对有共性的多个用户进行统一管理
- groupadd 组名 => 新增组
- groupdel 组名 => 删除组
- usermod -g 组名 用户名 => 切换用户组
- usermod -d 目录名 用户名 => 切换用户所在目录
用户,用户组相关文件
-
/etc/passwd => 用户配置文件,记录用户的各种信息
-
/etc/shadow => 口令的配置文件
-
/etc/group => 组的配置文件,记录用户组的信息
5. 实用指令
1. 指定运行级别
-
基本介绍
0:关机
1:单用户 => 可找回丢失的密码
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用,保留给用户
5:图形界面
6:系统重启
常用运行级别是3和5,也可以指定默认运行级别
通过 init命令切换不同的运行级别
-
systemctl get-default => 查看当前默认运行级别
-
systemctl set-default multi-user.target => 设置默认运行级别为3
2. 找回root密码
3. 常用指令
linux 中隐藏文件以 .开头
1. 帮助指令
- man 命令
- help 命令
2. 文件目录指令
- pwd => 显示当前工作目录的绝对路径
- ls [选项] [目录或文件夹] => 查看目录中的文件信息
- -a 显示当前目录所有目录和文件,包括隐藏是
- -l 以列表的方式显示信息
- -lh 格式化文件大小
- cd [目录] => 切换目录
- cd ~ / cd : 回到自己的家目录
- cd .. 回到上一级目录
- mkdir [选项]
- -p 创建多级目录
- rmdir [目录] 删除空目录
- rm -rf [目录] 删除目录及其文件
- touch 创建空文件
- cp 复制文件到指定目录
- -r 递归复制整个文件夹
- \cp 强制覆盖,不提示
- rm 移除文件或目录
- -r 递归删除整个目录
- -f 强制删除不提示
- mv 移动文件目录或重命名
- mv [oldFileName] [newFileName] 重命名
- mv [原路径] [新路径] 移动文件
- cat 查看指定文件
- -n 显示行号
- | more 以more的方式查看文件
- more 以全屏的方式按页显示文本文件内容
- space键 下一页
- enter键 下一行
- q 退出more
- ctrl + f 向下滚动一屏
- ctrl + b 返回上一屏
- = 输出当前行的行号
- :f 输出文件名和当前行的行号
- less 分屏查看文件,与more类似,在前世内容时使用懒加载,对于显示大文件有更高的效率
- 空格键 向下翻页
- page down 向下翻页
- page up 向上翻页
- /字符串 向下查找字符串,n:下一个;N:上一个
- ?字符串 向上查找字符串,n:下一个;N:上一个
- q 退出less
- echo 输出内容到控制台
- echo $PATH 输出环境变量
- echo $HOSTNAME 输出环境变量
- head 用于显示文件的开头部分,默认情况下显示前10行
- -n 行数 显示前几行
- tail 默认情况下显示文件前10行
- tail -n 行数 显示文件前几行
- tail -f 实时显示文件的更新
- > >>
- > 输出重定向(相当于覆盖)
- >> 追加
- cal 显示日历
- ln 软连接,也叫做符号链接,类似于windows的快捷方式
- ln [原文件或目录] [软连接名]
- history 查看或执行最近执行的命令
- history 10 查看最近10个命令
- ! 编号 执行对应编号的命令
3. 时间日期类指令
- date 显示当前时间
- date +%Y 显示当前年份
- date +%m 显示当前月份d
- date +%d 显示当前天
- date +%H 显示当前时
- date +%M 显示当前分
- date +%S 显示当前秒
- date -s 时间字符串 设置系统当前时间
- cal 查看本月日历
4. 查找类指令
-
find [搜索范围] [选项]
选项:
- -name 按照指定文件名查找文件
- -size 按照指定文件大小查找文件
- -size +10M 大于10M
- -size -10M 小于10M
- -size 10M 等于10M
- -user 查找属于指定用户名所有文件
-
locate 快速查找文件,第一次使用前必须先执行updatedb 指令创建 locate 数据库
-
which 指令 查看对应指令所在目录
-
grep grep指令和管道符 | 搭配使用
grep [选项] 查找内容 源文件
- -n 显示匹配行及行号
- -i 忽略字母大小写
5. 压缩与解压缩
-
gzip/gunzip
-
zip/unzip
- zip -r 递归压缩,及压缩文件夹
- unzip -d 目录 指定解压后文件的存放目录
-
tar
tar [选项] 文件名 打包的内容
- -c 产生.tar打包文件
- -v 显示详细信息
- -f 指定压缩后的文件名
- -z 打包同时压缩
- -x 解包.tar文件
4. 组管理和权限管理
1. Linux组基本介绍
在Linux中每个用户必须属于一个组,每个文件有所有者,所在组,其他组的概念
-
所有者: 一般为文件的创建者
- ls -ahl 查看文件的所有者
- chown 用户名 文件名 修改文件的所有者
-
所在组: 当一个用户创建一个文件之后,该文件所在组就是该用户所在组
-
修改文件所在组: chgrp 组名 文件名
-
其他组: 除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
2. 权限基本介绍
-
0-9 为说明
- 第0为确定文件类型,
- -:表示普通文件
- d:表示文件夹
- l:表示链接
- c:表示字符设备,如键盘,鼠标等
- b:表示块设备,如硬盘
- 第1-3位确定文件所有者拥有的权限
- 第4-6位确定文件所属组拥有的权限
- 第7-9位确定文件其他组拥有的权限
- 第0为确定文件类型,
-
rwx权限详解
- r:代表可读取 => 可以读取查看文件内容/可以读取查看目录内容
- w:代表可写 => 可以修改,但不代表可以删除。删除文件的前提是对该文件所在目录拥有w的权限/可以对目录内创建,删除,重命名目录
- x:代表可执行 => 可以执行文件/cd 进入目录
-
文件权限用数字表示: r => 4, w => 2, x => 1
-
其他说明:
- 1:文件 => 硬连接数/ 目录 => 子目录数量
- root: 文件所有者
- root: 文件所在组
- 0:文件大小(单位kb), 如果是目录显示4096
- 11月 21 21:52 :最后修改日期
- demo.txt: 文件名称
-
修改文件权限
// 通过chmod指令,可修改文件权限 // 1. 第一种方式:+, -, = 变更权限 // u: 用户, g: 组, o: 其他用户, a: 所有人 1. chmod u=rwx,g=rw,o=r 文件/目录 2. o+w 文件/目录 3. a-x 文件/目录 // 2. 使用数字变更权限 // 第一个数字表示用户权限 // 第二个数字表示组权限 // 第三个数字表示其他用户权限 chmod 777 文件/目录 // chown 修改文件所有者/所在组 chown 新用户名 文件/目录名 chown 新用户名:新组名 文件/目录名 // 递归修改 chown -R 新用户名:新组名 目录名 // chgrp 指令修改文件/目录所在组 chgrp 新组名 文件/目录名 // 递归操作 chgrp -R 新组名 文件/目录名
6. 定时任务调度
1. crond 任务调度简介
- 概述:任务调度是指在某个时间执行特定的命令或程序
- 基本语法:
crontab [选项] // 常用选项: 1. -e 编辑crontab定时任务 2. -l 查询crontab定时任务 3. -r 删除当前用户所有的crontab定时任务 - 案例:
/* 第一个*:一小时中的第几分钟 0-59 第二个*:一天中的第几个小时 0-23 第三个*:一个月中的第几天 1-31 第四个*:一年中的第几个月 1-12 第五个*:一周中的星期几 0-7 (0和7都表示星期天) */ // 每分钟执行:查询/etc/中的所有内容,重定向到/tmp/to.txt文件中 crontab -e 回车 */1 * * * * ls -l /etc/ > /tmp/to.txt /* 定时任务重表示时间的特殊符号说明 * 表示任何时间 , 表示不连续的时间:0 4, 8, 16 * * * => 表示每天4点,8点,16点执行 - 表示连续的时间段:0 5 * * 1-6 => 表示没周一到周六5点之执行 */n 表示每个多久执行: */10 * * * * => 表示每隔10分钟执行 */
2. at 定时任务
- 概述:at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行。默认情况下,atd守护进程每60秒检查作业队列。at是一次性定时任务,执行完一个任务后就不再执行此任务。在使用at命令时,必须保证atd进程的启动,可以使用 ps -ef | grep atd 命令查看
- 基本语法
// at安装 yum install at -y // 设置atd自动启动 systemctl enable --now atd // 查看atd进程是否启动 ps -ef | grep atd at [选项] [时间] Ctrl + D 结束at命令 // 编写at任务时,需要按两次 Ctrl + D - 案例
// 1. 查看系统中没有执行的工作任务 atq // 2. 删除已经设置的工作任务 atrm 编号
7. Linux分区
1. 原理介绍
- 对于Linux来说无论有几个分区,分给哪一个目录使用,它归根绝地只有一个根目录,一个独立且唯一的文件系统,Linux中每一个分区都是用来组成整个文件系统的一部分
- Linux采用一种叫 “挂载” 的处理方法。它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来,这是的一个分区将使它的存储空间在一个目录下获得
- 示意图
2. 硬盘说明
- Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上都是SCSI硬盘
- 对于IDE硬盘,驱动器标识符为:“hdx~”,其中 “hd”表明分区所在设备的类型,“x” 为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”表示分区,前四个分区用数字1-4表示,他们是主分区或扩展分区,从5开始就是逻辑分区
- 对于SCSI硬盘,则标识符为:“sdx~”
ps: 1. hda3: 表示第一个IDE硬盘上的第三个主分区或扩展分区 2. hdb2:表示第二个IDE硬盘上的第二个主分区或扩展分区 - 查看所有设备挂载情况:lsblk / lsblk -f