Table of Contents
Linux系统命令及Shell实战
1.1.1 系统引导概述
- 加载BIOS(0柱面,0磁道,读取MBR主引导记录)
- 加载GRUB,执行/sbin/init,这个程序根据/etc/inittab来初始化,
- 根据文件的值,设定运行的runlevel级别,,默认的runlevel定义在“id:3:initdefault:”
- 执行/etc/rc.sysinit脚本,初始化系统变量,网络配置,虚拟内存,proc,加载用户定义模块,加载内核设置
- 根据第三步读取的值来执行/etc/rc3.d/下的脚本,如果是5,就执行rc5.d脚本
- 运行/etc/rc.local
- 执行终端或者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有三种用户,普通用户,跟用户,系统用户
- 普通用户:普通用户权限很小,ID从500开始编号
- 系统用户:系统用户是软件运行需要的用户,比如apache和mysql用户,ID范围一般1-499
- 跟用户:跟用户就是root用户,ID是0,对系统有完全控制权限,很危险
- 在linux中每一个用户至少属于一个组,
- pty是虚拟终端,远程终端,tty真实终端
-
/etc/passwd文件内容
- 用户名
- 密码(/etc/shadow中保存)
- UID
- GID
- 说明
- 根目录
- 登录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字节。用来输入输出重定向,把一个命令的输出当作另一个命令的参数
常用命令:
- grep查找
- sort排序(n数字排序,t指定分割符号,k指定第几列,r反向排序)
- uniq去重(-i忽略大小写,-c重复行数)
- cut截取,处理一行文本,(-f指定的列,-d分隔符)
- tr文本转换 tr a-z A-Z 转换大小写
- paste合并文件(带分隔符 paste -d : a.txt b.txt)
- 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)