基础篇

Linux入门

应用领域

使用场景

  • Linux运维工程师

    • 服务器规划
    • 调试优化
    • 日常监控
    • 故障处理
    • ......
  • Linux嵌入式工程师

    • 驱动开发
    • 程序开发
    • ......
  • 开发项目

    • JavaEE
    • 大数据
    • Python
    • C++

应用领域

  • 个人桌面领域的应用(较薄弱)

    • ubuntu
  • 服务器领域(最强)

    • 免费、稳定、高效
  • 嵌入式领域

    • 网络支持好、低成本、内核可裁剪的很小(几百kb),方便移植

概述

  • Linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,目前很多企业级的项目(c/c++/php/java/python/java/go)都会部署到Linux/Unix系统上
  • 常见的操作系统:Windows、iOS、Android、MacOS、Linux、Unix
  • Linux之父——Linus Torvalds

    • Git创作者
    • 世界著名黑客
  • Linux主要发行版:Ubuntu(乌班图)、RedHat(红帽)、CentOS、Debain(蝶变)、Fedora、SuSE、OpenSUSE

Linux和Unix的关系

img

vm和Linux的安装

VM15.5下载

安装步骤

  1. 去BIOS里修改设置开启虚拟化设备支持(安装不成功再检查是否开启)
  2. 安装虚拟机软件

网络连接的三种方式

  • 桥接模式:虚拟系统可以和外部系统通讯,但是容易造成IP冲突
  • NAT模式:网络地址转换模式,虚拟系统可以和外部系统通讯,不造成IP冲突
  • 主机模式:独立的系统,不和外部进行通讯

克隆与快照

克隆

  • 方式一:直接拷贝一份完好的虚拟机文件
  • 方式二:使用vm的克隆操作。注意:克隆时,需要先关闭Linux服务器

快照

如果在使用虚拟机的时候,想要回到原先的状态,就可以使用快照管理

直接使用vm操作即可

vmtools

  1. vmtools安装后,可以在Windows下更好的管理vm虚拟机
  2. 可以设置Windows和centos的共享文件夹

安装步骤

  1. 进入centos
  2. 点击vm菜单的install vmware tools
  3. centos会出现一个vm的安装包,xx.tar.gz
  4. 拷贝到/opt
  5. 使用解压命令tar,得到一个安装文件
  6. 进入vm解压的目录,/opt目录下
  7. 安装./vmware-install.pl
  8. 全部使用默认设置即可
  9. 注意:安装vmtools,需要有gcc

Linux目录结构

基本介绍

  1. Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录
  2. 在Linux世界里,一切皆文件(也会把硬件映射为文件进行管理)

具体结构

  • bin(/usr/bin、/usr/local/bin):是Binary的缩写,存放最常使用的命令
  • sbin(/usr/sbin、/usr/local/sbin):存放系统管理员使用的系统管理程序
  • home:存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般目录名是以用户名命名
  • root:系统管理员目录,也称作超级权限者的用户主目录
  • lib:系统开机所需要最基本的动态连接共享库,作用类似于Windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库
  • lost+found:这个目录下一般是空的,在系统非法关机后,就会存放一些文件
  • etc:所有的系统管理所需要的配置文件和子目录,比如安装mysql的my.conf
  • usr:这是一个非常重要的目录,用户的很多应用程序都放在这个目录下,类似于Windows下的program files目录
  • boot:存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
  • proc:是一个虚拟目录,是系统内存的映射,访问这个目录来获取系统信息
  • srv:service缩写,存放一些服务启动后需要提取的数据
  • sys:这是Linux2.6内核的一个很大的变化,安装了2.6内核中新出现的一个文件系统sysfs
  • tmp:存放临时文件的目录
  • dev:类似于Windows的设备管理器,把所有的硬件用文件的形式存储
  • media:Linux系统会自动识别一些设备,例如:U盘,光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下
  • mnt:系统提供该目录是为了让用户挂在临时文件系统的,我们可以将外部的存储挂载在mnt上,然后进入该目录就可以查看里面的内容了
  • opt:这是给主机额外安装软件所摆放的目录。如安装ORACLE数据库就可以放到该目录下,默认为空
  • usr/local:这是另一个主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序
  • var:存放着不断扩充着的东西,习惯被修改的目录放在这个目录下,包括各种日志文件
  • selinux:是一种安全子系统,能控制程序只能访问特定文件,有三种工作模式,可自行设置

实际操作篇

  • 如需远程连接,可以使用XShell、SecureCRT、FinalShell等软件进行连接
  • 需要知道对应的Linux服务器ip,在终端使用ifconfig可以进行查询
  • 查询到Linux服务器IP后,在Windows命令行下使用ping指令可以判断是否连通,如果无法连通,则一定无法进行远程连接,就需要进行检查后连接

vi和vim编辑器

  • Linux会内置vi文本编辑器
  • Vim具有程序编辑的能力,可以看作是vi的增强版,可以主动的以文字颜色辨别语法的正确性,方便程序设计。代码补全,编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用

三种模式

正常模式

  • 以vim打开一个档案就直接进入一般模式了(默认的模式)
  • 在这个模式中,可以使用【上下左右】按键来移动光标
  • 可以使用【删除字符】或【删除整行】来处理档案内容
  • 也可以使用【复制、粘贴】来处理文件的数据
  • :进入命令行模式

插入模式

  • 按下i、I、o、O、a、A、r、R等任何一个字母之后才会进入编辑模式
  • 一般来说按i即可
  • 输入Esc,再输入进入命令行模式

命令行模式

  • 在这个模式中,可以提供你相关指令,完成读取、存盘、替换、离开vim、显示行号等的动作
  • :wq:保存退出
  • :q:不保存退出,:q!强制退出,并且不保存

快捷键

正常模式

  • 拷贝当前行:yy,拷贝当前行向下的n行:nyy,粘贴:p
  • 删除当前行dd,删除当前行向下的n行:ndd
  • 到该文档最末行:G,最首行:gg
  • 撤销操作:u
  • 将光标移动到指定位置:行号 shift g

命令行模式

  • 在文件中查找某个单词:/关键字,回车 查找;输入n就是查找下一个
  • 设置文件行号::set nu,取消文件行号::set nonu

关机重启和登录注销

关机重启

基本介绍

  • shutdown -h now:立刻进行关机
  • shutdown -h 1:1分钟后关机
  • shutdown -r now:现在重启计算机
  • halt:关机,作用和上面一样
  • reboot:现在重启计算机
  • sync:把内存的数据同步到磁盘

注意细节

  • 不论是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中
  • 目前的shutdown/reboot/halt等命令均已经在关机前进行了sync

登录注销

基本介绍

  • 登陆时尽量少使用root账号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登陆后使用su -用户名命令来切换身份(-可以省略)
  • 在提示符下输入logout即可注销用户

使用细节

  • logout注销指令在图形运行级别无效,在运行级别3下有效

用户管理

Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统

添加用户

  • 基本语法:useradd 用户名
  • 细节说明

    • 当创建用户成功之后,会自动的创建和用户同名的家目录
    • 也可以通过useradd -d 指定目录 用户名,给新创建的用户指定家的目录

指定/修改密码

  • 基本语法:passwd 用户名
  • 细节说明

    • 如果不写用户名的话默认修改当前登录的用户密码

删除用户

  • 基本语法:userdel 用户名
  • 细节说明

    • userdel -r 用户名:删除用户及其家目录
    • 不加-r只删除用户,保留家目录
    • 一般情况下,建议保留家目录

查询用户

  • 基本语法:id 用户名
  • 细节说明

    • 当用户不存在时,返回无此用户

切换用户

  • 在操作Linux时,如果当前用户的权限不够,可以通过su -指令,切换到高权限用户,比如root
  • 基本用法:su - 用户名
  • 细节说明

    • 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
    • 当需要返回到原用户时,使用exit/logout指令

查看当前用户信息

  • 基本语法:whoami/who am i
  • 细节

    • 如果通过切换用户指令切换后,使用该指令查询的是第一次登录时的用户

用户组

  • 类似于角色,系统可以对有共性的多个用户进行统一的管理
  • 新增组:groupadd 组名
  • 删除组:groupdel 组名
  • 增加用户时直接加上组:useradd -g 用户组 用户名
  • 修改用户组:usermod -g 用户组 用户名
  • 细节

    • 如果在新增用户时,没有指定分组,会默认新建一个与用户同名的组并将该用户加入对应的组

用户和组相关文件

  • /etc/passwd

    • 用户(user)的配置文件,记录用户的各种信息
    • 每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
  • /etc/shadow

    • 口令的配置文件
    • 每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
  • /etc/group

    • 组(group)的配置文件,记录Linux包含的组的信息
    • 每行的含义:组名:口令:组标识号:组内用户列表

实用指令

运行级别

基本介绍

运行级别说明

  1. 关机
  2. 单用户【找回丢失密码】
  3. 多用户状态没有网络服务
  4. 多用户状态有网络服务
  5. 系统未使用保留给用户
  6. 图形界面
  7. 系统重启

常用运行级别是3和5,也可以指定默认运行级别

  • 通过init [0~6]可以切换上面的运行级别

如果输入init 3将进入命令行界面,init 0关机,init 6重启......

在centos7以前,在/etc/inittab文件中进行修改

默认运行级别

  • 查询当前默认运行级别:systemctl get-default
  • 修改默认运行级别为3级别:systemctl set-default multi-user.target
  • 在修改后,重启将进入所设置的默认运行级别

找回root密码(centos 7.6)

  1. 启动系统,在开机界面按e进入编辑界面
  2. 进入编辑界面,使用键盘上的上下键把光标往下移动,找到以“Linux 16”开头内容所在的行数,在行的最后输入:init=/bin/sh(进入单用户运行级别)
  3. 完成输入后,直接按快捷键ctrl + x进入单用户模式
  4. 接着,在光标闪烁位置输入:mount -o remount,rw /(注意,各个单词间有空格),完成后按键盘的回车键(Enter)
  5. 再在新的一行最后输入:passwd,完成后按键盘的回车键。输入密码,然后再次确认密码即可,密码修改成功后,会显示passwd.....的样式,说明密码修改成功
  6. 接着,在鼠标闪烁的位置中(最后一行),输入touch /.autorelabel,完成后按回车键
  7. 继续在光标闪烁的位置处,输入exec /sbin/init,按回车,等待系统自动修改密码(过程时间可能有点长,耐心等待)。完成后,系统自动重启,新的密码就生效了

帮助指令

  • man:man [命令或配置文件] (功能描述:获得帮助信息)
  • help:help 命令(获得shell内置命令的帮助信息)
  • 百度搜索更直接
在查看帮助信息时,一页展示不下的话,按空格键会继续向下走

文件目录指令

目录操作

  • pwd指令pwd(显示当前工作目录的绝对路径)
  • ls指令ls [选项] [目录或是文件]

    • -a:显示当前目录所有的文件和目录,包括隐藏的
    • -l:以列表的方式显示信息(ll指令作用相同)
    • -lh:便于查看,文件大小将展示为k
  • cd指令cd [参数](切换到指定目录)

    • cd ~或者cd:回到自己的家目录,比如你是root,cd ~就会回到/root
    • cd ..:回到当前目录的上一级目录

文件操作

  • mkdir指令mkdir [选项] 要创建的目录(用于创建目录)

    • -p:创建多级目录
  • rmdir指令rmdir [选项] 要删除的空目录(用于删除目录)

    • rmdir删除的是空目录,如果目录下有内容时无法进行删除
    • 要删除非空目录,需要使用rm -rf 要删除的目录
  • touch指令touch 文件名称(创建空文件)

功能指令

  • cp指令cp [选项] 源文件 目的地(拷贝文件到指定目录)

    • -r:递归复制整个文件夹
    • 强制覆盖不提示的方法:\cp
  • rm指令rm [选项] 要删除的文件或目录(移除文件或目录)

    • -r:递归删除整个文件夹
    • -f:强制删除不提示
  • mv指令(移动文件与目录或重命名)

    • mv 旧文件名 新文件名(重命名)
    • mv 源文件 目的地(移动文件)

查看指令

  • cat指令cat [选项] 要查看的文件(查看文件内容)

    • -n:显示行号
    • cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令 | more
    • 例如:cat -n /etc/profile | more
  • more指令:是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干快捷键

    • 基本语法:more 要查看的文件
    • 空格:向下翻一页
    • 回车:向下翻一行
    • q:立即离开more,不再显示该文件内容
    • Ctrl + F:向下滚动一屏
    • Ctrl + B:返回上一屏
    • =:输出当前的行号
    • :f:输出文件名和当前行的行号
  • less指令:less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率

    • 基本语法:less 要查看的文件
    • 空格:向下翻一页
    • pagedown:向下翻一页
    • pageup:向上翻一页
    • /字串:向下搜寻【字串】。n向下查找,N向上查找
    • ?字串:向上搜寻【字串】。n向上查找,N向下查找
  • q:离开less这个程序
  • echo指令echo [选项] [输出内容](输出内容到控制台)
  • head指令:用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容

    • head 文件:查看文件头10行内容
    • head -n 5 文件:查看文件头5行内容,5可以是任意行数
  • tail指令:用于输出文件中尾部的内容,默认情况下tail指令显示文件末尾10行内容

    • tail 文件:查看文件尾10行内容
    • tail -n 5 文件:查看文件尾5行内容,5可以是任意行数
    • tail -f 文件:实时追踪该文档的所有更新
  • > 指令和 >> 指令

    • >:输出重定向(覆盖原内容)
    • >>:追加(不覆盖原内容)
    • 基本语法

      • ls -l > 文件:列表的内容写入a.txt中,覆盖写
      • ls -al >> 文件:列表的内容追加到aa.txt的末尾
      • cat 文件1 > 文件2:将文件1的内容覆盖到文件2
      • echo "内容" >> 文件
      • cal >> /home/date.txt:将日历信息追加到data.txt中(文件不存在自动创建)

    在追加内容时,如果目标文件不存在,将会自动创建出来

    cal:显示当前日历信息

其他指令

  • ln指令:软链接也称为符号链接,类似于Windows里的快捷方式,主要存放了链接其他文件的路径(link)

    • 基本语法:ln -s [原文件或目录] [软链接名](给原文件创建一个软链接)
    • 当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录
    • 删除软链接:和删除文件一样(rm 软链接名
    • 创建软链接时最好使用绝对路径,否则会出现符号连接的层数过多等问题
  • history指令:查看已经执行过的历史命令,也可以执行历史命令

    • 基本语法:history(查看执行过的历史命令)
    • history n:查看最近执行的n条指令
    • !5:执行曾经执行过的第5条指令

时间日期指令

  • date指令:显示当前日期

显示日期

  1. date:显示当前时间
  2. date +%Y:显示当前年份
  3. date +%m:显示当前月份
  4. date +%d:显示当前是哪一天
  5. date "+%Y-%m-%d %H:%M:%S":显示年月日时分秒

设置日期

  • date -s 字符串时间:设置系统当前时间

cal指令

  • 查看日历指令
  • 基本语法:cal [选项](不加选项,显示本月日历)
  • cal 2022:显示2022年全年日历

查找指令

find指令

  • 将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
  • 基本语法:find [搜索范围] [选项]
  • -name<查询方式>:按照指定的文件名查找模式查找文件
  • -user<用户名>:查找属于指定用户名所有文件
  • -size<文件大小>:按照指定的文件大小查找文件(单位:k,M,G)
  • 在home下查找hello.txt文件:find /home -name hello.txt
  • 查找整个Linux下大于200M的文件(+n大于,-n小于,n等于):find / -size +200M

locate指令

  • locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新Locate时刻
  • 基本语法:locate 搜索文件
  • 由于locate指令基于数据库进行查询,所以在第一次运行前,必须使用updatedb指令创建locate数据库

which指令

  • 可以查看某个指令在哪个目录下,比如查看ls指令:which ls

grep指令和管道指令|

  • grep过滤查找,管道符|,表示将前一个命令的处理结果输出传递给后面的命令处理
  • 基本语法:grep [选项] 查找内容 源文件

    • -n:显示匹配行及行号
    • -i:忽略字母大小写

压缩和解压

gzip/gunzip指令

  • gzip用于压缩文件,gunzip用于解压缩
  • 基本语法

    • gzip 文件:压缩文件,只能将文件压缩为*.gz文件
    • gunzip 文件.gz:解压缩文件命令

zip/unzip指令

  • zip用于压缩文件,unzip用于解压文件,这个在项目打包发布中很常用
  • 基本语法

    • zip [选项] xxx.zip 将要压缩的内容:压缩文件和目录的命令

      • -r:递归压缩,即压缩目录
    • unzip [选项] xxx.zip:解压缩文件

      • -d 目录:指定解压后文件的存放目录

tar指令

  • tar指令是打包指令,最后打包成的文件是.tar.gz的文件
  • tar [选项] xxx.tar.gz 打包的内容:打包目录,压缩后的文件格式.tar.gz

    • -c:产生.tar打包文件
    • -v:显示详细信息
    • -f:指定压缩后的文件名
    • -z:打包同时压缩
    • -x:解包.tar文件
  • 案例

    • 压缩多个文件:tar -zcvf ab.tar.gz a.txt b.txt
    • 压缩目录:tar -zcvf home.tar.gz /home
    • 解压到当前目录:tar -zxvf ab.tar.gz
    • 解压到指定目录:tar -zxvf ab.tar.gz -C /root
使用gzip压缩会删除源文件,使用其他两个指令进行压缩不会删除源文件

定时任务调度

磁盘分区、挂载

进程管理

RPM和YUM

网络配置

高级篇

日志管理

定制自己的Linux

内核源码&内核升级

备份与恢复

可视化管理webmin和bt运维工具

入侵检测&权限划分&系统优化

面试题

最后修改:2023 年 03 月 09 日
如果觉得我的文章对你有用,请随意赞赏