一、管理文件系统
1、文件系统范例
- ext2:早期Linux中常用的文件范例。
- ext3:ext2的升级版,带日志功能。
- RAMFS:内存文件系统,速度很快。
- NFS:网络文件系统,由SUM发明,重要用于远程文件共享
- PROC:假造的进程文件。
- ISO9660:大部分光盘所接纳的文件系统。
2、Linux文件系统的目录结构
/ | 根目录,整个文件系统的根目录 | /dev | 存放Linux系统下的装备文件 | /etc | 存放系统的设置文件 | /home | 系统默认的用户主目录 | /root | 超级权限用户的root目录 | /opt | 自界说软件包 | 3、硬链接和软链接
- 硬链接:即便原始文件被删除,依然可以通过硬链接文件来访问。
- 软链接:当原始文件被删除后,链接文件也将失效。
4、下令
1、工作目录切换类:
- pwd [目录名称] :显示或查看当前所在的目录路径。
- cd [目录名称]:切换工作目录。
- cd-:返回上一次所处的目录
- cd..:进入上级目录
- cd~:切换到当前用户的家目录
- ls [选项] [文件]:
- ls ./:查看当前目录的所有文件和目录,可省略./
- ls -l:查看当前目录所有的文件和目录的详细信息
- ls -a:查看文件的属性、大小等详细信息。
2、文本文件查看类:
- cat [选项] [文件]:查看纯文本文件(内容较少的)
- more [选项] [文件]:查看纯文本文件(内容较多的),空格键向下翻页或回车键向下翻行,只能向前欣赏,按q退出more程序。
- less [选项] [文件]:查看纯文本文件(内容较多的),允许向前向后欣赏文件,PageUP或b键向上翻页,用PageDown或空格向下翻页。按q键可退出。
- head [选项] [文件]:查看纯文本文档前面部分的内容。
- head -n 20 [文件]:查看纯文本中前20行的内容。
- tail [选项] [文件]:查纯文本中后面部分或一连革新内容。
- tail -n 20:查看文本内容的最后20行。
- tail -f 文件名:可以及时查看最新日志文件的效果。
- wc [参数] [文件]:统计指定文本的行数、字数、字节数。
3、目录操作类:
- mkdir [选项] [目录]:创建空缺的目录
- mkdir -p a/b/c/d:创建具有嵌套的文件目录。
- rmdir [选项] [目录]:删除空缺目录
4、文件操作类:
- touch [选项] [文件]:创建空文件或设置文件的时间。
-a | 仅修改“读取时间”(atime) | -m | 仅修改“修改时间”(mtime) | -d | 同时修改atime与mtime |
- cp [选项] [源文件] [目标文件]:复制文件或目录。
- 如果目标文件是目录,则会把源文件复制到该目录中。
- 如果目标文件是存在的普通文件,则会询问是否要覆盖它。
- 如果目标文件不存在,则执行正常的复制操作。
-p | 保留原始文件的属性 | -d | 若对象为“链接文件”,则保留其属性 | -r | 递归一连复制(用于目录) | -i | 若目标文件存在则询问是否覆盖 | -f,--force | 强行复制文件或目录,不论目标文件或目录是否已存在 | -a | 相当于-pdr |
- mv [选项] [源文件] [目标路径] [目标文件名]:剪切文件或将文件重定名
- rm [选项] [文件]:删除文件或目录。
- rm -f:强制删除。
- rm -r:删除一个目录。
- diff [参数] [文件]:比力多个文本文件的差别。
- diff --brief:判断文件是否相同。
- diff -c:描述出文件内容详细的差别。
- dd [参数]:按照指定大小和个数的数据块来复制文件或转换文件
if | 输入的文件名称 | of | 输出的文件名称 | bs | 设置每个“块”的大小 | count | 设置要复制“快”的个数 |
- ln [选项] 目标:创建链接文件。
-s | 创建“符号链接”(如果不带-s参数,则默认创建硬链接) | -f | 强制创建文件或目录的链接 | -i | 覆盖前先询问 | -v | 显示创建链接的过程 |
5、压缩解压下令:
- tar [选项] [文件]:建立,还原备份文件。
-c | 创建新的文档 | -v | 显示详细的tar处置处罚的文件信息 | -f | 要操作的文件名,切记,这个参数是最后一个参数 | -x | 解压 | -t | 查看内容 | -z | 有gzip属性的 | -j | 有bz2属性的 | -r | 表现增长文件,把要增长的文件追加在压缩文件的末端 |
- gzip [参数] [文件]:文件压缩工具。
- gunzip [参数] [文件]:解压缩gzip格式的文件。(会删除源文件)
-l | 创建新的文档 | -d | 指定文件解压缩后要存储的目录 | -f | 要操作的文件名,切记,这是最后一个参数 |
- zip [参数] [打包后的文件名] [打包的文件路径]:压缩文件,适用于压缩多个文件的格式
-r | 递归压缩子目录下的所有文件,不然只压出来一个空目录 | -y | 保持符号链接,而不用把符号链接指向的文件也压进来 | -f | 要操作的文件名,这是最后一个参数 |
- unzip [参数] [文件名.zip]:解压缩zip文件。
-l | 创建新的文档 | -d | 指定文件解压缩后所要存储的目录 | -f | 要操作的文件名,这是最后一个参数 |
6、查找类下令:
- which [参数] [下令名称]:查找系统PATH目录下的可执行文件下令所在的位置。
- whereis [参数] [下令名称]:探求二进制程序、源代码文件和man手册等相关文件的路径。
- locate [参数] [文件名.zip]:查找文件或目录。
- find [查找路径] [探求条件操作]:按指定条件来探求文件。
-name | 匹配名称 | -perm | 匹配权限(mode为完全匹配,-mode为包含即可) | -user | 匹配所有者 | -group | 匹配所有组 | -mtime-n+n | 匹配修改内容的时间(-n指n天以内,+n指n天从前) | -atime-n+n | 匹配访问文件的时间(-n指n天以内,+n指n天从前) | -ctime-n+n | 匹配修改文件权限的时间(-n指n天以内,+n指n天从前) | -nouser | 匹配无所有者的文件 | -nogroup | 匹配无所有组的文件 | -newer f1 ! f2 | 匹配比文件f1新但比f2旧的文件 | --type b/d/c/p/l/f | 匹配文件范例(后面字母依次表现装备、目录、字符装备、管道、链接文件、普通文件) | -size | 匹配文件的大小(+50为查找凌驾50KB的文件) | -prune | 忽略某个目录 | -exec...{}\; | 后面可跟用于进一步处置处罚搜索结果的下令 |
7、修改文件权限下令:
- chmod [选项] [模式,模式] [文件]:修改文件或目录的权限。
- 数字法:将读取(r)、写入(w)、执行(x)分别以4、2、1来表现。
- 笔墨法:
- u:user,表现所有者。
- g:group,表现属组。
- other,表现其他用户。
- a:all,表现以上三种用户。
- r:read,可读。
- w:write,写入。
- x:execute,执行。
8、文件的隐藏属性
- chattr [参数] [文件]:设置文件的隐藏权限。用+-某个功能。
- lsattr [参数] [文件]:显示文件的隐藏权限。lsattr -al
二、shell与文本处置处罚
1、Vim编辑器
vim中常用的下令 dd删除(剪切)光标所在整行5dd删除(剪切)从光标开始的5行yy复制光标所在整行5yy复制从光标处开始的5行n显示搜索下令定位到的下一个字符串N显示搜索下令定位到的上一个字符串u打消上一步的操作p将之前删除(dd)或复制(yy)过的数据粘贴到光标后面 末行模式中可用的下令 :w生存:q退出:q!强制退出(放弃对文档的修改):wq!强制生存退出:set nu显示行号:set nonu不显示行号:下令执行该下令:整数跳转到该行 2、通配符
用于匹配文件名,通常包含四种“*,?,[],{}”。
* | 匹配0或多个字符 | a*b:a与b之间可以有任意长度的任意字符,也可以无。如aabcd、a012b、ab。 | ? | 匹配任意一个字符 | a?b:a与b之间必须也只能有一个字符,可以是任意字符,如aab、abb、a0b。 |
| 匹配list中的任意单一字符 | a[xyz]b:a与b之间必须也只能有一个字符,只能是x或y或z,如axb、ayb,azb。 | [! list] 或 [^list] | 匹配除list中的任意单一字符 | 同上,不能是x或y或z。 | [c1-c2] | 匹配c1-c2中的任意单一字符,如[0-9] | | [! c1-c2]或[^c1-c2] | 与上相反 | | {string1,string2,...} | 匹配string1或string2其单一字符 | | 3、基本正则表达式
^ | 匹配以...开头的行 | ^ab匹配以ab开头的行 | $ | 匹配以...结尾的行 | ab$匹配以ab结尾的行 | ^$ | 匹配空行 | ^$匹配空行,不匹配空格 | . | 匹配任意单个字符 | ab.匹配abc或abb等,不匹配abcd,包括空格 | \ | 转义符,将特殊字符符号举行转义 | a\.b匹配a.b。不匹配ajb | * | 匹配前面项0次或多次 | ab*匹配a或ab或abbb | .
*
| 匹配任意字符 | ab.*匹配ab或abc或abcd,包含空行 | 4、重定向与管道下令
- 标准输入:stdin,由0表现,默认吸收来自键盘的输入。
- 标准输出:stdout,由1表现,默认输出到终端窗口。
- 标准错误:stderr,由2表现,默认输出到终端窗口。
- 管道下令:“|”:把前一个下令原本要输出到屏幕的标准正常数据当做是后一个下令的标准输入
三、管理Linux服务器的用户组群及特殊权限
- 管理员UID为0:系统的管理员用户。
- 系统用户UID为1~999:默认服务器程序会有独立的系统用户负责运行。
- 普通用户UID从1000开始:由管理员创建的普通用户的UID默认是从1000开始的。
1、用户账户文件
- /etc/passwd:例子:bin:x:2:2:bin:/bin:/bin/sh,共有七个域:
- 账号名称
- 口令
- UID
- GID
- 用户信息说明栏
- 家目录
- shell
- etc/shadow:相识差别账号的权限。例子:bin:*:14126:0:99999:7:::,有九个字段:
- 账号名称
- 口令
- 最近更改口令的日期(14126)
- 口令不可被更动的天数
- 口令必要重新变更的天数(与第三字段相比)
- 口令必要变更限期前的警告天数(与第五段相比)
- 口令过期后的账号宽限时间(口令失效日)
- 账号失效日期
- 保留
2、用户组文件
- /etc/group:记载GID与组名的对应关系。例:root:x:0:,有四栏:
- /etc/gshadow:是上面的加密资讯文件,比如用户组(Group)管理员密码就是存放在这个文件中。
3、下令
1、用户账号的创建和管理
- su:切换用户
- useradd [选项] [用户名]
-d | 指定用户的家目录(默认/home/username) | -e | 账户的到期时间,格式为YYYY-MM-DD | -u | 指定该用户的默认UID | -g | 指定一个初始的用户基本组 | -G | 指定一个或多个扩展用户组 | -N | 不创建于用户名同名的基本用户组 |
- passwd [选项] [用户名]:设置用户口令。
-l | 锁定用户,禁止其登录 | -u | 解除锁定,允许用户登录 | -d | 使该用户可用空密码登录 | -e | 强制用户在下次登录时修改密码 |
- username [选项] [用户名]:修改用户的属性。
2、组群管理
- groupadd或addgroup [选项] 组群名:创建组群
- groupmod [选项] 组名:修改组群
-g gid | 把组群的GID改成gid | -n group -name | 把组群的名称改为group -name |
- groupdel [选项] 组名:删除组群。
gpasswd [选项] [用户] [组]:为组群添加用户。
-a | 把用户加入组 | -d | 把用户从组中删除 | -r | 取消组的密码 | -A | 给组指派管理员 | 四、管理磁盘
1、物理装备的定名规范
IDE装备 | /dev/hd[a-d] | SCSI/SATA/U盘 | /dev/sd/[a-p] | 软驱 | /dev/fd/[0-1] | 打印机 | /dev/lp[0-15] | 光驱 | /dev/cdrom | 鼠标 | /dev/mouse | 磁带机 | /dev/st0或/dev/ht0 | 2、磁盘分区-fdisk
步调:管理/dev/sdb硬盘装备
- 输入下令:fdisk /dev/sdb
- 输入p查看硬盘装备内已有的分区信息
- 输入n添加新的分区,系统会要求选择输入p创建主分区或e创建扩展分区,这里用p。
- 系统要求先输入主分区的编号(1~4)
- 起始扇区默认,Last扇区+2G,即创建容量为2GB的硬盘分区
- 输入p再次查看信息,OK后输入w后回车!
- 使用file /dev/sdb1查看文件的属性,若无,则输入partprobe同步。
3、格式化分区-mkfs(建立文件系统)
分区后还要举行格式化操作。
- mkfs.文件范例名称:比方要格式分区为XFS的文件系统
4、挂载分区
1、mount-手动挂载分区
- mount 文件系统 挂载目录;比方:把装备/dev/sdb1挂载到/newFS目录:
- mkdir /newFS
- mount /dev/sdb1 /newFS
2、/etc/fstab-自动挂载分区
3、umount-打消挂载分区
5、磁盘列阵管理
例:创建RAID5
1、创建四个磁盘分区
- 使用fdisl下令创建4个磁盘分区/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1
2、使用mdadm下令创建RAID5
- mdadm --create /dev/md0 -l 5 -n 3 -x 1 /dev/sd[b-e]1
- --create代表创建一个RAID阵列卡,装备名称/dev/md0;--lever=5参数代表RAID5方案‘--raid-devices=3参数代表使用3块硬盘来部署这个RAID磁盘列阵;--spare-devices=1参数代表使用1块硬盘空闲作为热备,最后在加上4块硬盘装备就OK了
3、为新建立的/dev/md0建立ext4的文件系统
4、查看建立的RAID5的详细环境
5、将RAID装备挂载(将RAID装备挂载到指定目录/RAID中)
- mkdir /RAID
- mount /dev/md0 /RAID
- df -h(显示该装备中的内容)
五、Linux系统监视和进程管理
1、进程
- 进程是具有独立功能的程序的一次运行过程,是系统举行资源分配和调度的基本单位。
- 进程不是程序,但由程序产生。
2、作业
- 正在执行的一个或多个相关进程可形成一个作业。
- 前台作业:运行于前台,用户可对其举行交互操作
- 后台作业:运行于后台,不吸收终端的输入,但向终端输出执行结果。
3、进程的状态
- 停当状态:进程已得到除CPU以外的运行所必要的全部资源
- 运行状态:进程占用CPU正在运行
- 等待状态:进程正在等待某一变乱或某一资源
- 挂起状态:正在运行的进程由于某个缘故起因失去CPU而暂时制止运行
- 终止状态:进程已结束
- 休眠状态:进程主动暂时制止运行
- 僵死状态:进程 已制止运行,但是相关控制信息仍保留
4、进程调度
对于偶尔运行的进程,接纳at调度或batch调度
对于特定时间重复运行的进程,接纳cron调度
- at [选项] [时间]:设置指定时间执行指定的下令。
- batch [选项] [时间]
六、网络设置与网络服务部署
1、NetworkManager
- nmcli是下令行的管理NetworkManager的工具,会自动把设置写到/etc/sysconfig/network-scripts/目录下。
2、网络接口设置文件
在网卡设置文件中,各字段的作用如下:
- DEVICE=name:name是物理装备名。
- IPADDR=addr:addr是IP地址。
- HWADDR=addr:addr是物理地址。
- NETMASK=mask:mask是网络掩码值。
- NETWORK=addr:addr是网络地址
- BROADCAST=addr:addr是广播地址。
- GATEWAY=addr:addr是网关地址。
- ONBOOT=answer:answer是yes(引导时激活装备)/no
3、DHCP服务器
工作原理:
- 客户端主机使用0.0.0.0IP地址和UDP68端口在局域网内发送DHCPDISCOVER广播包(包含了客户端计算机网卡的MAC地址和NetBIOS名称)探求DHCP服务器。
- DHCP服务器收到DHCPDISCOVER广播包,在局域网中使用UDP67端口,发送DHCPOFFER广播数据包,包含待出租的IP地址及地址租期等。
- 局域网中客户端主机发送DHCPREQUEST广播包(包含选择的DHCP服务器的IP地址),正式向服务器请求租用分配服务器已提供的IP地址。
- DHCP服务器向请求的客户端主机发送DHCPACK单播包,正式确认客户端主机的租用请求。
七、Shell编程
1、求两个数相加,编写add.sh文件
- [root@localhost script]# vim add.sh
- [root@localhost script]# cat add.sh
- #!/bin/bash
- #文件名为:add.sh
- #版本:v1.1
- #功能:求和
- VAR=`expr 3 + 6`
- echo "两个数相加为:" $VAR
- [root@localhost script]# chmod a+x add.sh
- [root@localhost script]# . add.sh
- 两个数相加为: 9
- [root@localhost script]#
复制代码
- 2、算术运算符,举行综合运算
- 算术运算符有以下几个。
- (1)+ 加法。如: `expr $X + $Y`。
- (2)- 减法。如: `expr $X - $Y`。
- (3)* 乘法。如: `expr $X \* $Y`。
- (4)/ 除法。如: `expr $X / $Y`。
- (5)% 取余。如: `expr $X % $Y`。
- (6)= 赋值。如:X=$Y,将把变量Y的值赋给A。
- (7)= = 相称。用于比力两个数字,相同则返回true。
- (8)!= 不相称。用于比力两个数字,不相同则返回true。
- [root@localhost script]# vim zhys.sh
- [root@localhost script]# cat zhys.sh
- #!/bin/bash
- #文件名为:zhys.sh
- #版本:v1.1
- #功能:综合运算
- X=100
- Y=5
- VAR=`expr $X + $Y`
- echo "X+Y=$VAR"
- VAR=`expr $X - $Y`
- echo "X-Y=$VAR"
- VAR=`expr $X \* $Y`
- echo "X*Y=$VAR"
- VAR=`expr $X / $Y`
- echo "X/Y=$VAR"
- VAR=`expr $X + $Y`
- if [ $X == $Y ]; then
- echo "X等于Y"
- fi
- if [ $X != $Y ]; then
- echo "X不等于Y"
- fi
- [root@localhost script]# . zhys.sh
- X+Y=105
- X-Y=95
- X*Y=500
- X/Y=20
- X不等于Y
- [root@localhost script]#
复制代码 乘号(*)前边必须加反斜杠(\)才气实现乘法运算,条件表达式必须放在方括号之间,并且要有空格。
3、关系运算符,举行综合运算
关系运算符 运算符
功能说明
举例
-eq
检测两个数是否相称,相称返回 true
[ $X -eq $Y ] 返回 false
-ne
检测两个数是否不相称,不相称返回 true
[ $X -ne $Y ] 返回 true
-gt
检测左边的数是否大于右边的,如果是,则返回 true
[ $X -gt $Y ] 返回 false
-lt
检测左边的数是否小于右边的,如果是,则返回 true
[ $X -lt $Y ] 返回 true
-ge
检测左边的数是否大于等于右边的,如果是,则返回 true
[ $X -ge $Y ] 返回 false
-le
检测左边的数是否小于等于右边的,如果是,则返回 true
[ $X -le $Y ] 返回 true
运算关系综合运算
- [root@localhost script]# vim gxys.sh
- [root@localhost script]# cat gxys.sh
- #!/bin/bash
- #文件名为:gxys.sh
- #版本:v1.1
- #功能:运算关系综合运算
- X=10
- Y=20
- if [ $X -eq $Y ]
- then
- echo "$X -eq $Y : X 等于 Y"
- else
- echo "$X -eq $Y: X 不等于 Y"
- fi
- if [ $X -ne $Y ]
- then
- echo "$X -ne $Y: X 不等于 Y"
- else
- echo "$X -ne $Y : X 等于 Y"
- fi
- if [ $X -gt $Y ]
- then
- echo "$X -gt $Y: X 大于 Y"
- else
- echo "$X -gt $Y: X 不大于 Y"
- fi
- if [ $X -lt $Y ]
- then
- echo "$X -lt $Y: X 小于 Y"
- else
- echo "$X -lt $Y: X 不小于 Y"
- fi
- if [ $X -ge $Y ]
- then
- echo "$X -ge $Y: X 大于或等于 Y"
- else
- echo "$X -ge $Y: X 小于 Y"
- fi
- if [ $X -le $Y ]
- then
- echo "$X -le $Y: X 小于或等于 Y"
- else
- echo "$X -le $Y: X 大于 Y"
- fi
- [root@localhost script]# . gxys.sh //执行脚本
- 10 -eq 20: X 不等于 Y
- 10 -ne 20: X 不等于 Y
- 10 -gt 20: X 不大于 Y
- 10 -lt 20: X 小于 Y
- 10 -ge 20: X 小于 Y
- 10 -le 20: X 小于或等于 Y
- [root@localhost script]#
复制代码 4、流程控制
if多分支语句测试:
- [root@localhost script]# vim if-select.sh
- [root@localhost script]# cat if-select.sh
- #!/bin/bash
- #文件名为:if-select.sh
- #版本:v1.1
- #功能:if多分支语句测试
- read -p "请输入您的成绩:" x
- if [ "$x" == "" ];then
- echo "您没有输入成绩...."
- exit 5
- fi
- if [[ "$x" -ge "90" && "$x" -le "100" ]];then
- echo "您的成绩为:A(优秀)"
- elif [[ "$x" -ge "80" && "$x" -le "89" ]];then
- echo "您的成绩为:B(良好)"
- elif [[ "$x" -ge "70" && "$x" -le "79" ]];then
- echo "您的成绩为:(中等)"
- elif [[ "$x" -ge "60" && "$x" -le "69" ]];then
- echo "您的成绩为:(合格)"
- elif [[ "$x" -lt "60" ]];then
- echo "您的成绩为:(不合格)"
- else
- echo "输入错误"
- fi
- [root@localhost script]# chmod a+x if-select.sh
- [root@localhost script]# . if-select.sh
- 请输入您的成绩:88
- 您的成绩为:B(良好)
- [root@localhost script]#
复制代码 case下令语句测试
- [root@localhost script]# vim case.sh
- [root@localhost script]# cat case.sh
- #!/bin/bash
- #文件名为:case.sh
- #版本:v1.1
- #功能:case命令语句测试
- read -p "【1:优秀,2:良好,3:中等,4:合格,5:不合格】请输入数字(1-4):" x
- case $x in
- 1) echo "您的成绩为:A(优秀)"
- ;;
- 2) echo "您的成绩为:B(良好)"
- ;;
- 3) echo "您的成绩为:C(中等)"
- ;;
- 4) echo "您的成绩为:D(合格)"
- ;;
- 5) echo "您的成绩为:E(不合格)"
- ;;
- esac
- [root@localhost script]# . case.sh
- 【1:优秀,2:良好,3:中等,4:合格,5:不合格】请输入数字(1-4):3
- 您的成绩为:C(中等)
- [root@localhost script]#
复制代码 for循环实现从1+2+...+N之和:
- [root@localhost script]# vim for.sh
- [root@localhost script]# cat for.sh
- #!/bin/bash
- #文件名为:for.sh
- #版本:v1.1
- #功能:for循环实现从1+2+...+N之和
- read -p "请输入数字,将要计算1+2+...+N之和:" N
- sum=0
- for (( i=1; i<=$N; i=i+1 ))
- do
- sum=$(( $sum + $i ))
- done
- echo "结果为‘1+2+...+$N’==>$sum"
- [root@localhost script]# chmod a+x for.sh
- [root@localhost script]# . for.sh //执行脚本
- 请输入数字,将要计算1+2+...+N之和:100 //1到100之和
- 结果为‘1+2+...+100’==>5050
- [root@localhost script]#
复制代码 ......
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |