Linux系统命令及Shell实战

发布于 2020-02-03  115 次阅读


Table of Contents

Linux系统命令及Shell实战

1.1.1 系统引导概述

  1. 加载BIOS(0柱面,0磁道,读取MBR主引导记录)
  2. 加载GRUB,执行/sbin/init,这个程序根据/etc/inittab来初始化,
  3. 根据文件的值,设定运行的runlevel级别,,默认的runlevel定义在“id:3:initdefault:”
  4. 执行/etc/rc.sysinit脚本,初始化系统变量,网络配置,虚拟内存,proc,加载用户定义模块,加载内核设置
  5. 根据第三步读取的值来执行/etc/rc3.d/下的脚本,如果是5,就执行rc5.d脚本
  6. 运行/etc/rc.local
  7. 执行终端或者x-window等待用户登录

1.1.2 系统运行级别

  • runlevel级别有7个,0:关机,1:单用户模式,2:多用户模式(无网络),3:完全多用户(服务器),4:保留,5:窗口模式,支持多用户,网络,6:重启。
  • /etc/rcX.d的脚本中,K代表Kill,S代表Start,先启动K打头的,在启动S打头的,按照数字大小运行(小的先运行)
  • 系统磁盘为sata命名规则则为sda,sdb以此类推,分区后的命名规则,第一个sda1,第二个sda2以此类推。
  • hd0代表第一块磁盘,(hd0,0)代表第一块磁盘的第一块分区
  • initrd文件,英文boot loader initialized RAM disk,boot loader用于初始化的内存磁盘,kernel通过读取initrd文件来获得各种可执行文件和设备驱动,来启动真实文件系统。

1.1.3 查看命令使用命令

  • man文件的种类:常见命令说明,可调用的系统,函数库,设备文件,文件格式,游戏说明,杂项,管理员可用命令,与内核相关说明(man -f 命令,可以查看在哪些man中)
  • info 基于菜单的超文本文档

1.1.4Linux用户和用户组

  • linux有三种用户,普通用户,跟用户,系统用户

    1. 普通用户:普通用户权限很小,ID从500开始编号
    2. 系统用户:系统用户是软件运行需要的用户,比如apache和mysql用户,ID范围一般1-499
    3. 跟用户:跟用户就是root用户,ID是0,对系统有完全控制权限,很危险
  • 在linux中每一个用户至少属于一个组,
  • pty是虚拟终端,远程终端,tty真实终端
  • /etc/passwd文件内容

    1. 用户名
    2. 密码(/etc/shadow中保存)
    3. UID
    4. GID
    5. 说明
    6. 根目录
    7. 登录shell
  • 查看用户命令:users,who,w
  • sudo是用其他用户的权限去执行命令(visudo可以检查sudo的语法格式)

1.1.5 例行任务管理

  • 单一时刻执行任务:at
  • 周期性执行任务:crontab (分钟0-59 小时0-23 日期1-31 月份1-12 星期0-6) 参数:e是修改 l是查看 r是删除

1.1.6 文件和目录管理

  • linux 根据FHS(文件系统层次标准),定义了根目录下的主要目录和每个目录应该放什么
  • head(默认前十行) 查看文件 -n 可以显示指定行数,tail用法相同,只不过是后十行
  • 文件目录的权限:

    • 第一列是文类别和权限,
    • 第二列是连接数,文件的是1,目录是当前目录下的目录的数字+2
    • 第三列是文件的所有人
    • 第四列是文件组
    • 第五列是文件大小
    • 第六列是创建时间或者最近修改时间
    • 第七列是文件名
  • 文件隐藏属性,使用lsattr来查看,设置隐藏属性使用chattr

    • a:只能追加,不能删除
    • i:不能写入,更改,删除
  • Chmod命令,改变文件或目录权限,r=4,w=2,x=1
  • chown 更改用户和用户组, chown wangjie:root a.txt 就是更改文件用户为wangjie组为root,单独更改组为:root
  • chgrp:改变用户所属组 ,感觉跟chown差不多
  • umask遮罩,定义目录文件都是被遮罩过的结果,在/etc/profile文件中设置了遮罩(51-55),(遮罩就是自相残杀,权限相同,两两抵消)
  • file查看文件类型
  • 查找命令

    • find 一般查找 常用蚕食

    • locate(数据库检索,linux每天会检索一下文件存入数据库,手动更新用updatedb)
    • which/whereis 查找执行文件的绝对路径,whereis可以连带查找出man文件
  • 压缩命令

    • gzip/gunzip,压缩和解压,默认不用什么参数
    • tar(tar可以整合压缩,所以后缀为.tgz)
    • 命令参数含义 -z是gzip,-c是创建压缩文件,-x是解压文件,-v是显示当前压缩文件,-f是使用文件名
    • bzip2是用-z压缩,-d解压缩,后缀为.bz2
    • cpio是结合find用来备份文件

1.1.7Linux文件系统

最早的文件系统是minix,存在局限,比如文件名仅支持14字符,最大64MB大小,所以引入ext2

ext2文件系统对于每一个文件或者目录,都有对应的inode对应。缺陷不支持日志,容易丢失数据

ext3文件系统支持了日志功能(方便对文件系统修复)

MBR大小为521字节,分区表占64字节,分区信息使用16字节,所以一块磁盘只能支持四个主分区,为了支持更多分区,使用扩展分区。

  • fdisk 创建文件系统
  • mkfs.ext3格式化分区
  • mount磁盘挂载
  • /etc/fstab自动挂载,参数依次为 挂载文件 挂载到目录 文件系统,使用默认挂载参数,是否用dump备份,启动时是否fsck(1保留给根分区,2其他分区使用,0不检查)
  • fsck和badblocks修复逻辑错误,检查磁盘时候,是未挂载状态

1.1.8Linux逻辑卷 针对前期分配内存不够

https://blog.csdn.net/dyushuo6230/article/details/50441428

使用逻辑卷组管理创建出来的设备

  • 物理卷PV,物理磁盘分区
  • 卷组,PV的集合
  • 逻辑卷:PV中划分出来的逻辑磁盘

1.1.9硬链接和软连接

硬链接:通过索引节点进行连接,允许一个文件有多个有效路径名,删除一个并不影响其他,除非删除最后一个节点。不允许给目录创建硬链接,必须再同一个分区才能创建硬链接。(有一个数字会变化,代表硬连接数)

软连接:可以指向任意文件或者目录,可以跨文件系统,创建软连接使用参数-s

1.2.0管道

固定大小的缓存区,大小为一页,4k字节。用来输入输出重定向,把一个命令的输出当作另一个命令的参数

常用命令:

  1. grep查找
  2. sort排序(n数字排序,t指定分割符号,k指定第几列,r反向排序)
  3. uniq去重(-i忽略大小写,-c重复行数)
  4. cut截取,处理一行文本,(-f指定的列,-d分隔符)
  5. tr文本转换 tr a-z A-Z 转换大小写
  6. paste合并文件(带分隔符 paste -d : a.txt b.txt)
  7. split 分割文件,按行分割 -l,按大小分割 -b 64M

网络管理

ipconfig命令查看

  • eth是以太网第一块网卡,eth是ethernet的缩写,第二块就是eht1,以此类推
  • Link encap是封装方式:以太网
  • HWaddr是MAC地址
  • inet addr 是网卡当前ip地址
  • broadcast是广播地址
  • Mask是掩码
  • up是说明当前网卡是激活状态 down是关闭状态 ,可以ipconfig eth down
  • MTU代表最大存储单元
  • RX和TX是接受和发送的包

ip文件配置信息

/etc/sysconfig/network-scripts/目录下,ifcfg-eth0是第一块网卡

进程管理

进程分为三个状态:运行态,就绪态,阻塞态

进程之间存在互斥和同步的关系,互斥是不能同时运行,同步是通过通信方式实现信息交互

  • ps
    • -A列出所有进程,和-e差不多
    • -a 列出不和本终端有关的进程
    • -w 显示较多的信息
    • -u显示有效使用者相关进程
    • ps aux命令说明(ps是进程一瞬间的状态)
    • User:进程拥有者,

    • PID;pid,

    • %cpu:占用cpu,
    • MEM:占内存使用率,

    • VSZ:站虚拟内存,

    • RSS:占内存大小,

    • TTY:终端运行号码,

    • STAT进程状态(D不可中断,R运行,S休眠,R暂停,Z僵尸进程,W没有足够内存,#<高优先级,#N,低优先级)

    • Top是进程的动态展现
    • Kill 信号1代表重启 ,信号-9是强行重启(可能会内存泄漏),信号15比较温和,正常退出
    • Killall可以根据进程名来结束进程
    • lsof(list open files)列出当前系统所有打开文件的工具
    • 常用参数列表
    • lsof filename 显示指定文件所有进程
    • lsof-c string 显示command包含指定字符串的进程打开的文件
    • lsof-u username 显示user进程打开的文件
    • lsof-g gid 显示归属于gid进程打开的文件
    • lsof +d 显示目录下打开的文件
    • lsof +D 跟上面一样,递归文件夹
    • lsof +FD 显示指定文件描述进程
    • lsof-n 不转换ip为hostname
    • lsof-i 用以显示符合条件的进程
    • lsof-i[][protocol][@hostname][hostaddr][:server(server服务名称)|port]
    • 进程优先级调整nice和renice(TOP命令中的NI)默认nice是0,普通用户可以设置0-19()优先级=优先级+nice优先级,nice用于启动,renice用于重新设定(-p设置pid)