Linux

Linux 的基础知识


Linux 简介

  1. Linux 分为内核版本和发行版本。发行版本在内核基础上增加各种功能。在服务器领域使用 redhat,ubuntu 具有图形界面偏向个人应用。
  2. Linux 严格区分大小写;所有内容以文件形式保存,包括硬件。
  3. Linux 不靠扩展名区分文件类型,但为使用方便,有一些约定俗成的扩展名。

安装

  1. 使用虚拟机 VMware 安装 Ubuntu。本机系统可以与虚拟机系统网络通信;可以设定并随时修改虚拟机操作系统的硬件环境。
  2. 格式化的目的是为了写入文件系统:分为等块大小;创建表格记录文件 ID 号、修改时间、权限。

常用命令

查询目录

drwxr-xr-x 2 silencial silencial 4096 Apr 8 20:00 Desktop
第一位表示文件类型
(- 文件,d 目录,l 软链接文件)
引用计数 u 所有者 g 所属组 大小 时间 名称
之后每三位进行划分表示权限
(u 所有者、g 所属组、o 其他人)
(r 读、w 写、x 执行)

文件处理命令

常见目录

  • /bin 重要的系统命令
  • /sbin 重要的系统命令 (一般只有 root 能调用)
  • /dev 硬件设备文件
  • /etc 配置文件 (host-specific)
  • /home 用户主目录
  • /lib 系统软件库
  • /opt 可选应用软件
  • /sys 系统信息和配置
  • /root 超级用户家目录
  • /tmp 临时目录,/var/tmp 类似,一般在重启时删除
  • /usr 只读用户数据
    • /usr/bin 非重要的系统命令 (普通用户)
    • usr/sbin 非重要的系统命令 (超级用户)
    • /usr/local/bin 用户自编译的命令
  • /var 系统 logs 和 caches

链接命令

硬链接

  • 相同的 i 节点和存储 block 块,可以看做是同一个文件
  • 可通过 i 节点识别
  • 不能跨分区
  • 不能针对目录使用

软链接

  • 类似 Windows 快捷方式
  • 软链接拥有自己的 i 节点和 block 块,但数据块中没有实际的文件数据
  • lrwxrwxrwx 所有软链接文件

ln -s [原文件] [目标文件]

  • 生成链接文件
  • -s 创建软链接
  • 原文件一定要写绝对路径

关机与重启命令

shutdown [选项] 时间: 最安全,可以正确保存数据

  • -c 取消前一个关机命令
  • -h 关机
  • -r 重启
  • & 加在最后表示后台执行

logout 退出登录

runlevel 查询当前系统运行级别

系统运行级别

  1. 关机
  2. 单用户
  3. 不完全多用户,不含 NFS 服务
  4. 完全多用户
  5. 未分配
  6. 图形界面
  7. 重启

其他常用命令

查询与自动挂载

  • mount

    查询已挂载设备

  • mount -a

    依据配置文件 /etc/fstab 的内容,自动挂载

  • mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点

    -t 文件系统:加入文件系统类型来指定挂载的类型,可以 ext3、ext4、iso9660 等文件系统

    -o 特殊选项:可以指定挂载的额外选项

  • mkdir /mnt/cdrom/

    建立挂载点

  • mount -t iso966 /dev/cdrom /mnt/cdrom

    挂载光盘

  • umount 设备文件名或挂载点

  • fdisk -l

    查看 U 盘设备文件名

  • mount -t vfat /dev/sdb1 /mnt/usb/

Linux 默认不支持 NTFS 文件

用户登录查看命令

  • w 用户名

    命令输出:

    • USER: 登录的用户名
    • TTY: 登录终端
    • FROM: 从哪个 IP 地址登录
    • LOGIN@: 登录时间
    • IDLE: 用户闲置时间
    • JCPU: 和该终端连接的所有进程占用的时间。不包括过去的后台作业时间,但包括当前正在运行的后台作业所占用的时间
    • PCPU: 当前进程所占用的时间
    • WHAT: 当前正在运行的命令
  • who 用户名

    命令输出:

    • 用户名
    • 登录终端
    • 登录时间
  • last

    读取 /var/log/wtmp 文件数据

    查询当前和过去登录的用户信息

    命令输出:

    • 用户名
    • 登录终端
    • 登录 IP
    • 登录时间
    • 退出时间
  • lastlog

    读取 /var/log/lastlog 文件内容

    查看所有用户最后一次登录时间

    命令输出:

    • 用户名
    • 登录终端
    • 登录 IP
    • 最后一次登录时间

Shell 基础

Shell 概述

Shell 是一个命令行解释器,为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序

Shell 还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell 是解释执行的脚本语言,在 Shell 中可以直接调用 Linux 系统命令。

Shell 两种主要语法类型有 Bourne 和 C,这两种语法彼此不兼容。Bourne 家族主要包括 sh、ksh、Bash、psh、zsh;C 家族主要包括 csh、tcsh

  • echo $SHELL

    查看当前在哪个 shell 下

脚本执行方式

  • echo [选项] [输出内容]

    -e 支持反斜线控制的字符转换

    输出警告音

第一个脚本

1
2
#!/bin/bash 必加
#The first program 注释

脚本执行:

  • 赋予执行权限,直接运行

    chmod 755 hello.sh

    ./hello.sh

  • 通过 Bash 调用执行脚本

    bash hello.sh

Bash 的基本功能

命令别名与快捷键

  • alias

    查看系统中所有命令的别名

  • alias 别名=‘原命令’

    设定命令别名

  • vi ~/.bashrc

    写入环境变量配置文件,使别名永久生效

    之后调用 source .bashrc 重新载入配置文件

  • unalias

    删除别名

命令生效顺序:

  1. 执行用绝对路径或相对路径执行的命令
  2. 别名
  3. Bash 的内部命令
  4. 按照 $PATH 环境变量定义的目录查找顺序找到的第一个命令

历史命令

  • history [选项] [历史命令保存文件]

    -c 清空历史命令

    -w 把缓存中的历史命令写入历史命令保存文件 ~/.bash_history

历史命令默认保存 1000 条,可以再环境变量配置文件 /etc/profile 中进行修改

  • 使用上下箭头调用以前的历史命令
  • 使用 "!n" 重复执行第 n 条历史命令
  • 使用 "!!" 重复执行上一条命令
  • 使用 "!字串" 重复执行最后一条以该字串开头的命令

输出重定向

设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误输出
  • 标准输出重定向:
    • 命令 > 文件: 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中。
    • 命令 >> 文件:以追加的方式,把命令的正确输出输出到指定的文件或设备当中。
  • 标准错误输出重定向:
    • 命令 2 > 文件: 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中。
    • 命令 2 >> 文件:以追加的方式,把命令的错误输出输出到指定的文件或设备当中。
  • 正确输出和错误输出同时保存:
    • 命令 > 文件 2 > &1:以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
    • 命令 >> 文件 2 > &1:以追加的方式,把正确输出和错误输出都保存到同一个文件当中。
    • 命令 &> 文件:以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
    • 命令 &>> 文件:以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中。
    • 命令 >> 文件 1 2 >> 文件 2:把正确输出追加到文件 1,,错误输出追加到文件 2。
  • ls &> /dev/null 丢入垃圾站

输入重定向

  • wc [选项] [文件名]

    -c 统计字节数

    -w 统计单词数

    -l 统计行数

输入完成后 ctrl + D 统计

  • 命令 < 文件:把文件作为命令的输入
  • 命令 << 标识符:标识符把标识符之间的内容作为命令的输入

磁盘管理

基本命令

  • df 查看磁盘分区使用状况

    -l 仅显示本地磁盘(默认)

    -a 显示所有文件系统的磁盘使用情况

    -h 以 1024 进制计算最合适的单位显示磁盘容量

    -H 以 1000 进制计算最合适的单位显示磁盘容量

    -T 显示磁盘分区类型

    -t 显示指定类型文件系统的磁盘分区

    -x 不显示指定类型文件系统的磁盘分区

  • du 统计磁盘上文件大小

    -b 以 byte 为单位统计文件

    -k 以 KB 为单位统计文件

    -m 以 MB 为单位统计文件

    -h 按照 1024 进制以最合适的单位统计文件

    -H 按照 1000 进制以最合适的单位统计文件

    -s 指定统计目标

硬盘分区和格式化

分区模式之 MBR

  • 主分区不超过 4 个
  • 单个分区容量最大 2 TB

分区模式之 GPT

  • 主分区个数 128 个
  • 单个分区容量 18 EB

  • fdisk 进行 MBR 硬盘分区
  • parted 可以进行两种硬盘分区

  • mkfs.ext3 /dev/sda 格式化