拾遗:基础知识回顾-01


 SECTION A


Aa、禁用ctrl alt delete三键重启:注释掉/etc/inittab中的如下部分

# What to do at the "Three Finger Salute".
#ca:12345:ctrlaltdel:/sbin/shutdown -r now

Ab、vim直接全篇搜索光标所在单词

  • 快捷键 shift #

Ac、bash数组删除元素或整个数组

  • unset ARRAY[N]
  • unset ARRAY

Ad、获取帮助信息的渠道

  • whatis(首次运行需mandb或makewhatis):显示命令或文档的man手册简介,等价于执行man -f
  • COMMAND --help:外部命令专用
  • man / info
  • help COMMAND:内部命令专用
  • 程序自身文档:INSTALL、README、ChangeLog等
  • redhat知识库:https://access.redhat.com

Ae、显示日历:cal

Af、date -u/--utc显示世界时间(格林尼治时间)

Ag、man手册

配置文件:/etc/man.conf 或 /etc/man_db.conf

临时指定man目录:man -M dir COMMAND

man章节:1-用户命令,2-系统调用,3-C库调用,4-设备文件及特殊文件,5-配置文件格式,6-游戏,7-杂项,8-管理类命令,9-Linux内核API

man -a:顺序查看全部章节

Ah、大小写是否敏感是由文件系统决定的,非操作系统,如fat文件系统在Linux上是不区分大小写的

Ai、文件系统分层结构:LSB——Linux Standard Base,FHS——Filesystem Hierarchy Standard

Aj、包括path name在内的文件名全长不能超过4095个bit,两个/之间的字符长度不能超过255个bit

Ak、block device是随机访问,character device是线性顺序访问

Al、/usr目录:universal shared&readonly data

  • /usr/include:C头文件存放目录
  • /usr/share:结构化独立数据,如man、doc、fonts等
  • /usr/local:用户自行编译的包的推荐安装目录

Am、/var目录:variable data files

  • /var/cache:应用程序缓存数据目录
  • /var/lib:应用程序状态数据目录
  • /var/local:专用于为/usr/local目录的程序存储可变数据
  • /var/lock:锁文件
  • /var/log:日志
  • /var/opt:第三方软件可变数据
  • /var/run:运行中进程相关数据,常用存储进程pid文件
  • /var/spool:应用程序数据池,如用户的crontab文件
  • /var/tmp:保存系统两次重启之间产生的临时数据

An、/proc、/sys、/selinux

  • /proc:内核与进程信息相关的虚拟文件系统
  • /sys:硬件设备相关的虚似文件系统
  • /selinux:selinux相关安全策略存储位置,security enhanced Linux

Ao、CWD、pwd

  • CWD:current work directory
  • pwd:printing working directory
  • $PWD:当前工作路径
  • $OLDPWD:上一次所在路径

Ap、预定义字符类:实际应用中需再加一层中括号如——[[:punct:]]

  • [:space:]:空白字符,包括空格、横竖制表符、换页符等
  • [:lower:]:小写字母
  • [:upper:]:大写字母
  • [:alpha:]:大小写字母
  • [:alnum:]:大小家字母和数字
  • [:punct:]:标点符号

Aq、touch

  • touch --reference=file:以另一个文件的mtime更新
  • touch -t:格式 [[CC]YY]MMDDhhmm[.ss]
  • touch -c:如果文件存在,则更新时间戳;若不存在,不创建文件(默认将创建新的空文件)

Ar、cp

  • cp -d:复制软链接,而非其指向的实际文件
  • cp -a:还当于cp -d -r --preserv=all,即递归复制并尽可能保留所有属性不变

As、alias

  • alias [-p]:显示所有已定义的别名
  • unalias NAME:临时使别名失效,-a选项临时清除所有别名
  • \COMMAND:不使用别名

At、tree:显示目录及文件结构

  • tree PATH -L 1 -d:仅显示PATH路径的目录结构,显示深度1层

Au、inode:index node

  • 索引节点是一个表项,包含文件的元数据——文件类型、权限、gid、uid等,即stat命令显示的内容
  • 文件名称是inode的外壳(wrapper),同一个inode可对为多个文件名称,指向同一inode的文件名称互为硬链接
  • rm文件实质是回收文件占用的inode,数据并非即时清空
  • 同一磁盘分区内的mv操作,实质是更改wrapper,并无实际的数据移动

Av、打开的文件都有一个fd:file descriptor(文件描述符)

Aw、安全相关:3A

  • Authentication:认证
  • Authorization:授权
  • Accouting|Audition:审计

Ax、用户安全相关

  • token:令牌
  • identity:身份

Ay、uid

  • root:0
  • 其它:1-65535

Az、pwck&grpck:检查passwd、group、shadow、gshadow等文件的正确性


 SECTION B


Ba、用户及组密码相关文件的默认属性

  • 配置文件:/etc/login.defs 

Bb、su ROOT -c COMMAND:临时以root身份运行命令,不切换身份

Bc、passwd -e:强制用户下次登陆时修改密码

Bd、attr

  • chattr +i:文件或目录内容完全不可修可
  • chattr +a:文件或目录只可追加不可修改
  • lsattr:查看文件的attr权限
  • lsattr -d查看目录的attr权限

Be、acl

  • setfacl -k dir:清除目录默认acl权限
  • setfacl -b dir/file:清除全部acl权限
  • setfacl --set-file=otherfile file:复制其它文件的acl权限

Bf、cut、paste

  • cut -d ':' -f 3,5,6-7:以冒号为分割符切出3、5、6、7行
  • paste -d ':' file1 file2...: 以冒号为分割符纵向合并多个文件
  • paste -s file1 file2:相当于去掉所有换行符之后,再cat file1 file2

Bg、wc

  • wc -l:行数;wc -w:单词数;wc -m:字符数;wc -c:字节数

Bh、sort、uniq、diff

  • -t 指定分割符;-k 指定以第几列为标准进行排序;-n 以数字顺序排序;-r反向排序
  • uniq -c 显示每行重复的次数(连续且完全相同方为重复,故必须在排序后使用)
  • diff -ur 比较两个文件的不同之处

Bi、grep

  • grep PARTTERN -A 2:显示匹配到的行与这行之后的2行
  • grep PARTTERN -B 3:显示匹配到的行与这行之前的3行
  • grep PARTTERN -C 4:显示匹配到的行与这行前后各4行

Bj、sed:默认对全文中每行的第一个匹配项进行操作

  • sed -e:用-e连接,在一行中同时执行多个操作
  • sed -r:支持扩展正则表达式
  • sed -f file:从指定文件中读取匹配条件

Bk、vim

  • vim -d file1 file2 file3...:比较多个文件
  • 命令模式下——r file读取文件到光标所在行之后,w file将当前编辑的文件另存为file,r! COMMAND将命令输出插入到光标行之后,!叹号可用于在vim内执行前显示命令结果
  • H跳至当前视图的页首
  • L跳至当前视图的页尾
  • M跳至当前视图的页中
  • #G跳转至#行,#指输入的代表行号的数字
  • ~转换光标所在位置字符为大写或小写
  • r用新输入的字符替换光标所在位置字符
  • R转换为replace模式,可连续替换
  • D从光标处删除至行尾
  • d0从光标处删除至行尾

Bl、BASH

  • 不支持浮点数
  • 显示已定义的所有变量set
  • 显示所有环境变量export、env、printenv
  • 删除变量unset NAME
  • 算术let VAR=或VAR=$[]或VAR=$(())
  • 生成随机数变量$RANDOM
  • 小括号(COMMAND)内的命令在子shell中执行
  • -s是否存在且非空
  • -e是否存在
  • -z是否为空
  • -n是否非空
  • 双目测试:file1 -ef file2,指file1和file2是否指向同一inode;-nt -ot指file1是否比file2新或旧,指modify时间
  • read -p 'Please xxxx: ' VAR显示提示信息并把用户的输入赋值给变量VAR
  • 函数中返回执行状态值(0或非零),用return而不是exit
  • 函数可以跟脚本一样接受$n形式的位置参数
  • ${#VAR[@]}显示数组元素数量
  • ${VAR[@]}显示数组所有元素
  • ${VAR[N]}显示第N个元素,N可以为负数
  • VAR=(${VAR[@]} "aa" "bb" "cc")向数组中追加元素
  • VAR[N]="xxx"替换数组中已经存在值
  • declare -a声明数组
  • declare -A声明关联数组,类似于Python中的dict
  • declare -i声明变量为整数型
  • declare -x导出变量为全局变量(环境变量)
  • declare -r声明变量为只读变量(常量)
  • 间接引用变量eval VAR1=\$$VAR2 或 VAR1=${!VAR2}

Bm、创建不冲突的临时文件或临时目录

  • mktemp [-d] [--tmpdir=DIR] *.XXX 其中-d指创建目录,--tmpdir=DIR指在哪个目录下创建,X至少要出现3次

Bn、install命令:类似于cp,但可同时赋予权限、属主、属组等属性

install -m 700 -o fanhui -g fanhui file1 file2:将file1复制为file2,同时改变其权限为700,属主和属组均为fanhui,-m选项默认的权限为755

Bo、~/.bash_logout

  • 用于书写用户退出时需要执行的命令 

Bp、locate

  • locate --regex 支持扩展正则搜索
  • locate -n N只列出前N个匹配项

Bq、cpio:通过stdin、stdout重定向进行压缩和解压的工具

#压缩
z f # ls te* | cpio -ov > test.cpio
te
tes
test
1 block
#解压
z f # cpio -idv < test.cpio 
te
tes
test
test.cpio
1 block
#查看
z f # cpio -tv < test.cpio 
-rw-r--r--   1 root     root           34 Aug 25 19:23 te
-rw-r--r--   1 root     root           24 Aug 25 19:20 tes
-rw-r--r--   1 root     root           26 Aug 25 19:24 test
-rw-r--r--   1 root     root            0 Aug 25 21:14 test.cpio
1 block

Br、硬盘存储术语

  • head磁头
  • track磁道
  • cylinder柱面
  • sector扇区

Bs、磁盘分区的意义

  • 优化i/o性能
  • 实现磁盘空间配额
  • 提高修复速度
  • 隔离系统和程序
  • 安装多个OS

Bt、MBR&GPT

  • MBR:master boot record,即整个磁盘的0磁道0扇区,其中前446bytes用于存储boot loader,后64bytes用于存储分区表,最后2bytes值为55AA 
  • GPT:GUID partition table,可以直接划分128个分区,使用128位的UUID表示磁盘和分区,分区表自动备份在头尾各一份,并有CRC校验位

Bu、partprobe、partx:刷新内存中的分区表

  • CentOS5、CentOS7中,直接执行partprobe即可
  • CentOS6中,须用partx替代,partx -a -n M,N /dev/sd*,partx -d -n M,N /dev/sd*

Bv、mke2fs、tune2fs、dumpe2fs、e2label、fsck、e2fsck、blkid

  • mke2fs -t ext4 -b 4096 -L "xxx" -m 4 /dev/sd* ext系列文件系统专用的格式化工具
  • blkid -U "uuid" 或 -L "Label"  根据指定的uuid或Label来查找设备
  • e2label /dev/sd* [Label] 显示及更改磁盘标签
  • tune2fs -l 显示指定文件系统的super block信息
  • tune2fs -m -O -o -U -L 分别用于修改预留空间、开启或关闭文件系统特性(特性前加^表示禁用)、设定默认的挂载选项(同O,^表示禁用)、修改uuid、修改Label
  • dumpe2fs -h 显示更加详细的super block分组信息
  • fsck -a 自动修复-r 交互式修复
  • e2fsck -y 自动修复 -f 强制修复

Bw、mount、swap

  • mount -L -U -t --bind --rbind --make-rslave [-o ro,rw,noexec...]
  • swapon -a 激活所有交换分区或文件
  • swapon swapoff 开启或关闭特定swap

Bx、fuser、lsof

  • fuser -v 或lsof MOUNT_POINT 显示正在访问指定文件系统的进程
  • fuser -km MOUNT_POINT 终止所有正在访问指定文件系统的进程

By、dd命令

  • dd if= of= bs=(单位bytes、M等) [ibs= obs=] skip=(N个ibs块或bs块) seek=(N个obs块或bs块) count=(复制N个bs块)
  • dd支持输入、输出重定向,可用于磁盘备份和恢复:
dd if=/path/to/image of=/dev/sdx
gzip -dc /path/to/image.gz | dd of=/dev/sdx

Bz、df、free、du

  • df -Th
  • free -M
  • du -sh

 SECTION C


Ca、vim 自定义快捷键(map)

  • 例如:在/etc/vim/vimrc中定义ctrl+p组合键,用于在绝对行首添加#
  • map ctrl+v+p 0i#<ESC>
  • 注1:ctrl+v+p指连续按出ctrl、v、p三键,声明要定义的快捷键为ctrl+p
  • 注2:0i#<ESC>定义快捷键的意义,即依次输入0、i、#、<ESC>四部分

Cb、ps

  • a: list all processes with a terminal (tty)
  • x: list all processes when used together with the a option
  • o: 用于自定义要显示的数据列,如pid、command、state、time等,可用“,”组合多个选项
  • root # ps axo pid,command,state | head
      PID COMMAND                     S
        1 /usr/lib64/systemd/systemd  S
        2 [kthreadd]                  S
        3 [ksoftirqd/0]               S
        5 [kworker/0:0H]              S
        6 [kworker/u16:0]             S
        7 [rcu_sched]                 S
        8 [rcu_bh]                    S
        9 [migration/0]               S
       10 [migration/1]               S 

Cc、grep -m NUM:Stop reading a file after NUM matching lines

  • equal as:--max-count=NUM

Cd、ping -f -s 1499 HOST

  • -f: flood泛洪模式,极尽本机性能向HOST机发送packet
  • -s: Specifies the number of data bytes to be sent. The default is 56, which translates into 64 ICMP data bytes when combined with the 8 bytes of ICMP header data

Ce、swapon -a/swapoff -a

  • 启用或关闭所有swap分区或文件 

Cd、www.example.com真正的域名是www.example.com.root,简写为www.example.com.。因为,根域名.root对于所有域名都是一样的,所以平时是省略的

  • 根域名的下一级,叫做"顶级域名"(top-level domain,缩写为TLD),比如.com.net
  • 再下一级叫做"次级域名"(second-level domain,缩写为SLD),比如www.example.com里面的.example,这一级域名是用户可以注册的
  • 再下一级是主机名(host),比如www.example.com里面的www,又称为"三级域名",这是用户在自己的域里面为服务器分配的名称,是用户可以任意分配的
  • 域名的层级结构:host.sld.tld.root(主机名.二级域名.顶级域名.根域名)
posted @ 2011-08-25 12:24  范辉  阅读(313)  评论(0编辑  收藏  举报