LINUX系统

I. LINUX系统基础知识
一、 系统分区
1.分区;
•把大的硬盘分为晓得逻辑块主分区最多分4个,分区内可以有包含子分区,如第四个主分区内有两 个 子分区,那么主分区4内不能写数据,只能在子分区5和6写数据;且子分区不能使用1234这四个符号,只 能从5开始;
•必须要有的分区:①根分区; ②swap(内存交换)分区;
2.格式化,写入文件系统,写入时会附带地清空硬盘数据;
3.给分区定义设备文件名,如磁盘文件名 /sda1,表示磁盘的a第1个区;
4.挂载,给每个分区分配挂载点,挂载点必须是目录;
二、远程连接
1.临时配置LINUX的Ip地址
(1)本地通信方式(Host-Only)
•只能用于本地主机与虚拟机中的CentOS互相通信;
•命令:ifconfig eth0 ”虚拟网卡中分配的IP地址”
(2)桥接方式
•通过本地主机的物理网卡,访问因特网;
•命令:ifconfig eth0 “主机物理网卡的同一IP网络下的地址”;
•注意,如果设置了与本地主机物理网卡IP同一地址后还未连接网络,去虚拟机网络配置中确定连接到 的是物理网卡中的无线网卡还是有线网卡;
(3)工具
①secureCRT 远程连接工具
②Winscp 文件拷贝工具
三、常见目录的作用
(1)/bin/ 存放系统命令的目录,普通用户和超级用户都可执行,单用户模式也可运行;
(2)/sbin/ 存放系统环境设置相关命令的目录,仅超级用户都可执行,单用户模式不可运行;
(3)/usr/bin/ 存放系统命令的目录,普通用户和超级用户都可执行,单用户模式不可运行;
(4)/usr/sbin/ 存放根文件系统不必要的系统管理命令目录,仅超级用户都可执行,单不可运行;
(5)/boot/ 系统启动目录;
(6)/dev/ 设备文件保存目录;
(7)/etc/ 配置信息文件目录;
(8)/home/ 普通用户的家目录,如user1的家目录是/home/user1;
(9)/lib/ 系统调用函数库的保存位置;
(10)/lost+found/ 当系统意外崩溃或系统突然关机时,产生一些的文件碎片目录;
(11)/midea/ 挂载目录(挂载目录可自行定义),建议存放如软盘、光盘等;
(12)/misc/ 挂载目录,建议挂载NFS服务的共享目录;
(13)/mnt/ 挂载目录,早起LINUX只有这个挂载目录,现建议挂载额外的设备,如U盘等;
(14)/opt/ 第三方软件安装保存位置;不过现在更习惯安装在/usr/local/目录中;
(15)/proc/ 虚拟文件系统目录,主要保存系统内核、进程、网络状态等,存在内存中;
(16)/sys/ 虚拟文件系统,主要保存内核相关信息的,存在内存中;
(17)/root/ 超级用户的家目录,处于“ / ”下;
(18)/srv/ 服务数据目录;
(19)/tmp/ 临时文件目录,最好每次关机都清空该目录;
(20)/usr/ 系统软件资源目录,Unix Software Resource;
(21)/var/ 动态数据缓存目录,主要保存日志、缓存以及软件产生的文件;
四、服务器注意事项
①服务器不能关机,只能重启;
②定期备份重要数据;
③远程配置防火墙,别把自己踢出去;
④给定合适的权限;
⑤指定密码并定时更新;
⑥不要再服务器高峰期运行高负载命令;
⑦重启时应关闭服务;
II. LINUX常用命令
• *命令格式:命令 -[选项] [参数]
• “ - ”表示这是一个文件
一、目录处理命令
①-a all—列出所在目录下全部文件(包括隐藏文件)
②/ 列出根目录下文件
③-l long—显示更多信息
(1)ls(List 表) ④-h human—人性化显示
⑤-d directory—列出文件目录
⑥-I idea—显示文件的ID号;

•文件long的格式:drwxr-xr-x. 18 root root 3.7K 10月 21 05:17 dev

	①“d”  是目录的意思;“drwxr-xr-x.”分别是所属者(U)、所属组(G)、其他人(O)的文件权限;
	②“18”  代表读写次数;
	③所属者名称;				④所属组名称;
	⑤“13K”  文件大小,以long方式显示;
	⑥“10月 21 05:10”   是文件的最后修改时间;
	⑦“dev” 文件名称;
(2)mkdir (make directory创建目录); -p 递归创建目录;
(3)pwd (print working drictory 打印当前所在的目录);
(4)cd (change directory跳转目录),cd .. 返回上一级目录;
(5)rmdir (remove empty directory删除空目录);
(6)rm(remove删除);①-r 删除目录; ②-rf 删除删除目录且不用确认;
(7)cp(copy复制);①-r复制目录;  ②–p保留复制文件的原信息(如最后修改时间);
	•例:cp /tmp/lkj.log ./tmp/lxk.log —— 拷贝lkj.log并改名lxk.log;
(8)mv [源文件或目录][目标目录];可在剪切时改名;
	-b :若需覆盖文件,则覆盖前先行备份。 
	-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
	-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
	-u :若目标文件已经存在,且 source 比较新,才会更新(update)

二、文件处理命令
(1)touch(创建文件);
(2)cat(显示文件内容,无法翻页);①-n 显示行数;*cat猫,喵~,瞄一眼文件,看看文件;
(3)tac(反向显示文件内容),不支持-n;
(4)more(分页显示全部文件内容,无法往前翻页);
(5)less(分页显示全部文件内容,可往前翻页); ①按 / 可查找关键字;②按n可继续翻页;
(6)head(显示文件前10行内容);① n后跟数字可设定显示行数;
(7)tail(显示文件后10行内容);① -f 动态显示文件末尾,一般用来监视日志变化
三、软链接与硬链接
(1)软链接
格式:ln -s [源文件] [目标文件];
•软链接相当于Windows中文件的快捷方式;
•可以跨分区创建连接;
•可以对目录创建快捷方式;
(2)硬链接
格式:ln [源文件] [目标文件];
•相当于把文件“cp -p” + 同步更新;
•删除其中一个,另一个不受影响;
•LINUX内核是根据i结点号映射文件的,硬链接就相当于同一i节点号映射到两个文件,更新其中 一个另一个也会更新;
•不能跨分区,/boot分区文件不能硬链接到/tmp中的文件;
•目录不能硬链接;
四、权限管理命令
(1)chmod(改变文件或目录权限)-R(递归修改)
• r w x —— 4 2 1;例如:rwxr–r--x对应权限是745;
•格式:chmod 755 /A/a.log —— 改变a.log权限为rwxr-xr-x
chmod –R 755 /A —— 改变A目录即A目录下所有文件加或文件的权限为rwxr-xr-x;
*需要说明的是,如果A目录的权限为777的话,尽管其子文件权限如何,别的用户都可对其777权限 目录下的文件或文件夹进行任何操作;
(2)chown(改变所属者),格式:chown [所属人][所属组];
(3)chgrp(改变所属组),格式:chgrp[所属人][所属组];
(4)umask(改变创建时的缺省权限)
•umask -S —— 查看缺省(默认)权限
•umask —— 查看缺省(默认)权限的掩码,掩码与缺 省权限码是异或关系; 例如:
*管理员才可执行更改所属者/组操作;
*创建文件默认不能有x权限,例如病毒文件;
五、查找命令
(1)按文件名查找:find [查找范围]-name / iname [文件名];
•文件名区分大小写:① -name 不区分; ② -iname区分;
•模糊查找:①“ * ”表示多个字符; ②“ ? ”表示单个字符;
•例:find /tmp -name lkj.log —— 在tmp目录下查找lkj.log文件(精确查找);

(2)按文件大小:find [查找范围]-size[文件大小];
	•文件大小的单位是数据块,1块 = 512B;1Kb = 2块;
	•文件大小:“ +n ”表示大于n的文件;“ -n ”表示小于n的文件;“ =n ”表示等于n的文件;
	•例:find /tmp -size -5 —— 查找tmp目录下小于2.5KB的文件;

(3)根据所属者/组:find [查找范围]-user / group [所属者/组名称]
	•例:find /tmp -user root —— 查找tmp目录下所有root的文件或目录;

(4)按文件时间查找:find [查找范围] -amin/cmin/mmin  -n
	•①access min访问时间;②change min 属性修改时间;③modify min内容被修改时间;
	•例:①查找etc目录下所有30分钟内被访问过的文件或目录并长显示;

find /etc -amin -30 -exec ls -l {} ;
②查找etc目录下所有30分钟内属性变化过的文件或目录并长显示;
find /etc -cmin -30 -exec ls -l {} ;
③查找etc目录下所有30分钟内文件内容变化的文件或目录并长显示;
find /etc -mmin -30 -exec ls -l {} ;
(5)条件连接符
•①“–a”:and; ②“-o”:or;
•例:①查找/etc 目录下名为“ Init* ” 的文件 —— find /etc -iname init* -a -type f
②查找init/etc 目录下名为“ Init* ”或“ jv* ” 的文件 —— find /etc -iname init* -o -iname ja*
这里有个注意点,先或再与的话,与跟或后面的条件相与,不是跟前面一整段相与。例如:
find /tmp -name lkj
-o -name yum* -a -type d
——其条件为:名字类似“lkj” 或 名字类似“yum”且是目录
(6)按文件类型:find -type f/d/l
•①“f”:file文件; ②“d”:directory目录; ③“l”:link软链接;

(7)命令连接符:-exec / ok [命令] [空格] {} [空格]\(反斜杠) ;
	•①-exec 跟查找后执行某命令(不询问);	②-ok 跟查找后执行某命令(询问);
	•例:查找etc目录下所有文件 并 long显示 —— find /etc -type f -exec ls -l {} \;

(8)按文件i结点号查找
	•例:find /etc -inum 4045 -exec rm {} \;  —— 查找i结点为4050的文件或目录并删除;

(9)*文件资料库查找:locate 
	•根据locate维护的文件资料库查找,查找效率高;
	•其索引范围不包括tmp等目录,且需要创建新新文件需要用update命令更新文件资料库;
	•例:locate -i [文件名]—— 不区分大小写查找文件

(10)查找命令文件所在目录:which/whereis 
	• ①which可查找命令的目录和别名;②whereis除了查找命令目录,还可以得到帮助文档所在的目录;
	•例:which rm —— 查找rm命令的文件所在目录与别名;

*(11)按文件内容查找:grep -i/v [文件内容的关键字]
  •例:more /etc/init -exec ls -l {} \; —— 先显示文件内容
	   grep -i tab —— 在内容中不区分大小写查找内容中的tab部分;
	•文件内容中通常有很多#开头的注释行,如果对文件内容足够熟悉不想看较多的注释,可用grep – v #;
	•例:grep -v ^#  —— grep查询文字,-v排除,^首行,#有#符号所在的行;排除以#开头的行;

六、帮助信息命令
*(1)man [命令]
•查看命令的帮助信息,以more形式显示,在显示中,可加/[选项关键字]定位到关键字的位置;
•命令对应有两个帮助文件,可用whereis命令查看对应帮助文件目录;
•帮助文件有两种:“命令的帮助[1]”和“配置的帮助[5]”,例man 5 pwd 表示查看配置的帮助文件;
(2)whatis [命令]
•可以快捷地、简洁地显示命令的作用、名称等重要信息;
(3)apropos [命令]
•快速查看命令的配置文件的信息;
(4)help [命令]
•有的命令是shell内置命令,普通查找命令查不到所在目录,故可以用help命令来查看;
(5)date —— 显示当前时间
•可用date修改时间,用man date查看命令格式,用对应格式更改当前真实时间;
•例如: ;
七、用户管理命令
(1)useradd [用户名]—— 创建用户;
(2)passwd [用户名]—— 设置/更改 密码;
(3)who —— 查看当前登录的用户信息;
(4)w —— 查看系统详细用户信息;包括用户闲置时间、累计占用CPU时间、当前进程占用时间等信息;
八、压缩、解压命令
(1)压缩:gzip[文件名]; 解压:gunzip[文件名];
• gzip命令不能压缩目录,且压缩后不保存源文件;
-c —— 打包;
-x —— 解包;
*(2)打包/解包:tar[-cvf][压缩后文件名][目录名] - -v —— 打包后显示打包信息;
-f —— 指定文件名;
-z —— 打包后再压缩/解包后再解压缩;
•要区分:tar -cf [打包后的名字] [被打包名];
tar -xf [被解包名] [解包后的名字];
•例:tar-cvf animal.tar animal —— c打包animal并v显示信息再f指定文件名为animal.tar;
(3)压缩:zip [选项-r(目录)][压缩后名字][文件或目录名]; 解压:unzip [解压文件]
•zip -r animal.zip aniaml —— 压缩animal目录为animal.zip;
•unzip animal.zip —— 解压animal.zip当前目录下
(4)压缩文件:bzip2 -k(保留源文件)[文件] ; 解压:bunzip2 [文件名];

九、网络命令
(1)write [用户名] —— 对目标用户发送信息;
•ctl+退格删除文本,ctl+D结束;
•write命令发送信息需要对方在线,用w或who命令可查看当前登录在网络上的用户信息;
(2)wall(write all) —— 给所有在线用户发信息;
(3)ping [选项] [IP地址] —— 测试网络的连通性(重点丢包率);
•例如:ping -c 3 192.168.100 —— ping3次192.168.1.100地址;
(4)ifconfig —— 配置临时网络;
(5)mail [用户名] —— 即使用户不在线也可以发信息,登录后用mail命令查看邮箱;
•查看邮箱时可输入对应编号查看对应邮件;
•ctl + D 退出邮箱; “h”查看邮箱列表; “d + [编号]”删除对应邮件;
(6)last —— 查看当前与过去用户的登录信息;
(7)lastlog —— 查看登录日志,包括程序; -u [userID] —— 查看对应用户最后登录时间;
(8)traceroute(路由追踪) [URL] —— 查看到URL的路径信息;

(9)netstat(网络状态) [选项];
•常用:①netstat -tuln ——查看本机监听的端口;
②netstat -an —— 查看本地所有网络连接;
③netstat -rn —— 查看本机路由表;
(10)setup —— 配置网络信息,可手动设置网卡的IP、子网掩码、DNS等信息;
(11)mount(挂载) /dev/sr0 /mnt/cdrom/ umount(卸载) /mnt/cdrom/
•/mnt/cdrom是分配给CD光驱的盘符,/dev/sr0是系统目录;
•挂载的意思是 找到硬件后,分配一个盘符(目录),用系统配置sr0(iso9660规定为sr0)挂上/mnt/cdrom,系统就可以自动寻找到对应文件;
•挂载成功后就可以用ls查看对应文件了;

十、关机重启命令
(1)shutdown [选项] [时间]
•建议只用shutdown命令

(2)其他关机命令
	①halt;	②poweroff;	③init 0;
(3)重启命令
	①reboot;	init 6;

(4)init [系统运行级别]
	•设置系统启动时要进入的模式;
	•可用runlevel命令查看当前模式;
(5)logout —— 账户登出;
	*很重要的步骤,操作完服务器一定记得
	 要登出账户;

III、文本编辑器 常用操作
一、Vim工作模式
(1)命令模式:①vi 进入; ②wq退出;
(2)插入模式:①i/a/o 进入; ②ESC退出;
(3)编辑模式:① “:”进入 ; ②回车结束编辑;

二、插入命令
命令 作用
a 在光标所在字符后插入
A 在光标所在行尾插入
i 在光标所在字符前插入
I 在光标所在行首插入
o 在光标下插入新行
O大欧 在光标上插入新行

*撤销:快捷键[u]

三、定位命令
命令 作用
:set nu 显示行数
:set nonu 取消显示行数
gg 到第一行
G 到末行
nG 定位到第n行
:n 可视化定位到n行
$ 定位到行尾
0零 定位到行首

四、删除命令
命令 作用
x 删除光标所在处的字符
nx 删除光标所在字符后n个字符
dd 删除光标所在行,ndd删除n行
dG 删除光标所在行到文件末尾内容
D 删除光标所在处到行尾内容
:n1,n2d 可视化删除指定范围行
五、复制和剪切命令
命令 作用
yy 复制当前行
nyy 复制当前行一下n行
dd 剪切当前行
ndd 剪切当前以下n行
p 粘贴在当前光标所在行下
P 粘贴在当前光标所在行上

六、替换和取消命令
命令 作用
/string 搜索指定字符串
:set ic 搜索时忽略大小写
n 搜索后按n查看下个匹配位置
:%s/old/new/g 全文范围搜索指定字符串,并替换
:n1,n2s/old/new/g 指定行范围搜索替换

七、搜索命令
命令 作用
r 取代光标所在处字符
R 从光标所在处开始替换字符,按Esc结束;
u 取消上一步操作;

八、保存命令
命令 作用
:w 保存修改
:w [new] 另存为指定目录或文件
:wq 保存退出
ZZ 快捷键,保存退出
:q! 不保存退出
:wq! 强制保存退出(文件所有者及root)

九、vim编辑小技巧
(1):r [文件] —— 在文本中导入指定的文件内容;
•在vim或shell脚本编辑时,可用!which [命令]不退出编辑环境就能知道命令所在目录;
(2)map [设定快捷键] [命令] —— 定义快捷键,执行对应命令;
•例:map ^P I# —— 定义快捷键,执行I定位光标到所在行首进入插入模式,插入“#”再执行 进入命令模式;
•以上例为例,设定快捷键要同时按ctl+V+P;
(3)n1,n2s/^/#/g —— 范围n1到n2,行首用#插入,#代表注释;这类似于范围替换n1,n2%s/old/new/g
•n1,n2s/#/ /g —— 将范围行中#用空白代替,相当于取消了注释;
•n1,n2s/^#/ /g —— 直将范围内行首有#的替换成空白,不至于将行中有#的地方也修改了;
(4)ab [关键字] [要替换成的文本] —— 将设定一个关键字替换成指定文本,意为后文中出现其关键词用 指定文本替换;
•例:ab mail 527177147@qq.com —— 右后敲入"mail"时会自动替换成我的邮箱地址;
(5)保存以上这些配置
•自定义关键字或快捷键重启之后就没有了,这就需要把这些命令保存至文件.vimrc中,下次启动时自动 生效;具体做法时:在/home/[用户名称]/目录下创建.vimrc文件,vi 命令打开后存入这些自定义的这 些命令保存退出就可以了;
IV软件包管理
一、软件包分类

1.源码包

2.二进制RPM包

*模块依赖性可用此网站查看所依赖的包的模块:www.rpmfind.net

二、RPM包命令管理
1.RPM包命名规则
•例: 文件名httpd.2.2.15-10.el6.centos.1.i686.rpm
httpd:文件名;
.2.2.2.15:软件版本;
.10:发行次数; .i686:支持的CPU位数,这里支持32、64位;
.el6.centos:适合的LINUX系统; .rpm:后缀,给管理员和用户看的,系统本身不存在缀后;
2.RPM包安装、升级与卸载命令
(1)rpm [选项] [包全名或包名];
•安装:rpm -ivh [包全名]
•升级:rpm -Uvh [包全名]
•卸载:rpm -e [包名]
*注意:安装RPM时要用包全名,卸载只需包名, 因为卸载是在系统数据库中进行的;
3. RPM包查询命令
(1)rpm [选项] [包全名或包名];
•查询已安装包信息:rpm -qi [包名]
•查询未安装包信息:rpm -qp [包全名]
•查询已安装包路径:rpm -ql [包名]
•查询未安装包路径:rpm -qpl [包全名]
•查询系统文件所属包:rpm -qf [文件名]
•查询RPM包所依赖包:rpm -qR [包名]
•查询未安装包所依赖包:rpm -qpR [包全名]
4.RPM包校验与修复命令
(1)rpm -V(verify) [已安装包名] —— 校验指定的包中文件是否完整或被修改;
•校验值代表的含义:
S 文件大小是否改变;
M 文件类型或文件权限是否改变;
5 文件MD5校验和是否改变;
D 设备的中,从代码是否改变;
L 文件路径是否改变;
U 文件所属者是否改变;
G 文件所属组是否改变;
T 文件修改时间是否改变;
(2)RPM包的文件提取
rpm2cpio [包全名] | cpio -idv [文件绝对路径]
•rpm2cpio 将rpm包转成cpio格式;
•cpio 是一个标准工具,用于创建软件档案文件和从档案文件中提取文件;
•cpio [选项] [文件/设备]
①-i:copy-in模式,还原; ②-d:还原时自动新建目录; ③-v:显示详细信息;
★实验
①先查看下bin目录下的mkdir命令所属包:rmp -fq /bin/ls
②删除ls命令文件:rm /bin/mkdir
③将ls所属包的rpm格式转为cpio格式,这样就能被cpio工具提档文件了;
④提取软件档案中的/bin/mkdir文件到当前目录(当前目录可用“.”表示);
⑤3、4两步骤的具体命令:
rpm2cpio /mnt/cdrom/Packages/[mkdir所属包全名] | cpio -ivd ./bin/mkdir
⑥这样就提取出了bin下的mkdir文件在当前目录下,把当前目录下的/bin/mkdir移动到根目录下的 bin下就OK了;
三、RPM包yum在线管理
1.IP地址配置
•setup命令可以进入图形界面操作,但是系统重启后这块网卡默认不启动;
•将/etc/sysconfig/network-scripts/ifcfg-eth0配置文件的ONBOOT选项的no修改为yes;
•重启网络服务service network restart;
2.网络yum源
•vi /etc/yum.repos.d/CentOS-Base.repo
•yum源文件中基本内容含义
[base] 容器名称,一定要放在[]中;
name 容器说明,可随意更改;
mirrorlist 镜像站点,可注释掉;
baseurl 本地yum源服务器地址,默认时CentOS官方yum源可使用的服务器,如果速度慢可 以行更换;
enabled 表示次容器是否生效,如果enable=0就不生效,不写或=1表示生效;
gpgcheck 1表示RPM数字证书生效,0不生效;
gpgkey 数字证书的公钥文件保存位置,不用修改;
3.yum在线命令
(1)yum list —— 查询服务器上所有可用软件包列表;
(2)yum search [关键字] —— 搜索服务器上所有跟关键字相关的软件包,用包名就可以(包全名);
(3)yum -y install [rpm包名] —— -y表示自动yes,自动在服务器上下载安装所依赖包;
•例:yum -y install hpptd —— 安装c/c++语言的编译软件gcc;-y自动回答yes;
(4)yum -y update [rpm包名] —— 升级rpm包;
*升级后面一定要跟rpm包名,不然就是升级系统了,连同内核都升级,导致系统不能正常使用;
(5)yum -y remove[rpm包名] —— 卸载rpm包,yum卸载可能将其他依赖rpm包的软件出错,因为包
的依赖性是一个依赖一个,有可能其他组件也依赖其下的包,故要谨慎卸载;
(6)yum grouplist —— 查看rmp包组,如所示中文需要到虚拟机中查看英文;
(7)yum -y groupinstall [rpm组] —— 安装rpm组,注意要输入英文组名,且包名有空格要用"_";
(8)yum -y groupremove [rpm组] —— 卸载rpm组;
4.yum源的光盘搭建
(1)挂载光盘:mount /dev/sr0 /ment/cdrom
(2)使在线yum失效(改后缀):①cd /etc/yum.repos.d/
②mv CentOS-Debuginfo.repo CentOS-Debuginfo.lkj(共3个)
(3)修改光盘yum源文件
①因为是光盘源yum,所以网络地址改为文件目录地址:file:///mnt/cdrom
②注释掉两个失效文件地址;
③enabled设置为1,使yum生效;
*注意:vim修改配置文件内容一定要注意格式,比如注释#位置不同、内容有空格都有可能产生报错;
四、RPM包与源码包区别
1.安装位置
RPM包默认安装路径
/etc/ 配置文件安装目录
/usr/bin/ 可执行命令安装目录
/usr/lib/ 程序所使用的函数库保存位置
/usr/share/doc 基本软件使用手册保存位置
/usr/share/man/ 帮助文件保存位置
(1)RPM包安装位置
•大部分rpm包安装默认遵循的规则:
(2)源码安装位置
•安装在指定位置中,一般为:
/usr/local/软件名称/ ;
(3)安装路径不同带来的影响
•rpm包可执行文件有两种启动方式:①绝对路径;②服务管理命令;
* service是红帽子公司提供的专门快速启动rpm包的服务管理命令,其他系统有可能会没有或不同;
•例:①绝对路径启动阿帕奇 —— /etc/rc.d/init.d/httpd start
②服务管理命令启动 —— service httpd start
•源码包一般安装在用户指定目录下,而服务管理命令是根据系统默认路径找到可执行文件执行的, 故源码包只能通过绝对路径启动;
★实验:(在本地局域网下启动一个网络服务器)
①用yum安装httpd包;
②启动httpd;
③成功后在网页上输入虚拟机所在IP地址,查看未配置的网页内容;
④可在/var/www/html/目录下创建index.html文件,用vi编辑内容,重启httpd就可查看内容;
五、源码包的安装
(1)首先下载源码包压缩文件;以安装apache为例:https://mirror.bit.edu.cn/apache/httpd/;
(2)用winSCP软件将文件拷贝至LINUX系统目录中;
(3)解包解压至指定目录下;
*注意①源代码保存位置:/usr/local/src/ ②软件安装位置:/usr/local

(4)进入压缩包所在目录,并解压缩:
	*在安装源码包时应进入压缩包目录下查看安装说明INSTALL文件和使用说明README文件;
(5)安装前进行软件配置与检查 ./configure –prefix=/usr/local/apche2 —— 根据安装说明安装;
	*在执行完软件配置与检查操作后,会产生一个MAKEFILE

(6)①make 编译;
•在安装之前不会向系统写数据,如果配置检查与编译步骤报错可用make clean清空编译 产生的临时文件;
②make install 编译安装;
•启动apache:/usr/local/apache2/bin/apachectl start
*为什么这样启动?因为安装说明是这样规定的:
•对应信息:
①软件配置检查,PREFIX对应安装目录;
②编译(需要gcc编译软件);
③安装;
④启动格式;[安装目录]/bin/apachectl start
六、脚本安装(例Webmin)
1.在网上下载脚本压缩包;
2.用WinSCP软件拷贝到LINUX系统目录中;
3.解压缩并解包;—— tar -zxvf webmin-1.981
4.cd到文件目录下; —— cd webmin-1.981
5.执行setup.sh脚本文件,全程自动安装,用户只需回车下一步即可;—— ./setup.sh
6.提示输入用户名和密码;
7.完成;
8.可在浏览器中输入服务器IP地址加端口号(默认10000)可查看Webmin页面;
*注意,如果查看不了很可能是没关防火墙,关闭命令:service iptables stop
V shell基础
一、shell概述
1.shell是命令解释器,为用户提供一个向LINUX内核发送请求运行程序的界面系统级程序,用户可以用 Shell来启动、挂起、停止、编写一些程序;
2.可通过vi /etc/shells命令查看系统支持的shell类型;
3.shell语法类型有两种:①Bourne; ②C;
4.linux系统一般用的是Bash;
二、shell的执行方式
1.echo [选项] “要输出输出内容” —— 输出命令;
-e :支持反斜杠转义的内容;
2.反斜杠"“各转义字符作用
控制字符 作用
\ 输出”“本身
\a 输出警告音
\b 退格
\c 取消输出行末的换行符。和-n选项一致
\e SPACE键,空格
\f 换页符
\n 换行符
\r 回车键
\t 制表符
\v 垂直制表符
\0nnn 按照八进制ASCII码表输出字符,0是数字,nnn是三位八进制
\xnn 按照十六进制ASCII码表输出字符,nn是两位十六进制
例:①echo -e “a\tb\tc\nd\te\tf”
输出:a b c
d e f
②echo -e “\0101\t\0102\t\0103\n\0104\t\0105\t\0106”
输出:a b c
d e f
3.字符颜色
•颜色输出格式:echo -e “\e[1;[数字编号][输出内容]\e[0m”
其中”\e[1"与"\e[0m"是必须格式,颜色根据颜色表自定义;
30m 31m 32m 33m 34m 35m 36m 37m
黑色 红色 绿色 黄色 蓝色 洋红 青色 白色

★ 写第一个脚本hello world!
(1)写脚本内容
[root@localhost sh]#vi hello.sh
#!/bin/bash —— 这句话最高记住,#这里不表示注释,是一种格式
#The first program —— 脚本注释说明
#Author:LiuXiaoKango(E-mail:527177147@qq.com)
echo -e "Hello world'!'\n\e[1;31mHello world\e[0m\n\e[1;35m Hello world\e[0m\n\t\t\tEnd "
(2)执行脚本
①chmod 755 hello.sh —— 赋予执行权限;
/root/sh/hello.sh 或 ./hello.sh —— 绝对路径执行/相对路径;
②bash hello.sh —— 通过bash调用脚本;
三、Bash基本功能
1.历史命令与补全
(1)•history [选项]
①-c:清除历史命令; ②-w [历史命令保存文件]:写入此次登录使用过的命令;
•history命令直接查看历史命令,但不会保存此次登录使用过的命令,重启或使用-w选项可强制写入;
•/etc/profile默认保存1000条,可自行进入文件修改;
(2)历史命令的调用
•!n:n为历史命令文件中的对应编号,!n表示为重复执行第n条历史命令;
•!!:重复执行上条命令;
•![字符串]:重复执行上一条以该字符串开头的命令;
(3)Tab键命令、文件、目录名补全
•①单击Tab补全; ②双击Tab显示所有与当前输入名称开头的文件、目录、或命令;
2.Bash的别名与快捷键
(1)别名
①alias [别名]=[原名]; ②unalias [别名];
•永久生效:vi /root/.bashrc
(2)命令执行顺序
①绝对路径或相对路径的命令;
②别名;
③内部命令(如cd);
④按$PATH环境变量定义的目录的查找顺序最先查找到的命令;

(3)Bash快捷键

		•蓝色字体为经常使用的快捷键,应熟练;

四、输入输出重定向
1.输入重定向
(1)标准输入重定向
•wc —— 统计从键盘中输入的字符数、单词数(以空格符判断)、行数;
(2)文件输入重定向
•wc [选项][文件名] —— 统计文件中的字符数、单词数(以空格符判断)、行数;
-c 统计字符数; -w 统计单词数; -l 统计行数
2.输出重定向
(1)标准输出重定向
•[命令] > [文件名] —— 将正确命令信息保存至文件(覆盖方式);
•[命令] >> [文件名] ——将正确命令信息保存至文件(追加方式);
•[错误命令] 2> [文件名] —— 将错误命令信息保存至文件(覆盖方式);
•[错误命令] 2>> [文件名] —— 将错误命令信息保存至文件(追加方式);
*(2)正确&错误一同存储重定向(常用)
*[命令] &> [文件名] —— 将正确和错误的命令提示信息一共存在目标文件(覆盖方式);
*[命令] &>> [文件名] —— 将正确和错误的命令提示信息一共存在目标文件(追加方式);
*[命令] > [文件名a] 2>> [文件名b] —— 将正确的存文件a,错误的存文件2中;
•无底洞,垃圾信息都可往里放:/dev/null
五、多命令顺序执行与管道
1.多命令顺序执行;
①[命令1];[命令2]… —— ";"顺序执行命令,即使出错也会执行下去,命令之间无逻辑关系;
②[命令1]&&[命令2]… —— "&&"命令1正确执行,命令2才能执行(逻辑与);
③[命令1]||[命令2]… —— “||“命令1错误,命令2才能执行(逻辑或);
★实验
①dd if=[输入文件] of=[输出文件] bs=[单元数据块的字节数] count=[个数]
•dd命令相当于复制copy命令,但dd可以指定设备、硬盘、分区等,比copy更强大;
•date;dd if=/etv/zero of=/root/testfile bs=1k count=102400;date
—— 打印开始时间;把/dev/zero文件以bs为单位,count为数量,向/root/testfile文件写内容;
②./configure && make && make install —— 安装时前面执行成功时就会执行下一条的编译命令…
③ls [目录] && echo “yes” || echo “no” —— 命令成功输出"yes”,命令错误输出"no”;
2.管道符
(1)先看看内容搜索命令
•grep [选项] “搜索内容” [文件名]
-i 忽略大小写; -n 显示行号; -v 反向查找;
–color=auto 突出显示所匹配关键字;
例:grep -in –color=auto “root” /etc/passwd —— 不区分大小写并显示行号找passwd文件中关键 字为"root"的内容;
(2)管道符的作用
•netstat -an | grep –-color=auto [fileName]
3.通配符

	•例:①ls ?abc	—— 查看abc前有1字符的文件或目录;
		 ②ls *abc	—— 查看abc前有任意字符的文件或目录;
		 ③ls [abcd]bc —— 查看bc前有"abcd"中任意一个字符的文件或目录;
		 ④ls [^1-9]abc —— 查看abc前有除1-9字符外有任意一个字符的文件或目录;
4.常用特殊符

	•例:name=sc —— 定义name变量为sc
		①echo '$name' —— 输出的是$name;
		②echo "$name" —— 双引号中的内容特殊符号$起作用,故输出的是sc;
		③echo '`date`' —— 同'$(date)',里面是系统命令,单是用的是‘’,故原样输出;
		④echo "(date)" ——双引号括起来的,故()起作用,把括号内的字符当命令使用; 

六、Bash的变量
1.shell变量概述
(1)变量的命名
•不能以数字开头
•变量默认为string类型;
•’=‘连接变量与值,等号两边不能有空格;
•环境变量名最好设为大写;
(2)变量的分类
①自定义变量;
②环境变量;主要保存的是与系统操作环境相关的数据;
③位置参数变量;变量名不能自定义,变量作用是固定的;
④系统预定义变量;变量名不能自定义,变量作用是固定的;
(3)变量值的叠加
•增加变量值,例:name=abc; abc="$abc"def;
(4)变量的调用
例:echo $name;
(5)查看变量
•例:set —— 查看系统中所有变量;
(6)删除变量
•unset [变量名];
2.环境变量
(1)什么是环境变量?
•用户自定义变量只在当前Shell中生效,而环境变量会在当前Shell和其所有子Shell中都生效;
•如果把环境变量写入相应的配置文件,那么这个环境变量会在所有的Shell都生效;
(2)设置环境变量
•export [变量名]=[变量值] ——声明变量;
•env ——查询所有环境变量;
•set —— 查询所有变量;
•unset —— 删除变量;
*pstree —— 查看进程树;
(3)系统常见环境变量
①PATH —— 系统命令查找路径
•echo P A T H — — 查 看 当 前 系 统 查 找 命 令 的 路 径 ; 例 : P A T H = " PATH —— 查看当前 系统查找命令 的路径; 例:PATH=" PATHPATH="PATH":/root —— 将root目录添加进PATH查找路径中,这样系统查找命令的路 径中就有/root目录,这样就能找到hello.sh脚本了(前提是/root目录下写了该sh脚本);
②PS1 —— 定义系统提示符的变量
提示符 作用
\d 显示日期,格式为“ 星期 月 日”
\h 显示简写主机名,如默认“locallhost”
\t 显示24小时机制时间,格式为“HH:MM:SS”
\T 显示12小时机制时间,格式为“HH:MM:SS”
\A 显示24小时机制时间,格式为“HH:MM”
\u 显示当前用户名
\w 显示当前所在目录的完整名称
\W 显示当前所在目录的最后一个目录名
# 执行的第几个命令
$ 提示符。root用户为#,普通用户为$
例:PS1=’[\t@\h \W]$ ’ —— 让提示符变成[时间@主机名 当前目录最后一个目录名]#
输出:[11:49:07@localhost ~]#
3.位置参数变量

(1)各变量含义

★例:做一个计算器
•test01.sh $1 $2 —— test01.sh为脚本名称,$1、$2为位置参数变量;
①编写脚本test01.sh
#! /bin/bash
num1=$1
num2= 2 s u m = 2 sum= 2sum=(( n u m 1 + num1+ num1+num2))
echo “$1 + $2 = $sum”

4.预定义变量

★实验:编写test02.sh脚本,输出当前、后台进程号
•vi test02.sh —— 编写脚本test02.sh
#!/bin/bash
#The print the PID of curent process and PID of daemon process(打印对当前脚本进程号与后台最	后一个进程号)
echo -e "The curent process PID is $$; \n"
#搜索当前程序然后放入后台
find /root/sh -name test02.sh &
echo -e "The daemont process PID is $! \n"
*5.接收键盘输入命令read
	•read [选项][变量名] —— 在vi编辑器里可用该命令;
		-p [提示内容]:等待read键盘读取时,先打印提示信息;
		-t [秒数]:read命令等待输入时,使用此选项可指定等待时间;
		-n [字符数]:read命令只接受指定字符数,超过自动执行下一步;
		-s :隐藏输入的数据,适用于输入密码;
★实验:编写test03.sh脚本,使键盘提示输入名字、性别(M/W)、30s内输入邮箱等信息;
6.数值运算与运算符
	•LINUX默认变量为string类型,想要使变量进行数值类型运算,有三种方法:
	(1)方法一:declare -i var=$a+$b —— 声明变量var为int类型,取值为a与b的和;
		•declare [+/-][选项][变量名]
			-:给变量设定类型属性;		-i:声明变量为int型;	-x:声明为环境变量;
			+:取消变量类型属性;		-p:显示指定变量的被声明的类型;
	(2)expr或let数值运算工具
		例:result=$(expr $a + $b)
	(3)$(([运算式])) 或 $[运算式]
		•这是最常用的运算式格式;
		例:result=$(($a+$b)) 或 result=$[运算式];
7.变量测试与内容替换












	•写脚本时有可能需要用到,要求会用能看懂就行,没必要记住;
	例:①num1=20;num2=10;
			•num1=${num2-1000}
			•echo $num1
			•输出:um1=10;

七、环境变量配置文件
1.简介
环境变量配置文件中主要是定义对系统的操作环境生效的系统默认环境变量,例如PATH、HISTSIZE、PS1、HOSTNAME等默认环境变量;
•“source [配置文件]” 或“ . [配置文件]” —— 配置文件需要重启才会生效,source命令可使其立即生效;
•配置文件一般有下面几个:
/etc/profile —— 对所有用户都生效的配置文件;
/etc/profile.d/*.sh
/etc/bashrc
~/.bash_profile —— 对当前用户生效,~表示当前用户家目录;
~/.bashrc

2.作用

•环境配置文件优先级

(1)/etc/profile配置文件定义了以下环境变量:
	①USER;	②LOGNAME;	③MAIL;		④PATH;		⑤HOSTNAME;		⑥HISTSIZE;
(2)/etc/profile.d/*.sh 配置文件调用了如/etv/sysconfig/i18n等文件,其又调用了						/etc/sysconfig/i18n文件,其保存了系统采用的语言格式为“LANG="zh_CN.UTF-8"”;
(3)~/.bash_profile中又有如下内容 ;
	PATH=$PATH:$HOME/bin —— 让当前用户以追加的方式定义PATH;
	export PATH	—— 声明PATH为环境变量;
(4)~/.bashrc中定义了别名,且调用了/etc/bashrc配置文件;
(5) /etc/bashrc定义了子shell的配置环境;
3.其他配置文件和登录信息
(1)注销时生效的环境变量配置文件:~/.bash_logout
(2)历史命令保存文件:~/bash_history —— 需退出登录后才会保存进去,可用history -w强制保存;
(3)Shell登录信息:
	①本地终端登录信息配置文件/etc/issur
		•在终端登录时显示的信息;
		•支持转义符如:\l显示登录的终端号、\t显示当前系统时间;

	②远程终端登录信息配置文件/etc/issur.net
		•不能用转义符;
		•此项服务需要在ssh配置文件/etc/ssh/sshd_config里选择开启:修改Banner /etc/issur.net
		•配置完成后记得重启ssh服务:service sshd restart
	③登录后的提示信息:/etc/motd
		•不管是远程还是终端登录后都会显示;

vi Shell编程
一、 正则表达式
1.正则表达式与通配符
•通配符用来匹配符合条件的文件名,且必须完全匹配。例ls、find、cp这些命令不支持正则表达式, 所以只能用shell自己的通配符进行匹配了;
•正则表达式用来在文件中匹配符合条件的字符串,正则是包含匹配法。grep、awk、sed等命令可以支持 正则表达式。
2.基础正则表达式

•例:
	①ab* —— 匹配字符a后面出现任意个a(包括0次)的行;
	②a..c —— 匹配a与c中间有任意字符(不包括换行符)的行;
	③^abc —— 匹配以abc为行首的行;
	④end$ —— 匹配以end结尾的行;
	⑤is[a-g] —— 匹配以is后跟a到g的范围任意一个字符的行;
	⑥is[^a-g] —— 匹配is后跟 除了a-g范围外任意一个字符的行;
	⑦\.$ —— 匹配以.结束的行(.本代表任意字符,\取消其作用,使其成字符形式);
	⑧[a-z]\{3\} —— 匹配[a-z]范围中的字符连续出现了3次的行;
	⑨[a-z]\{3,\} —— 匹配[a-z]范围中的字符连续出现了3次及3次以上的行;
	⑩[a-z]\{2,6\} —— 匹配[a-z]范围中的字符连续出现至少2次最多出现6次的行;

二、 字符截取命令
1.cut [选项] [参数] [文件] —— •cut用来截取列,通常与grep命令搭配使用,可截取制表符分割的列或 指定符号分割的列;cut无法截取以多空格符分隔的列,可用awk命令;
-f:指定列号; -d:指定分隔符进行分割
例:有文件/root/test/student.txt
Id Name Class Mark
1 LKJ 1812 90
2 LXK 1812 89
3 ZS 1811 100
4 LS 1811 68
•cut -f 2 /root/test/student.txt —— 截取Name列;
•cut -f 2,4 /root/test/student.txt—— 截取Name与Mark列;
•cut -d “:” -f 1 /etc/passwd —— 截取用户信息文件passwd里以":"分隔的第一列,通常为用户名
*df -h —— 查看硬盘分区情况;

★实验:找出/root/install.log安装日志中以“-”号为分隔符的第一列的所有内容
	•cat /root/install.log | grep "-" | cut -d "-" -f  1

2.printf '输出类型与格式' [输出内容]
	•printf不能与cat等命令一同使用,如:cat /root/test/student.txt | printf %s 
(1)输出类型:
	 ①%ns				输出字符串,n是数字,指要输出几个字符;
	 ②%ni				输出整数,n同上;
	 ③%m.nf			输出浮点数,m为总共位数,n表示小数位数;
(2)输出格式:

*例:
	•printf '%s %s %s\n' 1 2 3 4 5 6 —— 按3位一换行,以空格隔开输出;
	•printf "%s\t%s\t%s\t%s\n" $(cat /root/test/student.txt) —— 等同于cat student.txt



*3.awk命令(又称是awk编程)
	—— 首先读取行内容,将内容赋值给对应变量,然后进行动作处理,依次进行下去;
(1)格式

awk ‘[条件1]{动作1} [条件2]{动作2}……’ [文件名]
例:awk ‘{printf $2 “\t” $4 “\n”}’ /root/test/student.txt
—— 提取Name列与Mark列;
df -h | awk ‘{print $5}’ —— 截取处文件系统各分区的占用率;
•awk命令支持printf与print两种输出命令,而shell只支持printf;

(2)条件命令
	①BEGIN —— 条件,在所有动作执行前执行此条件动作;
	例:awk 'BEGIN{print "test BEGIN"} {print $2 "\t" $4}' student.txt
	②END —— 条件,在所有动作都执行完后执行此条件动作;
	例:awk '{print $2 "\t" $4} END{print "\t\t test END"}' student.txt
	③FS —— 动作,指定分隔符;
	*这里有个注意点:截取/etc/passwd文件下所有有效登录用户的名称
		例:①cat /etc/passwd | grep /bin/bash | awk '{FS=":"} {print $1}'
			②cat /etc/passwd | grep /bin/bash | awk 'BEGIN{FS=":"} {print $1}'
★这里有点区别,①式中awk直接把首行内容读进缓存,写进位置参数变量1中,然后执行动作1({FS=":"}),指定此条awk命令以":"为分隔符,但是次缓存中的内容已经赋给了变量$1,无法对已读取过的首行生效,所以变量是把首行的所有数据作为一列,然后紧接着执行动作二({print $1})把变量输出,导致分隔符只对首行以下的内容生效;
而②式中加入了BEGIN判断条件,在所有动作执行前执行动作1({FS=":"},这样awk在把首行内容赋给位置参数变量1前指定好了分隔符,这样就对所有内容分隔符":"都会生效;

(3)关系型
	例:cat student.txt  | grep -v Name | awk '$4 >= 90 {print $2}'
			—— 截取student.txt文件中成绩大于等于90的人名字,-v为排除;
(4)实验:截取文件系统中根分区的存储占用率






	①df -h												—— 查看文件系统使用情况;
	②df -h | grep sda5									—— 选出根目录的行;
	③df -h | grep sda5 | awk '{print $5}'				—— 截取占用率那一列;
	④df -h | grep sda5 | awk '{print $5}' | cut -d "%" -f 1
													—— 以%为分隔符,截取数字部分,也就是16;

4.sed [选项]‘[动作]’[文件名]
•类似于vi命令,但vi只能修改文件内容,sed命令可以修改文件内容的输出,而不更改源文件内容;、
•sed命令是一种轻量级流编辑器,sed主要用来将数据进行选取、替换、删除、新增操作的命令;
(1)选项:
-n 一般sed会把所有数据都输出到屏幕上,而此选项只会将sed处理过的行输出到屏幕;
-e 允许对输入的数据,应用多条sed命令编辑;
-i 把sed处理的结果同步到源文件,而不是从屏幕上输出;
(2)动作:
na: 追加,在当前行后添加一行或多行,除最后一行外,需要在每行末尾加“\”表示输入未完结;
nc: 行替换,用c后面的字符串替换原数据行;替换多行时,除最后一行外,每行末尾需用\代表数据未完结;
ni: 插入,在当前行前插入一行或多行。插入多行时除最后一行外,每行末尾需用\代表数据未完结;
nd: 删除指定的行;
np: 打印指定的行;
ns: 字符串替换,用一个字符串替换另一个字符串;格式为“行范围s/旧字串/新子串/g”。
•例:动作
①sed -n‘2p’student.txt —— 打印student.txt中第二行的数据;
②sed ‘2i test0’ student.txt —— 在文中第二行前插入文本test0并全部打印出来;
③sed ‘2a test0’ student.txt —— 在文中第二行后插入文本test0并全部打印出来;
④sed ‘2a test0
test1’ student.txt —— 在文中第二行后插入文本test0并换行插入文本test1;
⑤sed ‘2c test0’ student.txt —— 把文中第二行替换成test0;
⑥sed -i ‘5c 4\tmz\t1811\t95’ student.txt —— 将文中第五行改为“4 mz 1811 95”,并同步到文件;
⑦sed -s ‘s/mz/LS/g;s/ZS/WW/g’ student.txt —— 允许连续使用多个sed命令编辑;格式:s/old/new/g;s/old/new/g
三、 字符处理命令
1.排序命令:sort [选项] [文件名] —— 对输出内容进行字符排序,默认是以字符类型排序;
•选项:-f 忽略大小写; -n 以数值类型进行排序; -r 反向排序;
-t 指定分隔符,默认时制表符;
-k n,m 按指定的字段范围排序,n字段开始,m字段结束,默认为到结尾;
•例:
①sort /etc/passwd —— 对用户信息文件进行默认排序;
②sort -r /etc/passwd —— 反向进行排序;
③sort -t “:” -k 3,3 /etc/passwd —— 指定分隔符’:’,以第3字段(列)开始第3字段结束;
④sort -n -t “:” -k 3,3 /etc/passwd
—— 指定分隔符“:”,以第3字段开始第三字段结束,-n是以数值类型排序;
2.统计命令:wc [选项] [文件名] —— 对输出内容进行字符统计(行、单词数、字符数等);
•选项:-l 只统计行数; -w 只统计单词数; -m 只统计字符数;
•例:
①wc -l /etc/passwd —— 统计用户信息文件中的行数;
②wc -w /root/install.log —— 统计安装目录中的单词数(空格分割);
③wc -m /root/install.log —— 统计安装目录中的字符数;
四、 条件判断
•格式:test [选项] [文件名] —— 或 [ “文件1” “选项” “文件2” ];
1.按照文件类型判断

	•例:
		①test -d /root/test && echo yes || echo no —— 判断test是否是目录,是输出yes;
		②[ -e  /root/test ] && echo yes || echo no —— 判断test文件是否存在,目录也算文件;
		③[ -f /root/sh/test01.sh ]  && echo yes || echo no —— 判断test01.sh是否为普通文件
2.按文件权限判断

3.两个文件比较

4.两个整数比较





5.字符串的判断

6.多重条件判断
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值