Linux 就该这么学

Linux, 一切皆文件。

常用系统工作命令

  1. echo [字符串| $变量]: 在终端输出字符串或变量提取后的值
  2. date: 显示以及设置系统时间和日期,+s参数可以设置当前的时间和日期
  3. reboot: 重启系统,默认需要管理员权限
  4. poweroff: 关闭系统,需要root权限
  5. wget: 用于在终端中下载网络文件
  6. ps: 用于查看系统中的进程状态
  7. top: 动态地监视进程活动与系统负载等信息
  8. pidoff: 用于查询某个指定服务进程的PID值
  9. kill: 用于终止某个指定PID的服务进程
  10. killall: 用于终止某个指定名称的服务所对应的全部进程

系统状态检测命令

  1. ifconfig: 获取网卡与网络状态信息
  2. uname: 用于查看系统内核与系统版本等信息,可以附加-a参数
  3. uptime:用于查看系统的负载信息
  4. free: 显示系统中内存的使用量信息
  5. who: 用于查看当前登入主机的用户终端信息
  6. last: 用于查看所有系统的登录记录
  7. history: 可以显示历史执行过的命令信息 可以使用-c参数进行清除
  8. sosreport: 用于收集系统配置及架构信息并输出诊断文档

工作目录切换命令

  1. pwd: 显示用户当前所处的工作目录
  2. cd: 用于切换工作路径,- 为上一次的目录
  3. ls: 显示目录中的文件信息, 常用参数-ald

文本文件编辑命令

  1. cat: 用于查看文本文件,内容比较少的。显示行号添加-n 参数
  2. more: 用于查看文本文件,内容比较多的
  3. head: 用于查看纯文本文件的前N行
  4. tail: 用于查看纯文本文件的后N行
  5. tr: 用于替换文本文件中的字符
  6. wc: 用于统计指定文本的行数-l,字数-w,字节数-c
  7. stat: 用于查看文件的具体存储信息和时间等信息
  8. cut: 用于按“列”提取文本字符, 使用-d设置分隔符,使用-f设置列数
  9. diff: 用于比较多个文本文件的差异, 使用-c参数描述文件的具体不同

文件目录管理命令

  1. touch: 创建新的文件或者设置文件的时间
  2. mkdir: 创建空白的目录, 使用-p参数进行递归迭代
  3. cp: 用于复制文件或目录, 常用参数-p保留原始文件的属性,-r 用于对目录的递归复制,-d用于保留连接文件的属性
  4. mv: 用于文件剪切或者将文件重新命名
  5. rm: 用于删除文件或者目录,-r删除目录,-f强制删除
  6. dd: 用于按照指定大小和个数的数据块来复制文件或者转换文件,之前用在刻录系统盘的时候, 常用参数if 输入文件的名称 of 输出文件的名称,bs每个块儿的大小,count 要复制的块儿个数
  7. file: 查看文件类型

打包压缩和搜索命令

  1. tar: 文件打包压缩和解压

    常见参数:

    参数 作用
    -c 创建压缩文件
    -x 解来压缩文件
    -t 查看压缩包内有那些文件
    -z 使用Gzip压缩或者解压
    -j 使用bzip2压缩或者解压
    -v 显示压缩或者解压的过程
    -f 目标文件名
    -p 保留原始文件权限和属性
    -P 使用绝对路径进行压缩
    -C 指定解压到目录
  2. grep: 用于在文本中执行关键词搜索,并显示匹配的结果-n 显示行号,-v 进行搜索反选

  3. find: 按照指定条件来查找文件,-name 匹配名称,-size匹配大小,-exec 将find命令找到的结果交由紧接着的命令作后续处理, 配套使用参数-exec {} \;

  4. Linux进程中有这样的5个状态,分别为运行(R),中断(S),不可中断(D),僵死(Z)和停止(T)。

输入输出重定向

标准输入重定向(STDIN, 文件描述符0)

标准输出重定向(STDOUT, 文件描述符1)

标准错误重定向(STDERR,文件描述符2)

符号 作用
命令 < 文件 将文件作为命令的标准输入
命令 << 分隔符 从标准输入中读入,直到遇到分界符才停止
命令 < 文件1 > 文件2 将文件1作为命令的标准输入,并将标准输出输出到文件2
符号 作用
命令 > 文件 将标准输出到文件(清空原有文件数据)
命令 2> 文件 将错误输出到文件(清空原有文件数据)
命令 >> 文件 将标准输出到文件(追加)
命令 2>> 文件 将错误输出到文件(追加)
命令 >> 文件 2>&1 或 命令 &>> 文件 将标准输出与错误输出共同写到文件中(追加)

小技巧

  • 管道命令符: 命令1|命令2: 把前一个命令原本要输入到屏幕的数据当做是后一个命令的标准输入

  • 命令符的通配符:*匹配零个或者多个字符,?匹配单个字符,[0-9],中括号加内容,匹配其中内容一个部分

  • 转义字符: \反斜线,'单引号,"双引号,```反引号

  • 环境变量:Linux中对于命令的查找,不同用户不同的环境变量

Vim 编辑器

  1. 三种模式: 命令模式,插入模式,普通模式。
  2. 命令模式中常用的命令:[X]dd 删除光标所在[X]行,n显示搜索命令定位的下一个字符串,N显示搜索命令定位的上一个字符串,u 撤销上一步操作。
  3. 普通模式中常用的命令: :wq保存退出,:q!强制退出,不保存修改,/字符串搜索该字符串
  4. 普通用户编辑文件如何保存: :w !sudo tee %

编写Shell脚本

  1. 脚本类型: 交互式以及批处理
  2. 接收用户的参数:$<number>
  3. 条件语句,循环语句,判断语句

用户身份和文件权限

  1. root用户UID为0, 系统用户UID为1-999, 普通用户从1000开始

  2. useradd: -d指定家目录,-d指定账户到期时间,-g指定一个初始的用户基本组,-s指定用户默认的shell解释器,/sbin/nologin说明用户不能够登录到系统中,可以设置为FTP管理员的登录权限,做到系统权限最小化,以及各个不同功能的隔离。

  3. groupadd: 用于创建用户组

  4. usermod: 用于修改用户的属性

  5. passwd: 用于修改用户密码,过期时间,认证信息等等, root管理员修改密码时候,不用验证旧密码, -l锁定用户,禁止其登录,-u解除锁定,允许其登录

  6. userdel:用于删除用户

  7. Linux中的文件类型: -: 普通文件,d目录文件,l链接文件,b块设备文件,c字符设备文件,p管道文件

  8. 文件权限: 读写执行421

  9. chmod : 设置文件或者目录的权限,-R 表示递归操作

  10. 特殊权限

    • SUID: 对于二进制程序设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限(仅对拥有执行权限的二进制程序有效),一种有条件的,临时的特殊权限授予方法。
    • SGID: 让执行者临时拥有属组的权限(对用用执行权限的二进制程序进行设置),在某个目录中创建的文件自动继承该目录的用户组(只可以对目录进行设置
    • SBIT: 粘滞位。当对于某个目录设置了这个粘滞位之后,这个目录中的文件只能被其所有者执行删除操作
  11. 隐藏权限

    • chattr: 设置文件的隐藏权限,保证文件的安全
    • lsattr: 显示文件的隐藏权限
  12. 文件访问控制列表ACL

    • setfacl: 管理文件的ACL规则
    • getfacl: 显示文件上设置的ACL信息
  13. 身份切换

    • su: 使用su -, 切换到新的用户,使用减号表示将环境变量的信息也进行更新,而不是保留之前的环境变量信息
    • sudo: 使用sudo命令提供给普通用户额外的权限来完成原本root管理员才能完成的任务
    • /etc/sudoers: 提供集中的用户管理,权限与主机配置等
    • visudo: 修改配置文件,只有root管理员有这个权限

存储结构与磁盘划分

  1. 按照文件系统层次化标准FHS采用树形结构存放文件

  2. Linux中常见目录和内容

    目录名称 放置文件信息
    /boot 开机所需要文件,开机菜单以及所需要的配置文件等
    /dev 以文件形式存放设备与接口
    /etc 配置文件
    /home 用户家目录
    /bin 存放单用户模式下还可以操作的命令
    /lib 开机时候用到的函数库,以及/bin和/sbin下面的命令要调用的函数
    /sbin 开机过程中需要的命令
    /media 用于挂载设备文件的命令
    /opt 放置第三方的软件
    /root 系统管理员的家目录
    /srv 一些网络服务的数据文件目录
    /tmp 任何人均可使用的共享临时目录
    /proc 虚拟文件系统,利用系统内核,进程,外部设备以及网络状况等
    /usr/local 用户自行安装的软件
    /usr/sbin Linux系统开机时候不会用到的软件/命令/脚本
    /usr/share 帮助与说明文件,也可放置共享文件
    /var 主要存放时常变化的文件,比如日志
    /lost+found 当文件系统发生错误的时候,将一些丢失的文件片段存放在这里
  3. 绝对路径和相对路径

  4. 主分区或者扩展分区的编号从1开始,到4结束

  5. /dev/sda5` 路径详解

    /dev: 硬件设备文件所在的目录

    sd: 存储设备

    a: 同类接口中的第一个被识别到的设备

    5: 表示这个设备是一个逻辑分区

  6. 磁盘硬件相关知识: 磁盘硬件是由大量扇区组成的,每个扇区的容量是512字节,第一个扇区中保存了主引导分区(MBR)以及分区表。

  7. 第一个扇区只能创建出4个分区,所以将第一个扇区的分区表,作为指向扩展分区的指针。从而添加扩展分区,再在扩展分区中创建不同的逻辑分区。

  8. super block: Linux系统中的硬盘地图,inode记录以下信息

    • 文件的访问权限
    • 所有者和所有组
    • 文件大小
    • 文件创建或内容修改时间
    • 文件最后访问时间
    • 文件的特殊权限
    • 文件的真实数据地址
  9. mount: 文件系统挂载

  10. unmount: 文件系统撤销挂载

  11. fdisk: 管理磁盘分区,添加,删除,转换分区等一站式分区服务

  12. mkfs: 进行格式化操作的命令

  13. df -h: 查看挂载状况以及磁盘使用情况

  14. du: 查看文件数据占用量

  15. 使挂载配置始终生效:/etc/fstab

  16. 交换分区

    • mkswap: 添加交换分区
    • swapon: 将交换分区正式挂载到系统中
    • free -m: 查看交换分区的大小变化
  17. quota: 磁盘容量限额管理, 相关命令xfs_quota, edquota

  18. 软硬链接

    • 硬链接:指向原始文件inode的指针, 由于技术局限性,我们不能够跨分区对于文件进行链接
    • 软链接:也称为符号链接,仅包含所链接文件的路径名,也可以跨越文件系统进行链接。
    • ln : 创建链接文件,使用-s参数创建软链接

RAID以及LVM技术

  • RAID 技术: 磁盘阵列,具有数据备份以及高效查询的作用
  • LVM逻辑卷管理器: 在硬盘分区和文件系统之间添加了一个逻辑层。

iptables 以及防火墙

  1. iptables 服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以称之为一个规则链,具体有如下几个:
    • 在进行路由选择之前处理数据包:PREROUTING
    • 处理流入的数据包:INPUT
    • 处理流出的数据包:OUTPUT
    • 处理转发的数据包:FORWARD
    • 在进行路由选择后处理数据包:POSTROUTING
  2. iptables操作响应ACCEPT,REJECT, LOG, DROP

网络相关命令

  1. 网络参数配置命令

    • ifconfig: 手动的启动观察和修改网络接口的相关参数
    • ifup: 使用配置文件进行网络接口配置时使用参数, 配置文件位置:/etc/sysconfig/network-scripts
    • ifdown: 同上
    • route: 路由修改
    • ip:配置基本网络参数,还能进行额外的IP协议,以及多IP的达成
    • iwlist: 利用无线网卡进行无线AP的侦测与获得相关的数据
    • iwconfig: 配置无线网卡的相关参数
    • dhclient: 使用dhcp协议在局域网内获取IP
  2. 网络侦错与观察命令

    • ping: 发送一个特殊的网络数据包,成为ICMP ECHO_REQUEST包, 到另一个主机或者终端,可以试验连通性
    • traceroute: 显示从本地到指定主机要经过的全部跳数的网络流量包
    • netstat: 显示网络设置和网卡信息,-r显示路由包
    • host: 查看某个主机的IP
    • nslookup: 查看某个主机的IP, 使用/etc/resolv.conf 文件作为DNS服务器的来源
  3. 传输

    • ftp: ftp可以与FTP服务器进行通信,可以通过网络进行下载和上传
    • lftp: 多协议的支持,下载失败会重新连,Tab键进行路径补全
    • wget: 下载数据
    • ssh: 和远程主机建立安全交流通道
    • scpssh程序中附带,可以使用进行文件传输
    • sftp: ssh程序中附带,可以进行类似于ftp服务器的操作
    • telnet: 远程连接, 可以连接到远程机器的telnet服务
  4. 封包截取功能

    • tcptump
    • ethereal
    • nc: 网络的瑞士军刀,可以开放端口,传输文件,文字,接受反传等等

Reference

  • 《Linux就该怎么学》
  • 《鸟哥的Linux 私房菜》

文章作者:Xingjiali Zhang

最后更新:2019年08月13日 17:08:24

原始链接:http://yoursite.com/2019/08/09/linux/

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 3.0 许可协议,转载请注明出处!