[关闭]
@mritd 2016-06-23T07:01:43.000000Z 字数 12496 阅读 1956

Linux 笔记

Linux


一、基础

1、基础命令

返回值 终端类型
/dev/pst/# 伪终端
/dev/tty# 虚拟终端
/dev/console 物理终端
/dev/ttys# 串行终端

2、Linux 哲学

3、bash 特性

3.1、引用

3.2、命令行展开

3.3、命令历史

bash 默认保存以前执行过的命令,使用 history 命令查看,默认保存1000行在 ~/.bash_history 中。

3.4、命令别名

使用 alias 命令可显示系统上所有创建的别名。
在命令前加反斜杠代表使用命令本身,如 \ls
使用 alias 命令别名='原始命令' 定义命令别名。
使用 unalias 命令别名 撤销一个命令的别名。

3.5、globbing 文件名通配符

3.6、bash 快捷键

3.7、bash 补全

3.8、bash 变量

4、FHS 文件目录层级标准

目录 功能
/boot 系统启动文件以及grub(引导加载器bootloader)、vmlinuz(内核)、initrd(完整的小Linux系统)、ramfs文件
/dev 设备文件:块设备(随机访问无顺序)、字符设备(线性访问有顺序)、设备号(主设备号(major)和次设备号(minor))
/etc 配置文件
/etc/sysconfig 系统级别的软件配置
/etc/init.d 系统运行级别脚本
/home 普通用户家目录
/lib 库文件和内核模块文件(.a 静态库、.so 动态库)
/lost+found 存储断电等情况造成的尚未保存的文件
/media 挂载移动设备目录
/mnt 挂载硬盘等设备目录
/misc 杂项
/opt 早起安装第三方软件目录
/proc 伪文件系统,默认是空,系统启动后则不为空,存放内核映射文件,一般为内核可调参数、内核工作数据;主要用于内核调优
/sys 伪文件系统;硬件设备相关属性 映射文件 比如修改磁盘I/O调度
/srv 为服务提供数据存储位置
/tmp 临时文件 任何人都可以在里面创建文件 但只能删除自己的 drwxrwxrwt
/var 可变化文件
/bin 二进制可执行文件(任意用户可执行)
/sbin 管理员二进制可执行程序
/usr shared read-only 全局共享只读文件
/usr/include 头文件,编译安装软件时会使用
/usr/bin 全局只读共享二进制程序
/usr/sbin 全局只读共享管理员二进制程序
/usr/local 第三方软件安装目录
/usr/local/bin 第三方软件二进制可执行文件
/usr/local/sbin 第三方软件管理员命令
/usr/local/lib 第三方软件库文件

5、Linux 文件类型

5.1、Linux 文件类型

5.2、Linux 时间戳

6、用户管理

6.1、用户类别

6.2、相关配置文件

6.3、创建用户及用户组

6.5、删除用户及用户组

6.6、用户修改

7、管道与重定向

7.1、输入重定向

  1. cat << EOF
  2. 1test1
  3. 2test2
  4. 3test4
  5. 4test4
  6. EOF

7.2、输出重定向

7.3、管道

二、bash 编程

1、基础语法

1.1、列表生成

1.2、for 循环

  1. for varName in arry;do
  2. somrthing
  3. done

1.3、bash 算术运算

bash 支持常见的算术运算,如 +、-、*、/、++、--、% 等,但是 bash / 运算时进行圆整操作,不会产生小数。

1.4、位置变量

2、grep 与 正则

grep 用于根据 指定的模式 在文本中搜索内容,其语法如下:

  1. grep [选项]... PATTERN [FILE]...

2.1、基本正则表达式

默认的 grep 正则工作在贪婪模式下,即尽可能多的匹配更多的字符。

2.2、扩展正则表达式

3、bash 条件判断

3.1、bash 测试

bash 中使用如下格式进行测试

  1. test EXPRESSION
  2. [ EXPRESSION ]
  3. [[ EXPREXXION ]]

3.2、bash 判断

bash 一般有以下3种判断

3.2.1、单分支判断
  1. if 条件测试; then
  2. 分支语句
  3. fi
3.2.2、双分支判断
  1. if 条件测试; then
  2. 分支语句1
  3. else
  4. 分支语句2
  5. fi
3.2.3、多分支判断
  1. if 条件测试1; then
  2. 分支语句1
  3. elif 条件测试2; then
  4. 分支语句2
  5. elif 条件测试3; then
  6. 分支语句3
  7. ...
  8. else
  9. 分支语句n
  10. fi

3.3、整数测试

整数测试为二元表达式,其格式大致为 [ num1 OPRAND num2 ],基本操作如下

3.4、字符测试

注意,测试时操作符两边要有空格,如 [ "str1" == "str2" ]

3.5、文件测试

-e-a : 测试文件是否存在,如果存在则返回 true
-f : 测试文件是否存在并且为普通文件
-d : 测试文件是否存在并且为目录文件
-b : 测试文件是否存在并且为块设备
-c : 测试文件是否存在并且为字符设备文件
-h-L : 测试文件是否存在并且为符号链接文件
-p : 测试文件是否存在并且为管道文件
-r : 测试文件是否存在并且对当前用户具有读权限
-w : 测试文件是否存在并且对当前用户具有写权限
-x : 测试文件是否存在并且对当前用户具有执行权限
-S : 测试文件是否存在并且为套接字文件
-s : 测试文件是否存在并且文件不为空
file1 -nt file2 : 测试 file1 是否比 file2 更新(最近修改时间)
file1 -ot file2 : 测试 file1 是否比 file2 更老(最近修改时间)
file1 -ef file2 : 测试 file1 和 file2 是否是相同的设备以及 inode 是否相同

3.6、脚本自定义退出

3.6.1、脚本退出状态码

默认 bash 脚本执行完成后,使用 $? 获取脚本执行状态码,其中 0 表示成功,1~255 表示失败。

3.6.2、自定义退出状态码

bash 中使用 exit NUM 命令自定义脚本的退出状态码,如果不指定,那么 bash 默认采用最后一条命令的执行状态作为整个脚本执行状态码;也就是说不论前面的命令执行是否失败,只返回最后一条命令的执行状态码。

3.7、shift

shift : 位置参数轮替

shift 用于动态替换位置参数,如下所示,当该脚本有多个参数是,使用 shift 将自动替换 $1 为后面的参数,类似于 java 的迭代器

  1. #!/bin/bash
  2. sum=0
  3. for i in `seq 1 $#`;do
  4. let sum+=$1
  5. shift
  6. done
  7. echo $sum

3.8、while 循环

语法格式 :

  1. while 条件测试; do
  2. 循环体
  3. done

三、磁盘管理

1、文件系统

2、MBR(Master Boot Record)

MBR(Master Boot Record) 被称为主引导记录,通常存放与磁盘的第0个扇区,其保存着磁盘分区、引导信息。

通常 MBR 为 512 byte,其中 bootloader(引导加载器) 占用 446 byte,剩下的每16个字节引导一个分区,2个字节被填充了2个5A,称之为MBR有效性标记,所以 MBR 分区表状态下的磁盘最多有 4 个主分区。

3、硬盘接口

4、常用命令

一般 CentOS6 后两个命令有时不生效,所以规律是按照以下执行可能会生效,实在不行重启...

  1. kpartx -l /dev/sda
  2. kpartx -af /dev/sda
  3. partx -a /dev/sda

5、磁盘挂载

6、开机自动挂载

待挂载设备 挂载点 文件系统格式 挂载参数 转储频率 自检顺序
proc /proc proc defaults 0 0
/dev/mapper/vg0-usr /usr ext4 defaults 1 2

7、交换分区

交换分区用于在系统内存不够用时将其转储到硬盘,在 /proc/sys/vm/swapiness 文件中有其使用倾向定义;一般当物理内存小于 2G 通常设置为 2*物理内存,2~4G 设置为4G,当大于4G时署名服务器对性能要求很高,基本没有什么要求

8、软链接与硬链接

硬链接 : 硬链接实质上是对同一分区上多个路径指向了同一 inode 的文件,硬链接不可跨分区,目录无法创建硬链接。

软链接 : 软链接实质上与源文件是两个文件,且 inode 不同,但是软连接文件的 inode 中会存储源文件的路径信息,可跨分区,可对目录创建。

9、压缩工具

10、归档工具

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注