Linux背景介绍

linux有两种含义:

  • 一种是linus编写的开源操作系统的内核
  • 另一种是广义的操作系统

执行环境:

  • 云主机
  • 无数据的pc(不推荐多系统混跑)
  • 虚拟机(推荐方式)

linux版本(分别与两种含义相对应):

  • 内核版本
    • https://www.kernel.org/
    • 内核版本分为三个部分
    • 版本号、次版本号、末版本号
    • 次版本号是奇数为开发版,偶数为稳定版(stable
  • 发型版本
    • 比如:Red Hat
    • 比如:Ubantu(图形化操作界面)

系统操作

推荐使用虚拟机virtualBox进行安装

终端:

  • 图形终端
  • 命令行终端
  • 远程终端(SSHVNC

常见目录结构:

  • / 根目录
  • /root root用户的根目录
  • /etc 配置文件目录
  • /bin 命令目录
  • /sbin 管理命令目录
  • /usr/bin /usr/sbin 系统预装的其他命令

ls 命令

作用:查看指定目录下的所有文件

语法:ls [具体的目录]

终端切换及关机

  • init 3 : 切换为命令行终端
  • init 0 : 关机命令

万能的帮助命令:

  • 为什么要学习帮助命令
  • man 帮助
    • manmanual 的缩写
    • man 帮助用法演示
      • man ls
    • man 也是一条命令,分为9章,可以使用man命令获取man的帮助
      • man 7 man
      • Commands 用户可从shell运行的命令
      • System calls 必须由内核完成的功能
      • library calls 大多数libc函数,例如qsort(3)
      • Special files /dev 目录中的文件
      • File formats and conventions /etc/passwd 等人类可读的文件的格式说明
      • Games
      • Macro packages and conventions 文件系统标准描述,网络协议,ASCII和其他字符集,还有你眼前这份文档以及其他东西
  • help 帮助
    • shell(命令解释器)自带的命令称为内部命令,其他的是外部命令
    • 内部命令使用help帮助
      • help cd
    • 外部命令使用help帮助
      • ls --help
  • info 帮助
    • info 帮助比help更详细,作为help的补充
      • info ls
  • 使用网络资源(搜索引擎和官方文档)
man ls # 列出目录内容
q # 按 q 键退出命令行终端
man man # 格式化并显示在线帮助手册页(General Commands Manual)
# 如果想查看passwd命令的帮助,就查看章节1
man passwd
# 如果想查看passwd配置文件的帮助,就查看章节5
man 5 passwd

# 如果只是想查看‘passwd’关键字,但是不知道是命令还是配置文件的帮助时
man -a passwd
# 使用type命令可以查看指定的命令是属于什么类型的命令
type cd
-> cd 是 shell 内嵌

# 获取命令的帮助信息(想要查看shell内置命令时用help)
help [命令]

一切皆文件

  • 文件查看
    • pwd: 显示当前的目录名称
    • cd: 更改当前的操作目录(相对或解决路径)
    • ls: 查看当前目录下的文件
      • -l 长格式显示文件(更详细的文件内容)
      • -a 显示隐藏文件
      • -r 以文件名逆序显示
      • -t 按照时间顺序显示
      • -R 递归显示
      • -h 以人类能看懂的单位进行显示
  • 目录文件的创建与删除
    • mkdir: 建立一个空的目录
      • 将多个目录用空格隔开:一次性创建多个文件夹
      • -p: 创建多级目录(如果目标目录下已经有同样名字的文件夹,会直接忽略)
        • mkdir -p /a/b/c/d
    • rmdir: 删除目录(只能删除空白目录)
    • rm: 删除文件
      • -r: 删除多个目录(即使目录是非空的)
      • -f: 删除目录但是不进行提示
  • 文件的创建、复制
    • cp: cp [要复制的文件] [目标地址]
      • -r: 如果要复制文件夹则要加此参数
      • -v: 显示复制的过程,因为在linux中复制是没有进度条的
      • -p: 保留文件的修改时间
      • -a: 既想保留文件的权限,又想保留文件的属主,还想保留文件的修改时间
    • touch: 创建文件
    • mv(移动或重命名文件):
      • 格式:mv (参数) [原文件] [目标文件]
  • 通配符
  • 文件操作
  • 文本内容查看
    • cat: 文本内容显示到终端
      • cat命令是将所有信息都一次性显示出来,如果文件内容过长的话,查看的体验就会很不好
    • head: 查看文件开头
      • head [文件] : 查看文件开头的10行(默认10行)
      • head -5 [文件] : 查看文件开头的5行
    • tail: 查看文件结尾
      • tail [文件] : 查看文件结尾的10行(默认10行)
      • tail -3 [文件] : 查看文件结尾的3行
      • 常用参数 : -f 文件内容更新后,显示信息同步更新
    • wc: 统计文件内容信息
    • less
    • more

文件打包与解压缩

  • tar: tar [参数] [目标文件] [要打包的目录或文件]
    • c: 打包
    • f: 产出是文件
    • z: 通过gzip指令处理备份文件
    • j: 通过bzip2指令处理备份文件
    • x: 解包
    • -C: 目标目录
  • gzip
    • 速度更快
  • bzip2
    • 压缩率更高
  • 提示:tar命令已经将gzipbzip2集成,可以直接使用tar命令进行压缩与解压缩

linux的备份压缩:

  • 最早的linux备份介质是磁带,使用的命令是tar
  • 可以打包后的磁带文件进行压缩存储,压缩的命令是gzipbzip2
  • 经常使用的扩展名是.tar.gz, .tar.bz2, .tgz

文本操作

多模式文本操作

  • 多模式产生的原因
  • 四种模式
    • 正常模式(Normal-mode
    • 插入模式(Insert-mode
    • 命令模式(Command-mode
    • 可视模式(Visual-mode

正常模式与插入模式

  • x 删除当前字符
  • r 字符替换。先按r键,然后再敲想要替换后的字符
  • i 当前位置进入编辑模式
  • I 当前位置所在行的开头进入编辑模式
  • a 当前位置的下一个字符的位置进入编辑模式
  • A 当前位置所在行的结尾进入编辑模式
  • o 当前位置所在行与下一行中间插入一行,并在插入行进入编辑模式
  • O 当前位置所在行与上一行中间插入一行,并在插入行进入编辑模式
  • esc 退出编辑模式,返回到命令模式
  • h 向左移动
  • j
  • k
  • l 向右移动
  • yy 复制文本
    • 只输入yy,复制当前整行,没有任何提示
    • [数字] yy,从当前行开始计算,复制[数字]行。左下角会有提示
  • y$ 从当前位置开始复制到当前行的结尾
  • dd 剪切命令,命令格式与yy一样
  • p 粘贴文本
  • u 撤销
  • ctrl + r 恢复一次撤销的指令
  • :set nu 显示文本行标
  • 移动至指定行: 先敲行数,然后按G
  • 移动至当前行开头: shift + 6
  • 移动至当前行结尾: shift + 4

命令模式

  • :w [文件] ->保存至指定的文件
  • :q -> 退出当前正在操作的文件
  • 以上两个命令可以联合一起使用
  • :! -> 在操作文件的同时,可以执行其他命令做其他操作,做完再回到文件中继续操作
  • /[关键字] -> 查找关键字(会高亮显示)
  • :s 替换单个字符(只能在光标所在行进行查找并替换)
  • %s 替换单个字符(可以在全文进行搜索查找并替换)
  • 语法 -> :%s/old/new
  • 如果想要对文件中的所有的指定字符进行统一替换,可以使用gglobal)进行全局操作
  • 语法 -> :%s/old/new/g
  • :set nohlsearch -> 取消高亮显示
  • set只能对单次生效,退出文件操作再次进入操作时就不生效了

可视模式

三种进入可视模式的方式

  • v 字符可视模式
  • V 行可视模式
  • ctrl+v 块可视模式
    • 配合dI(大写i)命令可以进行块的便利操作

用户与权限管理

用户管理常用命令

  • useradd 新建用户
  • userdel 删除用户
    • -r: 彻底删除用户
  • passwd 修改用户密码
  • usermod 修改用户属性
    • 语法: usermod -d [目标目录] [用户]
    • 参数:
      • -a: 将用户添加到附加组,只能和-G选项一起使用
      • -c: 密码文件中注释字段的新值,通常使用chfn(1)对其进行修改
      • -d: 用户的新登录目录
      • -e: 用户账户将被禁用的日期
      • -g: 将用户添加到用户组
        • usermod -g [组] [用户]
  • chage 更改用户密码过期信息

用户切换

  • su 切换用户
    • su - USERNAME 使用login shell方式切换用户
  • sudo 以其他用户身份执行命令
    • visudo 设置需要使用sudo的用户(组)
  • shutdown
    • -h [时间/m] -> 指定时间之后自动关机
    • -c -> 强制取消自动关机

重要的配置文件:

  • /etc/passwd(字段解释,对应配置文件中7个位置,每个字段以英文状态下的冒号隔开)
    • 用户昵称
    • 该用户是否需要使用密码进行验证
    • 用户的uid 用户的id信息(不能随意进行更改)
    • 用户的gid 用户是属于哪个组的
    • 注释
    • 该用户的家目录是在哪个位置
    • 用户登录的命令解释器
  • /etc/shadow 保存用户与用户密码相关信息的
    • 用户昵称
    • 用户加密过的密码
  • /etc/group 用户组相关的信息
    • 组的名称
    • 该组是否需要密码验证
    • 组的gid
    • 其他组设置

组管理命令

  • groupadd: 新建用户组
  • groupdel: 删除用户组

查看文件权限的方法

  • 查看文件权限
    • -rw------- 1 root root 1523 sep 28 12:05 test.txt
    • 类型 权限 所属用户和组 文件名
    • (权限的前三位表示文件所属用户可以操作的权限,中间三位党代表文件所属用户组,后三位表示除了当前用户和用户组之外其他人可以操作的权限)

文件类型:

  • -: 普通类型
  • d: 目录文件
  • b: 块特殊文件
  • c: 字符特殊文件
  • l: 符号文件
  • f: 命名管道
  • s: 套接字文件

文件权限的表示方法

  • 字符权限表示方法
    • r: 读
    • w: 写
    • x: 执行
  • 数字权限的表示方法
    • r = 4
    • w = 2
    • x = 1
  • -rw-==r-x==r-- 1 username groupname mtime filename
    • rw- 文件属主的权限
    • r-x 文件属组的权限
    • r-- 其他用户的权限
  • 创建新文件有默认权限,根据umask值计算,属主和属组根据当前进程的用户来设定(创建的文件默认的权限是644)

目录权限的表示方法

  • x 进入目录
  • rx 显示目录内的文件名
  • wx 修改目录内的文件名

修改权限命令

  • chmod 修改文件、目录权限
    • chmod u+x /tmp/testfile
    • chmod 755 /tmp/testfile
  • chown 更改属主、属组
  • chgrp 可以单独更改属组,不常用

特殊权限

  • SUID 用于二进制可执行文件,执行命令时取得文件属主权限
    • /usr/bin/passwd
  • SGID 用于目录,在该目录下创建新的文件和目录,权限自动更改为该目录的属组
  • SBIT 用于目录,该目录下新建的文件和目录,仅root和自己可以删除
    • /tmp

网络管理

  • 网络状态查看
  • 网络配置
  • 路由命令
  • 网络故障排除
  • 网络服务管理
  • 常用网络配置文件

网络状态查看工具

net-tools VS iproute

  1. net-tools
  • ifconfig
    • eth0第一块网卡(网络接口)
    • 你的第一个网络接口可能叫做下面的名字
      • eno1板载网卡
      • ens33 PCI-E网卡
      • enp0s3无法获取物理信息的PCI-E网卡
      • CentOS 7使用了一致性网络设备命名,以上都不匹配则使用eth0
  • route
  • netstat
  1. iproute2
  • ip
  • ss

网络接口命名修改

  • 网卡命名规则受biosdevnamenet.ifnames两个参数影响
  • 编辑/etc/default/grub文件,增加biosdevname=0 net.ifnames=0
  • 更新grub
    • # grub2-mkconfig -o /boot/grub2/grub.cfg
  • 重启
    • # reboot

查看网络情况

  • 查看网卡物理连接情况
    • mii-tool eth0

查看网关

  • 查看网关
    • route -n
    • 使用-n参数不解析主机名

网络配置命令

  • ifconfig <接口> <IP地址> [netmask 子网掩码]
  • ifup <接口>
  • ifdown <接口>
  • 添加网关
    • route add default gw <网关ip>
    • route add -host <指定ip> gw <网关ip>
    • route add -net <指定网段> netmask <子网掩码> gw <网关ip>

网关命令集合

  • ip addr ls
    • ifconfig(修改网卡的ip地址)
  • ip link set dev eth0 up
    • ifup eth0(启动网卡eth0
  • ip addr add 10.0.0.1/24 dev eth1
    • ifconfig eth1 10.0.0.1 netmask 255.255.255.0
  • ip route add 10.0.0/24 via 192.168.0.1
    • route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.0.1

网络故障排除命令

  • ping
    • ping [ip地址]: 监测与ip地址是否能够通信成功
  • traceroute
  • mtr
  • nslookup
  • telnet
  • tcpdump
  • netstat
  • ss

软件安装

  • 软件包管理器
    • 包管理器是方便软件安装、卸载,解决软件依赖关系的重要工具
      • CentOSRedHat使用yum包管理器,软件安装包格式为rpm
      • DebianUbuntu使用apt包管理器,软件安装包格式为deb
  • rpm包和rpm命令
    • rpm包格式
      • vim-common-7.4.10-5.el7.x86_64.rpm
      • 软件名称 软件版本 系统版本 平台
    • rpm命令常用参数
      • -q查询软件包
      • -i安装软件包
      • -e卸载软件包
  • yum仓库
    • rpm包的问题
      • 需要自己解决依赖关系
      • 软件包来源不可靠
    • CentOS yum源
      • http://mirror.centos.com/centos/7/
    • 国内源
      • https://opsx.alibaba.com/mirror
    • yum配置文件
      • /etc/yum.repo.d/CentOS-Base.repo
      • wget -O /etc/yum.repo.d/CentOS-Base.repo
    • yum命令常用选项
      • install安装软件包
      • remove卸载软件包
      • list | grouplist查看软件包
      • update升级软件包
  • 源代码编译安装(步骤)
    • wget https://openresty.org/download/openresty.tar.gz
    • tar -zxf openresty.tar.gz
    • cd openresty
    • ./configure --prefix=/usr/local/openresty
    • make -j2
    • make install
  • 内核升级
    • rpm格式内核
      • 查看内核版本
        • uname -r
      • 升级内核版本
        • yum install kernel-3.10.0
      • 升级已安装的其他软件和补丁
        • yum update
    • 源代码编译安装内核
      • 安装依赖包
      • 下载并解压缩内核
      • 配置内核编译参数
      • 使用当前系统内核配置
      • 查看CPU
      • 编译
      • 安装内核
  • grub安装
  • 二进制安装

进程管理

  • 进程的概念与进程查看
    • 进程——运行中的程序,从程序开始运行到终止的整个生命周期是可管理的
      • C程序的启动时从main函数开始的
        • 终止的方式并不唯一,分为正常终止和异常终止
    • 查看命令
      • ps -> ps -ef | more
      • pstree
      • top
    • 结论
      • 进程也是树形结构
      • 进程和权限有着密不可分的关系
  • 进程的控制命令
    • 进程的优先级调整
      • 调整优先级
        • nice 范围从-20到19,值越小优先级越高,抢占资源就越多
        • renice重新设置优先级
      • 进行的作业控制
        • jobs
        • &符号
  • 进程的通信方式——信号
    • 信号是进程间通信方式之一,典型用法是:终端用户输入中断命令,通过信号机制停止一个程序的运行
    • 使用信号的常用快捷键和命令
      • kill -l
        • SIGNT通知前台进程组终止进程ctrl+c
        • SIGKILL立即结束程序,不能被阻塞和处理kill -9 pid
  • 守护进程和系统日志
    • 使用nohup&符号配合运行一个命令
      • nohup命令使进程忽略hangup(挂起)信号
    • 守护进程(daemon)和一般进程有什么区别
    • 使用screen命令
      • screen进入screen环境
      • ctrl+a d退出(detachedscreen环境
      • screen -ls查看screen的会话
      • screen -r sessionid恢复会话
  • 服务管理工具systemctl
    • 服务(提供常见功能的守护进程)集中管理工具
      • service
      • systemctl
    • 常见操作
      • systemctl start | stop | restart | reload | enable | disable 服务名称
      • 软件包安装的服务单元/usr/lib/systemd/system/
  • SELinux简介
    • MAC(强制访问控制)与DAC(自主访问控制)
    • 查看SELinux命令
      • getenforce
      • /usr/sbin/sestatus
      • ps -Z and ls -Z and id -Z
    • 关闭SELinux
      • setenforce 0
      • /etc/selinux/sysconfig

内存与磁盘管理

  • 内存和磁盘使用率查看
  • ext4文件系统
  • 磁盘配额的使用
  • 磁盘的分区与挂载
  • 交换分区(虚拟内存)的查看与创建
  • 软件RAID的使用
  • 逻辑卷管理
  • 系统综合状态查看
下一篇