Linux 复习资料

嘛~又是临开考前一天总结复习资料~但愿能过喵~
顺便,好想住爱丽丝这样的房间~

知识点总结

Linux 系统目录结构

/bin 用户可执行的命令
/sbin 超级用户命令
/dev 设备驱动文件
/proc 内存映射文件
/etc 软件与系统配置
/lib 库文件
/usr 外来软件包
/opt 第三方软件安装目录
/mnt 系统挂载点
/tmp 临时文件夹
/var 日志,邮件
/home 用户主目录
/sys 系统文件

Shell 变量

变量引用

  1. $name name 的值,未设定为空
  2. ${name} 将 name 和其他字符分隔开,避免出现混淆
  3. ${name[n]} name 中第n个元素
  4. ${name[*]} 将 name 扩展成一个字符串,用空格分开
  5. ${name[@]} 将 name 扩展成一个数组
  6. ${name#pattern} 去掉从开始匹配的最少内容
  7. ${name##pattern} 去掉从开始匹配的最多内容
  8. ${name%pattern} 去掉从末尾匹配的最少内容
  9. ${name%%pattern} 去掉从末尾匹配的最多内容
  10. ${#@} $@ 的元素数量
  11. ${#*} $* 的元素数量
  12. ${#name[i]} name 中第 i 个元素的长度
  13. ${#name[*]} ${#name[@]} 均为 name 中元素数量

参数置换变量

  1. var2=${var1:-string} var1 为空时,var2 = string。否则 var2 = var1。
  2. var2=${var1:=string} var1 为空时,var2=var1=string。否则 var2=var1。
  3. var2=${var1:+string} var1为空时,var1=var2=null。否则 var2=string。
  4. var2=${var1:?string} var1为空时,显示 shell脚本名 : var1 : string。否则 var2=var1。

系统变量

  1. $n 第 n 个参数。
  2. $# 命令行参数的个数。
  3. $0 当前程序的名称。
  4. $? 前一个命令或函数的返回码
  5. $* 以”参数1 参数2 … “ 形式保存所有参数
  6. $@ 以”参数1” “参数2” … 形式保存所有参数
  7. $$ 本程序的(进程ID号)PID
  8. $! 上一个命令的PID

环境变量

系统环境变量均为大写

  1. HOME 当前用户目录
  2. MAIL 系统邮箱目录
  3. PATH 系统环境变量
  4. PS1 命令行前缀
  5. PWD 当前目录
  6. SHELL 当前使用的 shell

shell 分支循环

if

if [ 测试条件 ]
then
else
fi

测试条件 [ ] 前后各有一个空格,[[ ]] 用来测试字符串和文件属性。
文件测试运算符

  1. -r|-w|-x filename 文件可读|可写|可执行
  2. -f|-d|-p name 是文件|是目录|是管道
  3. -b|-c name 块设备|字符设备
  4. -s 文件存在并长度大于0

for

for file in m*.c
do
  cat $flie|pr
done

for((j=1;j<=i;j++))
do
  echo $j
done

while

为真时进入循环

while [ 条件 ]
do
done

until

为假时进入循环

until [条件]
do
done

case

case 字符串 in
字符串1)
命令;;
字符串2)
命令;;
esac

文件系统

ext2 包含

  1. 引导块 为介质第一块数据块
  2. 块组1~n

块组包括

  1. 超级块
  2. 块组结构描述 描述块组数据结构
  3. 块位示图 分配或释放数据块时使用
  4. 索引节点位示图 创建删除文件时使用
  5. 索引节点表 索引节点表所占的数据块数
  6. 数据块

超级块

  1. 幻数 确认是 ext2 文件系统的超级块
  2. 修订级别
  3. 安装计数和最大安装数
  4. 块组号码
  5. 数据块大小
  6. 每组数据块个数
  7. 空闲块
  8. 空闲索引节点
  9. 第一个索引节点

系统启动及引导

Linux 系统引导

  1. 主机加电,进行 BIOS 自检,读取 MBR 中的引导程序进行加载
  2. 启动 grub 引导硬盘中的操作系统,加载 Linux 内核
  3. 加载 Linux 内核,内核接管引导程序,启动 init 进程
    • init 可扮演父进程角色
    • 在不同运行级别中启动不同运行脚本
  4. init 主导引导,系统初始化,加载系统服务
  5. 执行 /bin/login 输入用户名及口令

init 进程引导过程

  1. 读取 /etc/inittab 文件和 /etc/init 目录中的文件,根据设置进行初始化
  2. /etc/rc.d/rc.sysinit init 进程执行的第一个脚本,任何级别均会运行,完成激活交换分区检,查磁盘,加载硬件模块以及其他一些需要优先执行的工作。
  3. /etc/rc.d/rc 建立运行级别的运行环境
  4. /etc/rc.d/rcX.d/[KS] , /etc/rc.d/rc 是一个 shell 脚本,如果它接受 5 作为参数,去执行 /etc/rc.d/rc5.d 目录下的所有的启动脚本,这些脚本实际上是链接文件而不是真正的启动脚本在 /etc/rc.d/init.d 目录下。 /etc/rc.d/rc5.d 的脚本都是以 K 或 S 开头的,S 表示启动某些服务,K 表示终止某些服务。
  5. 至于在每个运行级别运行哪些服务,可以通过chkconfig设定。
  6. /etc/rc.d/rc.local 系统中运行级别 2、3、5 都把 /etc/rc.d/rc.local 文件作为初始化脚本中最后一个来运行,所以一般在该文件中存储的是在开机引导中起作用,但在登陆之前起作用的命令。

系统运行级别

  1. runlevel 查看当前运行级别
  2. chkconfig
    • –list name 查看进程不同级别启动情况
    • –level 234 name on|off 关闭或开启某级别某进程自动启动

常用操作

用户管理

useradd

新建用户

  • -s shell
  • -d 用户主目录
  • -g 用户默认组
  • -G 用户附属组
  • -p 密码
  • -u uid
  • -r 系统账户

usermod

修改用户,与 useradd 可用参数相同

  • -l 修改登录名
  • -L 锁定用户
  • -U 解锁用户

userdel

  • -r 同时删除主目录

passwd

修改密码

  • -l 锁定用户
  • -u 解锁用户

gpasswd

维护组与用户关系

  • -a user group 添加用户到某个组
  • -d user group 从某个组删除某个用户
  • -R user group 限制成员访问
  • -A user group 添加管理员

批量新建用户

  1. 新建用户信息文件,与 /etc/passwd 格式相同
  2. newusers < filename
  3. 新建密码文件格式为 用户名:密码
  4. chpasswd < filename
  5. pwconv

检查用户及组信息文件有效性

  1. pwck 检查用户文件有效性
  2. grpck 检查组文件有效性

groupadd

新建组

  • -g GID
  • -p 密码

yum 本地仓库建立

  1. 软件包安装 deltarpm,deltarpm-python,createrepo
  2. 复制 Packages 目录
  3. 编辑 yum 配置
  4. createrepo 创建仓库

/etc/host.conf

order hosts, bind  # 先查找host,再查找服务器
multi on  # 允许单网卡多地址

网络参数设定

# 设置 ip 和子网掩码
ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255

# 设置路由
route  [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]

# 设置DNS
修改 /etc/resolv.conf
nameserver 8.8.8.8

iptables

  • -t [filter]|nat 选择表,默认filter
  • -F 清空表
  • -L 显示规则列表
    • v 详细信息
    • x 禁用 v 的单位转换
    • n 只显示端口号和 ip ,禁止转换成域名或服务名称
  • -A|I INPUT|OUTPUT|FORWARD|POSTROUTING|PREROUTING 添加|插入 规则
  • -D|R INPUT|OUTPUT|FORWARD|POSTROUTING|PREROUTING 删除|替换 规则
  • -p tcp|udp|icmp 使用协议
  • -s|d Ip 源地址|目标地址
  • -i|o 网卡 进入的网卡|输出的网卡
  • –sport|dport port:port 源端口|目标端口
  • -m limit|string|multiport|state|mac 设置 限速|域名|多端口|tcp状态
    • –limit 50k/s 限速
    • –string “www.abc.com" 匹配域名
    • –state NEW|RELATED|ESTABLISHED|INVALID 匹配链接状态
    • –mac-source MAC 匹配 MAC 地址
  • -j ACCEPT|DROP|SNAT|DNAT|MASQUERADE 该规则的动作 允许|阻止|源地址转换|目的地址转换|源地址动态转换

备份与恢复 iptables

iptables-save > filename #备份
iptables-restore < filename #恢复

常用命令

文件操作

  1. cp file newfile
  2. cp file1 file2 dir
  3. cp -r dir dir
  4. mv file newfile
  5. pwd 显示当前目录
  6. chmod 修改文件权限
  7. chown 修改文件所有权
  8. chgrp 修改文件所属组
  9. stat file 文件属性 Access time 使用时间 Modfiy 修改内容时间 Change 修改属性时间
  10. tail|head 查看文件末尾|头
  11. find 位置 -name|user|type 条件 查找 名称|所属用户|类型 符合的文件
  12. grep file 内容 查找文件内容
  13. less|more 分屏查看文件 可向上滚动|向下滚动
  14. wc -l|w|c|m 统计文件 行数|单词数|大小|字符数
  15. touch file 创建文件
  16. diff file1 file2 比较文件不同
  17. cut -b|c|d 按 字节|字符|分隔符 来切割文件行
  18. paste -d 字符 file1 file2 按字符间隔拼接两文件
  19. comm file1 file2 比较两文件出现内容
  20. sort -r file 排序文件内容 -r反向排序
  21. uniq file 删除重复的行
  22. join file1 file2 按列合并 需要排序
  23. colrm 起始列 终止列 删除列