返回

Linux学习笔记

入门篇

Linux概述

Linux安装

基础篇

文件与目录结构

  • Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录/,然后在此目录下在创建其他文件夹
  • /bin: 是Binary的缩写,这个目录存放着最经常使用的文件
  • /sbins就是super user的意思,这里存放着系统管理员使用的系统管理程序
  • /home:存放着普通用户的主目录,在**linux中的每一个用户都有一个自己的目录**,一般该目录是以用户的账号命名的
  • /root:该目录为系统管理员,也称作超级权限者的用户主目录
  • /boot:存放的是启动linux的一些核心文件,包括一些链接文件以及镜像文件
  • /proc:虚拟目录,是系统内存的映射,可以访问该目录获得系统信息
  • /srvserver缩写,存放服务启动后需要提取的数据
  • /sys:安装了内核中新出现的一个文件系统
  • /tmp:存放临时文件
  • /devdevice,类似于windows的设备管理器,把硬件用文件存储
  • /medialinux系统会自动识别一些设备,例如U盘、光驱等等,识别后,linux会把识别的设备挂载在这个目录下
  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统,我们可以将外部的存储挂载在/mnt上,然后进入该目录就可以查看内容
  • /opt:这是给主机额外安装软件的目录
  • /usr/local: 这是另一个给主机额外安装软件的目录,一般通过编译源码方式安装的程序
  • /var:该目录存放着不断扩充的东西,习惯将经常被修改的目录放在这个目录下,包括日志文件
  • 总结
    • linux有且只有一个根目录/
    • ``linux`的各个目录存放的内容是规划好的,不能乱放文件
    • linux是以文件的形式管理设备,因此**linux系统一切皆为文件**

VI/VIM编辑器

  • VIUnix 操作系统和类 Unix 操作系统中最通用的文本编辑器
  • VIM 编辑器是从 VI 发展出来的一个性能更强大的文本编辑器,可以主动的以字体颜色辨别语法的正确性,方便程序设计
  • 三种模式:一般模式编辑模式命令模式
  • 一般模式:以vim打开一个文件就直接进入一般模式,使用上下左右键来移动光标,可以删除、复制和粘贴
  • 编辑模式:在命令模式下按下 i, I, o, O, a, A 任何一个字母后进入编辑模式, 一般来说按 i 即可
  • Esc键退出编辑模式进入一般模式
  • 命令模式:按下: / ?中任意一个进入命令模式,光标移动到最底下那 一行
  • 命令模式中, 可以提供搜寻资料的动作,而读取、存盘、大量取代字符、 离开 vi 、显示行号等动作均是在此模式中达成的,例如:
    • wq:写并退出
    • q:直接退出
    • q!:强制退出不保存

网络配置

网络连接模式

  • VMware提供了三种网络连接模式:
    • 桥接模式:虚拟机直接连接外部网络,主机起到了网桥的作用,虚拟机对外部网络可见
    • NAT模式:虚拟机和主机构建一个专用网络,通过NAT设备对IP进行转换,虚拟机对外部网络不可见
    • 仅主机模式:虚拟机只与主机共享一个专用网络,与外部网络无法通信

配置网络IP地址

  • 查看 IP 配置文件:vim /etc/sysconfig/network-scripts/ifcfg-ens33
  • ip地址配置成静态
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
TYPE="Ethernet" #网络类型(通常是 Ethemet
PROXY_METHOD="none"
BROWSER_ONLY="no"
//要修改为静态
BOOTPROTO="static" //IP的配置方法[none|static|bootp|dhcp](引导时不使用协议|静态分配 IP|BOOTP 协议|DHCP 协议)
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="e83804c1-3257-4584-81bb-660665ac22f6" //随机id
DEVICE="ens33" //接口名(设备,网卡)
ONBOOT="yes" //系统启动的时候网络接口是否有效(yes/no)
//设置IP地址
IPADDR=192.168.1.100
//设置网关
GATEWAY=192.168.1.2
//设置域名解析器
DNS1=192.168.1.2
  • 编辑完后,按键盘esc ,然后输入:wq回车即可
  • 重启网络服务:serive network restart
  • 物理机能ping通虚拟机,但是虚拟机ping不通物理机,一般都是因为物理机的防火墙问题,把防火墙关闭就行
  • 虚拟机能ping通物理机,但是虚拟机ping不通外网,一般都是因为DNS的设置有问题

配置主机名

  • 修改主机名:hostnamectl set-hostname 主机名
  • 查看主机信息:hostnamectl

系统管理

Linux中的进程和服务

  • 一个正在执行的程序或命令,被叫做进程
  • 在Linux中,每个执行的程序或代码都称为一个进程。每个进程都分配一个ID号
  • 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程
  • 每个进程都可能以两种方式存在
    • 前台进程:用户目前的屏幕上可以进行操作
      • 后台进程:实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行
  • 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才结束
  • 启动之后常驻内存的进程,被叫做服务
  • 服务本身就是进程,但是运行在后台,通常会监听某个端口,等待其他程序的请求,比如(mysql、sshd、防火墙)因此我们又称为守护进程

service服务管理

  • 基本语法:systemctl start|stop|restart|status 服务名
  • 服务所在目录:/usr/lib/systemd/system
  • 查看服务名:
    • 使用 setup ->系统服务就可以看到
  • 系统运行级别(CentOS 6)
  • 系统运行级别(CentOS 7)
    • multi-usertarget:等价于原运行级别3(多用户有网,无图形界面)
    • graphical.target:等价于原运行级别5(多用户有网,有图形界面)
  • 查看当前运行级别:systemctl get-default
  • 修改当前运行级别:
    • systemctl set-default 运行级别
    • CTRL + ALT + F2/1
    • init 运行级别
  • 配置服务是否开机自启动:systemctl enable\disable 服务名
  • 查看所有服务是否开机自启动:systemctl list-unit-files

关机重启命令

远程登陆

  • 远程登录:ssh
  • 文件传输:scpsftp

实操篇

  • Shell可以看作是一个命令解释器,为我们提供了交互式的文本控制台界面
  • 我们可以通过终端控制台来输入命令,由shell进行解释并最终交给内核执行
  • 本章就将分类介绍常用的基本shell命令

帮助命令

  • 获得外部命令帮助信息:man 命令
  • 获得外部命令帮助信息:命令 --help
  • 获得内置命令帮助信息:help 命令
  • 判断命令类型:type 命令
  • 查看命令历史记录:history

常用快捷键

  • 停止进程:ctrl + c
  • 清屏:ctrl + l
  • 补全:tab
  • 查找执行过的命令:上下键

文件目录类

  • 显示当前路径:pwd
  • 切换目录:cd [路径]
    • .. :回到上一级目录
    • -:回到上次目录
    • ~:回到家目录
  • 列出当前目录下文件:ls [选项]
    • -a:显示当前目录所有的文件和目录,包括隐藏的
    • -l:以列表的方式显示信息
    • /:列出根目录下文件
  • 创建目录:mkdir [选项] 目录名
    • -p:创建多级目录
  • 删除目录:rmdir [选项] 目录名
    • -p:删除多级目录
  • 创建文件:touch 文件名
  • 复制文件或目录:cp [选项] source dest
    • -r:递归复制整个目录
  • 删除文件或目录:rm [选项] deleteFile
    • -r:递归删除目录中所有内容
    • -f:强制执行删除操作
    • -v:显示详细执行过程
  • 移动文件或目录或重命名:
    • mv source dest
    • mv oldNameFile newNameFile
  • 查看文件内容:cat [选项] 文件名
    • -n:显示行号
  • 查看文件内容(分屏):more 文件名
    • Enter:按行下翻
    • Space:按页下翻
    • b:按页前翻
    • q:直接退出
  • 查看文件内容(分屏,动态加载):less 文件名
    • 快捷键同上
    • /字串:查找匹配子串
      • n:向下查找
      • N:向上查找
  • 输出内容到控制台:echo [选项] [输出内容]
  • 输出重定向到文件(覆盖写):[内容] > [文件名]
  • 输出追加到文件:[内容] >> [文件名]
  • 显示文件头部内容:head [-n 行数] 文件名
  • 显示文件尾部内容:tail [-n 行数] 文件名
    • -f:实时显示文件最新追加的内容,常用于查看日志记录
  • 软链接:也叫符号链接,类似于windows里的快捷方式,只保存链接路径
    • 创建:ln -s [原文件或目录][软链接名]
    • 删除:rm -rf 软链接名
  • 硬链接:所有链接都指向同一个文件的inode索引节点,当所有硬链接都被删除,则该文件被删除,默认一个新文件的硬链接数为1
    • 创建:ln
  • 查看命令的历史记录:history

时间日期类

  • 查看当前时间:date
  • 设置系统时间:date -s 字符串时间
  • 查看日历:cal

用户管理类

  • 添加用户:useradd 用户名
  • 添加用户到组:useradd -g 组名 用户名
  • 设置用户密码:passwd 用户名
  • 验证用户是否存在:id 用户名
  • 查看所有用户:cat /etc/passwd
  • 切换用户:su 用户名
  • 查看当前登录用户名:whoami
  • 查看当前进程用户名:who am i
  • 普通用户临时获取root权限:sudo 命令
    • 事先需要以root身份修改文件/etc/sudoers添加该普通用户
  • 删除用户:userdel 用户名
  • 新增组:groupadd 组名
  • 修改用户所属组:usermod -g 组名 用户名
  • 修改组名:groupmod -n newName oldName
  • 删除组:groupdel 组名
  • 查看所有组:cat /etc/group

文件权限类

  • 使用ls -l显示文件所有信息
  • 改变文件权限chmod
  • r=4 w=2 x=1rwx=4+2+1=7

  • 修改整个文件夹里面的所有文件的所有者、所属组、其他用户都具有可读可写可执行权限:chmod -R 777 目录名/

  • 改变文件或目录所有者:chown [选项][最终用户][文件或目录]

    • -R:递归操作
  • 改变文件或目录所属组:chgrp [最终用户组][文件或目录]

搜索查找类

  • 查找文件或目录:find [搜索范围][选项]
    • -name 文件名:按指定文件名查找
    • -user 用户名:按指定用户名查找所属文件
    • -size 文件大小:按指定文件大小查找文件
      • c:字节
      • w:字(2字节)
      • b:块(512字节)
      • k:千字节
      • M:兆字节
      • G:吉字节
  • 快速定位文件路径:locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件
    • 创建locate数据库:updatedb
    • 查找文件路径:locate 文件名
  • 查找命令的路径
    • which 命令名
    • whereis locate
  • 内容过滤查找和管道操作:管道符|表示将前面命令的结果传给后面命令来处理
    • grep [选项] 查找内容 源文件
      • -n:显示行号

压缩和解压类

  • 压缩文件:gzip 文件名
  • 解压文件:gunzip xxx.gz
  • 压缩目录:zip [选项] xxx.zip 目录名
    • -r:压缩目录
  • 解压目录:unzip [选项] xxx.zip
    • -d 目录名:指定解压后文件存放目录

gzip压缩不保留源文件;zip压缩保留源目录

  • 打包:tar [选项] xxx.tar.gz 要打包的内容
    • -c:打包
    • -z:打包并压缩
    • -x:解包
    • -C:解压到指定目录
    • -v:显示详细信息
    • -f:指定压缩后的文件名

磁盘分区类

  • 查看文件和目录占用的磁盘空间:du 目录/文件
    • -h:以GBytesMBytesKBytes等格式显示
    • -a:统计所有文件和子目录
    • -s:只显示总和,不显示子目录和文件
    • --max-depth=n:指定统计子目录的深度为第n
  • 查看磁盘剩余空间:df [选项]
    • -h:以GBytesMBytesKBytes等格式显示
  • 查看设备挂载情况:lsblk [选项]
    • -f:查看详细情况,先文件系统信息
  • 挂载:虚拟目录与物理硬盘空间的映射关系
    • mount [-t vfstype] [-o options] device dir
  • 卸载设备:umount 设备文件名或挂载点
  • 硬盘分区fdisk

进程管理类

  • 查看系统中所有进程:ps aux | grep xxx
  • 查看父子进程之间的关系:ps -ef | grep xxx

  • 通过进程号终止进程:kill [选项] 进程号
    • -9:强迫进程立即停止
  • 通过进程名终止进程:killall 进程名称
  • 实时监控进程状态:top [选项]

  • 查看进程的网络状态:netstat -anp | grep 进程号
  • 查看网络端口号占用情况:netstat -nlp | grep 端口号

  • 系统定时任务:crontab [选项]

扩展篇

软件包管理

  • ubuntuapt-get
  • centosrpmyum(推荐)
  • 查询所安装的所有rpm软件包:rpm -qa
    • 由于软件包比较多,一般都会采取过滤:rpm -qa | grep rpm软件包
  • 卸载rpm软件包:rpm -e RPM软件包
  • 安装rpm软件包:rpm -ivh
  • 查看已安装的所有软件:yum list
  • 使用yum安装软件:yum -y [参数] 软件名
    • install:安装rpm软件包
    • update:更新rpm软件包
    • check-update:检查是否有可用的更新rpm软件包
    • remove :删除指定的rpm软件包
    • list:显示软件包信息
    • clean :清理yum过期的缓存
    • deplist:显示yum软件包的所有依赖关系
  • 使用yum卸载软件:yum remove 软件名
  • 修改yum

Shell编程

shell脚本入门

  • shell:外壳
  • 脚本一般以#!/bin/bash开头(指定解析器)

变量

系统预定义变量

自定义变量

特殊变量
  • $n

  • $#

  • $*$@

  • $?

运算符

  • $((运算式))$[运算式]

条件判断

流程控制

读取控制台输入

函数

正则表达式

文本处理工具

综合应用案例

最后更新于 Oct 28, 2022 10:55 UTC
Built with Hugo
Theme Stack designed by Jimmy