拾遗:基础知识回顾-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(主机名.二级域名.顶级域名.根域名)