第一章:Linux 概述
- Linux 诞生:1991 年,芬兰大学生 李纳斯(linux torvalds)和众多爱好者共同完成。
- Linux 开源软件三大自由优点:使用自由、研究自由、传播自由。
- Linux 应用邻域:个人桌面、IT 服务器、嵌入式程序、娱乐电影。
- Linux apache mysql php
第二章:Linux 系统安装
内容:介绍 VMware 软件的使用,安装 Linux 系统。
密码特性:复杂性,易记忆性,时效性
第三章:Linux 分区(分区、格式化,起设备名、写挂载点)
- 分区定义:分区(fdisk)是将一个硬盘驱动器分成若干个逻辑驱动器,分区是把硬盘连续的区块当做一个独立的磁硬使用。分区表是一个硬盘分区的索引, 分区的信息都会写进分区表。
-
分区类型:
- 磁盘的分区主要分为 主分区 和扩展分区。主分区(用 1234),拓展分区(逻辑分区只能从 5 开始)
- 主分区和扩展分区的数目之和不能大于四个。且主分区可以马上被使用但不能再分区。
- 扩展分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区,二次分区我们叫逻辑分区。
- 分区格式化:格式化(mkfs、mke2fs)又称逻辑格式化, 它是指根据用户选定的文件系统 (EXT3,EXT4(centos 默认) 等),在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间。
-
硬件设备文件名:(dev:存放硬件设备)
- IDE 硬盘:/dev/hd[a-d]
- SCSI/SATA/USB 硬盘:/dev/sd[a-p]
- U 盘:/dev/sd[a-p](与 SATA 相同)
- 软驱:/dev/fd[0-1]
- 打印机:25 针:/dev/lp[0-2] & USB:/dev/usb/lp[0-15]
- 鼠标:USB:/dev/usb/mouse[0-15] & PS2:/dev/psaux
- 当前 CD ROM/DVD ROM:/dev/cdrom
- 当前鼠标:/dev/mouse
- 磁带机:IDE:/dev/ht0 & SCSI:/dev/st0
-
分区设备文件名:
-
/dev/hda1:IDE 硬盘接口,a(第一块硬盘,b 代表第二块,以此类推),数字 1 代表第一个分区。
/dev/sda1:SCSI 硬盘接口、SATA 硬盘接口,sd 表示(SCSI/SATA)硬盘接口
思考题为什么没有 3,4?这是对是错?主分区(用 1234),拓展分区(逻辑分区只能从 5 开始)
-
/dev/hda1:IDE 硬盘接口,a(第一块硬盘,b 代表第二块,以此类推),数字 1 代表第一个分区。
-
分配盘符:
-
推荐分区:
- /boot(启动分区,200MB)
-
必须分区:
- /(根分区)
- swap 分区(虚拟内存,交换分区,内存 2 倍。不超过 2GB)
-
-
文件系统结构:
目录 描述 / 最顶层目录,即根目录。 /bin 存放用户可执行文件。 /boot 存放引导 Linux 计算机所需的静态引导加载程序、内核可执行文件和配置文件。 /dev 存放硬件设备文件。 /etc 存放主机的本地系统配置文件。 /home 存放用户个人文件。每个用户都在 /home 目录下会有一个子目录。 /lib 存放共享库文件。 /media 可移动设备的临时目录,如 U 盘、光驱。 /mnt 系统提供这个目录让用户临时挂载其他的文件系统。 /opt 可选的附加应用程序。 /root root 用户的主目录。 /sbin 系统二进制文件。这些是用于系统管理的可执行文件。 /tmp 临时目录。用于操作系统和许多程序来存储临时文件。用户也可以临时存储文件。请注意,此处存储的文件可能在任何时间被删除,而无需事先通知。 /usr 可共享的只读文件,包括可执行的二进制文件和库、man 文件和其他类型的文档。 /var 变量数据文件存储在这里。这可以包括日志文件、MySQL 和其他数据库文件、web 服务器数据文件、电子邮件收件箱等等。 -
Linux 的文件类型主要有:
- (-)普通文件,分为纯文本和二进制。
- (d)目录文件,存储文件的地方。
- (l)链接文件,指向同一个文件或目录的文件。
- (b,c)设备文件,分为块设备和字符设备。
- (p)管道文件,提供进程间通信
- (s)套接字文件,与网络通信有关
第四章:常用命令
- 常用命令格式:命令 [- 选项] [参数] 如:ls -a /etc
-
读写权限信息:一个长度为 10 的字符串 j
-rw-r–r– 1 root root 0 3 月 26 19:11 readme.txt
共显示了七列信息,从左至右依次为:权限、文件数、归属用户、归属群组、文件大小、最后修改日期、文件名称
- 权限第一部分(指第一个位置):告诉我们这个文件的类型
- 权限第二部分(剩余的九个位置):可以分成三块 rw-(所有者:u)r–(所属组:g)r–(其他人:o),其中 r 表示读权限,w 表示写权限,x 表示执行权限,- 表示相应的权限还没有被授予。
- 文件大小:1byte(字节 B)=8bit(比特 b)= 8 个二进制位 1kb=1024byte
-
目录处理命令:
- cd:切换目录。
- mkdir:创建新目录。- p 递归创建 mkdir -p /a/b/c、- m 设置文件的权限 mkdir -m 700 mytext、创建同级目录 mkdir a b c
- pwd:显示当前目录。
- rmdir:删除空目录。
- cp:复制文件或目录。- p 复制内容外,还会复制修改时间和访问权限 - r 复制该目录下所有的子目录和文件
- rm:删除文件。- i 删除前询问 - f 强制删除文件或目录 - r 递归删除 rm -rf 目录 删除非空目录
- 清屏操作:clear
第五章:远程登录、权限管理、vim
-
网络连接基础:
- ping:测试网络连通性。
- ifconfig:查看网络设置信息。- a 显示所有网卡信息
- shutdown:关机。shutdown -h now
- reboot:重启。
- service network restart:重启网络连接
- 远程工具使用:xshell、secureCRT
-
文件处理命令:
- touch:创建空文件
- cat:显示文件内容。- n 编号 - b 编号但不对空白行编号
- moreless:分页显示文件内容。空格键 翻页,回车键 换行,q 键 退出
-
权限管理命令:
- chmod:改变文件或目录的权限。- R 递归修改
r–4 w–2 x–1
-rw——- (600) 只有所有者才有读和写的权限
-rw-r–r– (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
-rwx—— (700) 只有所有者才有读,写,执行的权限
-rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
-rwx–x–x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
-rw-rw-rw- (666) 每个人都有读写的权限
-rwxrwxrwx (777) 每个人都有读写和执行的权限
- chown:改变文件或目录的所有者。
- chgrp:改变文件或目录的所属组。
- umask:显示、设置文件的缺省权限。
- find:文件搜索。
- write:给用户发信息,以 Crtl+ D 保存结束。
- wall:发广播信息。
- mail:查看发送电子邮件。
- last:列出目前与过去登入系统的用户信息。
- netstat:显示网络信息。-t TCP 协议、-u UDP 协议、-l 监听、-r 路由、-n 显示 IP 地址和端口号。
- setup:配置网络。
- chmod:改变文件或目录的权限。- R 递归修改
-
vim 文本编辑器:
- 安装:sudo apt-get install vim
- 启动:输入“vi 文件名”或者“vim 文件名”即可启动 Vim 编辑器,默认进入命令模式。
- 个人使用:i,a,o 键 — 输入模式 esc 键 — 退出输入模式切换到命令模式 “:q!” 不保存退出 “:wq” 保存并退出
- 显示行号::set nu,取消行号::set nonu
第六章:软件安装
- 软件包分类:源码包和二进制包(RPM 包、系统默认包)
-
rpm 包依赖性:
- 树形依赖:a->b->c
- 环形依赖:a->b->c->a
- 模块依赖
-
常用 yum 命令:
- yum list:查询可用的软件包列表。
- yum search 关键字:搜索服务器上所有相关包。
- yum -y install 包名 自动回答 yes 安装
- yum -y update 包名 自动回答 yes 升级
- yum -y remove 包名 自动回答 yes 卸载
- 指定位置解压:tar -zxvf 软件全名称 -C 目录
- 查看当前安装文件大小:du -sh
第七章:用户和用户组
-
/etc/passwd
wyh:X:1000:1000:wyh,,,:/home/wyh:/bin/bash
共七个字段 含义 第一个字段 用户名 第二个字段 密码标识 第三个字段 用户标识号(UID)超级用户(0)系统用户(1-499)普通用户(500-65535) 第四个字段 组标识号(GID) 第五个字段 用户说明 第六个字段 家目录 第七个字段 登录之后的 shell -
/etc/shadow
wyh:$6$KVZ3uJM/$j6isnf4dXhY4Gr5Y.OFghFsIqqDiUZ/dmAtAYlIAg0BixQ6QPKG5BtNbws3j9m0H
xMzSQ0T0LvbaT/R2GEAAy0:18322:0:99999:7:::sshd:*:18331:0:99999:7:::
共九个字段 含义 1 用户名 2 加密的密码。若是 ”*”、”!!”,星号代表帐号锁定,双叹号表示密码过期。$6$ 开头表明是用 SHA-512,$1$ 表明是用 MD5、$2$ 是用 Blowfish、$5$ 是用 SHA-256 加密的。 3 密码最后一次修改日期。表明上一次修改密码的日期与 1970-1- 1 相距的天数。8 即八天不能更改,0 即随时可改。 4 密码最小修改间隔时间。99999 则永远不用改。12345,必须在距离 1970-1- 1 的 12345 天内修改密码,否则密码失效 5 密码的有效期 6 密码需要变更前的警告天数 7 密码过期后的宽限天数。0 过期立即失效,- 1 永远不会失效 8 账号失效时间 9 保留 - 时间戳的换算:
-
/etc/group:
共四个字段 含义 第一个字段 组名 第二个字段 组密码标识 第三个字段 组标识号(GID) 第四个字段 组中附加用户 -
/etc/gshadow:
共四个字段 含义 第一个字段 组名 第二个字段 组密码 第三个字段 组管理员用户名 第四个字段 组中附加用户 -
用户管理目录:
- useradd:useradd [选项] 用户名
useradd -d /home/myuser myuser
- passwd:passwd [选项] 用户名
passwd myuser
- usermod:usermod [选项] 用户名 修改用户信息
- chage:chage [选项] 用户名 修改用户密码状态
- userdel:userdel -r myuser 删除用户同时删除家目录
- su:切换用户。su – myuser、su –
- useradd:useradd [选项] 用户名
第八章:shell 基础
- shell:一个命令解释器,提供了一个界面,用户通过这个界面访问操作系统内核的服务。
- shell 的两种主要语法类型:Bourne(sh,bash)和 C(csh)
-
echo:字符串输出命令。echo [- 选项] string
- 显示不换行(-e 开启转义 c 不换行):echo -e “OK! c”
- 显示换行(-e 开启转义 n 换行):echo -e “OK! n”
- 显示转义字符:echo“”he is a boy“”
- 显示变量:echo “$name It is a test”
- 显示结果定向到文件:echo “It is a test” > myfile
- 原样输出字符串(用单引号):echo ‘$name“‘
- 显示命令执行结果(用反引号):echo
date
-
read:读取输入,指定给 shell 变量。
选项 作用 -p “ 提示信息 ” 输出提示信息 -t 秒数 等待用户输入的时间 -n 字符数 只接受指定的字符数 -s 隐藏输入 - history:历史命令
- declare:声明变量类型。declare +/- [rpxi] [变量名称=设置值] 或 declare -f
选项 | 作用 |
---|---|
+/- | “-“ 可用来指定变量的属性,”+” 则是取消变量所设的属性。 |
-f | 仅显示函数。 |
r | 将变量设置为只读。 |
p | 显示变量的声明类型 |
x | 指定的变量会成为环境变量,可供 shell 以外的程序来使用。 |
i | [设置值]可以是数值,字符串或运算式。 |
- 输出输入重定向:输出重定向是大于号(>),输入重定向是小于号(<)
命令 | 说明 |
---|---|
command>file | 输出重定向到 file |
command<file | 输入重定向到 file |
command>>file | 将输出以追加的方式重定向到 file。 |
n>file | 将文件描述符为 n 的文件重定向到 file。 |
n>>file | 将文件描述符为 n 的文件以追加的方式重定向到 file。 |
n>&m | 将输出文件 m 和 n 合并。 |
n<&m | 将输入文件 m 和 n 合并。 |
<<tag | 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 |
文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。
-
wc:wc [- 选项] 文件名
选项 作用 -c 统计字节数 -w 统计单词数 -l 统计行数 -
grep:grep [- 选项] “ 搜索内容 ” 文件名
选项 作用 -i 忽略大小写 -n 输出行号 -v 反向查找 –color=auto 搜索出的关键字用颜色显示 -
通配符:
符号 作用 * 匹配任何字符串/文本,包括空字符串;代表任意字符(0 个或多个)ls file ? 匹配任何一个字符(不在括号内时)? 代表任意 1 个字符 ls file 0 [abcd] 匹配 abcd 中任何一个字符 [a-z] 表示范围 a 到 z,表示范围的意思 []匹配中括号中任意一个字符 ls file 0 1 逻辑非,表示匹配不是中括号内的一个字符。匹配一个不是数字的字符 -
多任务顺序执行:
多命令执行符 格式 作用 : a:b 命令 a 和 b 顺序执行 && a&&b 逻辑与。a 正确执行,b 才执行 \ \ \ a\ \ b 逻辑非。要么 a 执行,要么 b 执行 - 管道符(|):把一个命令的标准输出传送到另一个命令的标准输入中,连续的 | 意味着第一个命令的输出为第二个命令的输入,第二个命令的输入为第一个命令的输出。
-
shell 变量:变量名不加美元符,变量名和等号之间不能有空格
-
命名规范:
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用 bash 里的关键字(可用 help 命令查看保留关键字)。
-
使用变量:在变量名前面加美元符号,加花括号是为了帮助解释器识别变量的边界并且可以不加
for skill in Ada Coffe Action Java; do
echo "I am good at ${skill}Script"
done
- 只读变量:使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
- 删除变量:使用 unset 命令可以删除变量。变量被删除后不能再次使用。unset 命令不能删除只读变量。
- 变量类型:局部变量、环境变量、shell 变量
-
shell 字符串:
- 单引号:单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 双引号:可以有变量,可以出现转义字符。
- 获取字符串长度:输出 4
string=”abcd”
echo ${#string}
- 提取子字符串:第一个字符的索引值为 0。输出 unoo
string=”runoob is a great site”
echo ${string:1:4}
- 查找子字符串:输出 4
string=”runoob is a great site”
echo
expr index "$string" io
-
数值运算:
- 方法 1(declare):declare -i cc=$aa+$bb
- 方法 2(expr 或 let 数值运算工具):dd=$(expr $aa + $bb) + 号左右两边必须有空格才有效
- 方法 3:$((运算式)) 或 $[运算式] echo $(($aa+$bb)) echo $[$aa+$bb]
-
-
shell 数组:
- 定义数组:用括号来表示数组,数组元素用 ” 空格 ” 符号分割开。name=(a b c d)
- 读取数组:myname=${name[2]}
- 使用 @ 符号可以获取数组中的所有元素:echo ${name[@]}
-
获取数组的长度:
- 取得数组元素的个数:length=${#name[@]}
- 取得数组元素的个数:length=${#name[*]}
- 取得数组单个元素的长度:lengthn=${#name[n]}
-
shell 注释:
- 单行:以 # 开头的行就是注释,会被解释器忽略。
- 多行:EOF 也可以使用其他符号 ‘ !
:<<EOF
注释内容 …
EOF
第九章:shell 编程
-
正则表达式与通配符:
- 正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配。grep、awk、sed 等命令可以支持正则表达式。
- 通配符用来匹配符合条件的文件名,通配符是完全匹配。ls、find、cp 这些命令不支持正则表达式,所以只能使用 shell 自己的通配符来进行匹配。
| 符号 | 含义 |
| --------- | ------------------------------------------------------------ |
| * | 前一个字符匹配 0 次或任意多次。|
| . | 匹配除了换行符外任意一个字符。|
| ^ | 匹配行首。^abc 即 匹配以 abc 开头的行。|
| $ | 匹配行尾。abc$ 即 匹配以 abc 结尾的行。|
| [] | 匹配中括号中指定的任意一个字符,只匹配一个字符。[aeiou]匹配任意一个元音字母,\[0-9][a-z]匹配小写字母和一位数字构成的两位字符。|
| [^] | 匹配除中括号内的字符以外的任意一个字符。\[^a-z]表示任意一位非小写字母。|
| \ | 转义符。用于将特殊符号的含义取消。|
| \\{n\\} | 匹配其前面的字符恰好出现 n 次。[0-9]\\{2\\} 匹配 2 位数字。|
| \\{n,\\} | 匹配其前面的字符出现不小于 n 次。[0-9]\\{2,\\}表示两位即以上的数字。|
| \\{n,m\\} | 匹配其前面的字符至少出现 n 次,最多出现 m 次。[a-z]\\{6,8\\} 匹配 6 到 8 位的小写字母。|
- cut [选项] 文件名 -d 分隔符 自定义分隔符,默认为制表符。-f 列号 提取第几列。
- printf 是 awk 的重要格式化输出命令。printf ‘ 输出类型输出格式 ’ 输出内容
输出类型:
%ns:输出字符串。n 是数字,指代输出几个字符;
%ni:输出整数。n 是数字,指代输出几个数字‘’
%m.nf: 输出浮点数。m 和 n 是数字,指代输出的整数位数和小数位数。如 %8.2f 代表共输出 8 位数,其中 2 位是小数,6 位是整数;输出格式:
a:输出警告声音;
b:输出退格键,也就是 Backspaced 键;
f:清除屏幕;
n:换行;
r:回车,也就是 Enter 键;
t:水平输出退格键,也就是 Tab 键;
v:垂直输出退格键,也就是 Tab 键; -
awk:cat /etc/passwd |awk -F ‘:’ ‘{print $1″\t”$7}’
- 命令行方式:awk [-F field-separator] ‘commands’ input-file(s)
其中,commands 是真正 awk 命令,[- F 域分隔符]是可选的。input-file(s) 是待处理的文件。
在 awk 中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名 - F 域分隔符的情况下,默认的域分隔符是空格。 - 工作流程:读入有 ’n’ 换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,$0 则表示所有域,$1 表示第一个域,$n 表示第 n 个域。
- 命令行方式:awk [-F field-separator] ‘commands’ input-file(s)
-
sort:排序命令。sort [选项] 文件名
选项 作用 -f 忽略大小写 -n 以数值型进行排序,默认使用字符串型排序 -r 反向排序 -t 指定分隔符,默认制表符 -k n[,m] 按照指定的字段范围排序。从第 n 字段开始,m 字段结束 -
按照文件类型进行判断
选项 作用 -b file 如果文件为一个块设备文件,则为真 -c file 如果文件为一个字符设备文件,则为真 -d file 如果文件为一个目录文件,则为真 -e file 如果文件存在,则为真 -f file 如果文件为一个普通文件,则为真 -s file 如果文件存在非空,则为真 -p file 如果文件为一个管道文件,则为真 -S file 如果文件为一个套接字文件,则为真 -
按照文件权限进行判断
选项 作用 -r file 如果文件可读,则为真 -w file 如果文件可写,则为真 -x file 如果文件可执行,则为真 -u file 如果设置了文件的 SUID 权限,则为真 -g file 如果设置了文件的 SGID 权限,则为真 -k file 如果设置了文件的 SBit 权限,则为真 -
按照文件之间进行判断
选项 作用 f1 -nt f2 f1 是否比 f2 新(new than) f1 -ot f2 f1 是否比 f2 旧(old than) f1 -ef f2 f1 和 f2,Inode 号是否相同,是否为同一个文件。是否是相同文件的硬链接 -
数进行判断
选项 作用 int1 -eq int2 两数相等为真 int1 -ne int2 两数不等为真 int1 -gt int2 int1 大于 int2 为真 int1 -ge int2 int1 大于等于 int2 为真 int1 -lt int2 int1 小于 int2 为真 int1 -le int2 int1 小于等于 int2 为真 -
按照字符串进行判断
选项 作用 str1 == str2 当两个串相等时为真 str1 != str2 当串 str1 和 str2 不等时为真 -n str1 当串的长度大于 0 时为真(串非空) -z str1 当串的长度为 0 时为真(空串) str1 当串 str1 为非空时为真 -
复杂逻辑判断
选项 作用 判断 1 -a 判断 2 与 1,2 都成立为真 判断 1 -o 判断 2 或 1,2 有一个成立为真 ! 判断 非 原判断取反 -
单分支 if 语句:
if condition
thenstatement(s)
fi
if condition; then
statement(s)
fi - 统计根分使用率区
- 双分支 if 语句
if condition
then
statement(s)
else
statement(s)
fi
- case 语句
#!/bin/bash
echo “ 请输入您的姓名、年龄以及今天周几?”
read -t 30 -p “ 姓名:” name
read -t 30 -p “ 年龄:” age
read -t 30 -p “ 星期:” week
echo -e “n”
echo “$name 的年龄是 $age”
case $week in
7)
echo “ 你输入的星期为:星期天 ”
;;
1)
echo “ 你输入的星期为:星期一 ”
;;
2)
echo “ 你输入的星期为:星期二 ”
;;
3)
echo “ 你输入的星期为:星期三 ”
;;
4)
echo “ 你输入的星期为:星期四 ”
;;
5)
echo “ 你输入的星期为:星期五 ”
;;
6)
echo “ 你输入的星期为:星期六 ”
;;
*)
echo “Please input a number for week should between 1 and 7”
exit;
esac
- for 循环
#!/bin/bash
s=0
for((i=1;i<=100;i=i+1))
do
s=$(($s+$i))
done
echo “the sum of 1-100 is $s”
- 批量添加用户
第十章:系统备份
- 备份策略
完全备份 :优点是数据恢复方便;缺点备份的数据量较大,备份时间较长,占用的空间较大
增量备份 :优点备份的数据较少,耗时较短,占用的空间较小;
缺点是数据恢复比较麻烦,先恢复完全备份的数据每次增量备份的数据,最终才能恢复所有的数据。
差异备份 :优点恢复数据简单方便快捷
缺点数据量庞大、备份速度缓慢、占用空间较大。 - dump 备份、restore 恢复
- ps -le 查看所有进程
- 0-9 ↩