目录
第一讲 Linux系统简介
一、UNIX与Linux发展史
1969年,美国贝尔实验室的肯·汤普森在DEC PDP-7机器上开发出了UNIX系统。
1971年,肯·汤普森的同事丹尼斯·里奇发明了C语言。Linux和UNIX都是用C语言写的。
1973年,UNIX系统的绝大部分源代码用C语言重写,这为提高UNIX系统的可移植性打下了基础。
操作系统 | 公司 | 硬件平台CPU |
---|---|---|
AIX | IBM | PowerPC |
HP-UX | HP | PA-RISC |
Solaris | Sun | SPARC |
Linux | Red Hat Linux、Ubuntu Linux…… | IA(Intel、AMD、Cyrix、RISE……) |
1991年,Linux系统诞生,由芬兰大学学生李纳斯(Linus Torvalds)和后来陆续加入的众多爱好者共同开发完成。Linux是开源软件,源代码开放的UNIX。
Linux内核版本:Linux内核官网:www.kernel.org内核版本说明2.6.18目前最新版本3.11.10
企业在官网下载内核后,再添加自己的桌面,应用程序就变成了开发版本。
二、开源软件简介
开源软件与商业软件,商业软件是商业公司开发、发行和维护的软件,一般是收费的。开源软件的性能会更高。
开源软件:PHP、MySQL、Python、Ruby、MongoDB等,开源软件有很多。
开源软件的特点:1.使用的自由:绝大多数开源软件免费;2.研究的自由:可以获得软件源代码;3.散布及改良的自由:可以自由传播、改良甚至销售。开源≠免费,开源指的是开放源代码,源代码可以买卖。开源软件的构建成本比较低,安全性也会比较好。
支持互联网的开源技术LAMP:Linux操作系统、Apache Web服务器、MySQL数据库、PHP编程语言,最主流的网站平台搭建软件。
三、Linux应用领域
1、基于Linux的企业服务器
www.netcraft.com网站,采用踩点技术,向网站发送一个数据包,然后网站回复一个数据包,通过数据包内容判断该网站使用的是什么服务器。腾讯、淘宝、微软的后台服务器用的都是Linux。
2、嵌入式应用
1)手机、平板电脑,Android的底层就是Linux,IOS也是由Linux演变来的;
2)其他嵌入式应用,智能家电:智能电视、机顶盒、游戏机、数码相机等;智能卡系统;航空系统;银行系统……
3、Linux在电影娱乐业
好莱坞的很多电影都是在Linux系统的电脑中处理的。
四、Linux学习方法
为什么选择命令行?
Linux考虑的是服务器使用优先,考虑稳定考虑安全,管理服务器的都是专业人员,不考虑一般人的使用性。图形界面对系统的资源占用还是很大的,出错的可能性也会增加。
Linux上有英文的帮助、文档、实例
英文提示的困惑:Command not found命令写错了或未安装;No Such file or directory文件没找到。
忘掉Windows思维方式。
第二讲 Linux系统安装
一、VMware虚拟机的安装与使用
1、VMware简介
VMware是一个虚拟PC的软件,可以在现有的操作系统上虚拟出一个新的硬件环境,相当于模拟出一台新的PC,以此来实现在一台机器上真正的运行两个独立的操作系统。VMware官方网站 http://www.vmware.com
VMware主要特点:不需要分区或重新开机就能在同一台PC上使用两种以上的操作系统;本机系统可以与虚拟机系统网络通信;可以设定并且随时修改虚拟机操作系统的硬件环境。
2、建议的VMware配置
CPU:建议主频为1GHz以上;内存:建议1GB以上;硬盘:建议分区空闲空间8GB以上
二、系统分区
1、磁盘分区
系统分区也叫磁盘分区,是使用分区编辑器(partition editor)在磁盘上划分几个逻辑部分。碟片一旦划分成数个分区(Partition),不同类的目录与文件可以存储进不同的分区。
2、分区类型
主分区:最多只能有4个;逻辑分区。主硬盘越来越大,但主分区只有四个,所以拿出来一个主分区作为扩展分区。扩展分区:最多只能有一个,主分区加扩展分区最多有4个,不能写入数据也不能格式化,只能包含逻辑分区;逻辑分区可以正常的读写数据格式化。4个分区的限制不是Linux的限制而是硬盘的限制。
3、格式化
格式化(高级格式化)又称逻辑格式化,它是指根据用户选定的文件系统(如FAT16、FAT32、NTFS、EXT2、EXT3、EXT4等),在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间。格式化的目的就是为了写入文件系统。在Linux当中默认的文件系统EXT4格式化的时候,将硬盘分为多个4kb空间的数据块(Block)。一个10KB的文件,需要占用3个4KB空间剩余的2KB空间是不能再被其他文件占用的。硬盘中数据块的保存空间不一定连续,碎片整理就是为了将不连续存放的文件放在连续空间里方便查找。文件保存在多个不同的数据块当中,要想提取文件,就需要用到文件的分区表,每个文件都有独立的编号,这个编号叫做I节点号。
把大硬盘分成小硬盘,就是分区。分成小硬盘后不能直接使用还要格式化,格式化的主要目的是写入文件系统,写入文件系统主要做的两个工作一个是把硬盘分成一个一个等大小的数据块,另一个是同时建立一个I节点号列表,当查找文件的时候是通过I节点号来找到这个文件的条款,从而知道这个文件保存在了那几个数据块当中,从而打开这些数据块,拿出数据,拼凑成完整文件 。
4、硬件设备文件名
硬 件 | 设备文件名 |
IDE硬盘 | /dev/hd[a-d] |
SCSI/SATA/USB | /dev/sd[a-p] |
光驱 | /dev/cdrom或/dev/sr0 |
软盘 | /dev/fd[0-1] |
打印机(25针) | /dev/usb/lp[0-5] |
打印机(USB) | /dev/sub/lp[0-15] |
鼠标 | /dev/mouse |
Windows硬盘:分区,格式化,分配盘名就可以使用
Linux硬盘:分区,格式化,给分区建立设备文件名,分配盘名。设备文件名是自动检测分配的,我们能看懂就可以。
设备文件名:
/dev/hda1(IDE硬盘接口)a表示第一块硬盘,1表示第一块分区,即IDE硬盘第一块硬盘的第一块分区。
/dev/sda1(SCSI硬盘接口、SATA硬盘接口)
IDE硬盘最古老,理论上的最快传输速度是133MB/S;SCSI硬盘接口,理论上最快200MB/s。现在基本上都已经淘汰。
现在最常见的是SATA接口,SATA3每秒速度可达500MB,虚拟机上虚拟的硬盘也是SATA硬盘。
5、分区表示
1/2/3/4只能给主分区或扩展分区使用,逻辑分区不能使用。即使没有4个分区,逻辑分区也要从5开始划分。
任何情况下,5都代表第一个逻辑分区,系统自动识别。
6、挂载(Windows叫分配盘符)
分配盘符叫做挂载,盘符名叫做挂载点。
必须分区:/(根分区);swap分区(交换分区,即Windows中的虚拟内存,是内存的2倍,不超过2GB)
推荐分区:/boot(启动分区,200MB)
两个必须分区的区域如果不分区,Linux是无法正常使用的。推荐分区的区域/boot,是因为任何操作系统的正常启动都需要一定的空间,如果把根目录写满了,系统就无法启动,所以建议分区为/boot。
7、文件系统结构
Linux当中根目录/是最高级目录,在根分区当中保持一级目录/boot、/etc、/home,一级目录下有二级目录/文件。Windows中C盘D盘E盘是并列的,但是在Linux中,根目录可以单独分配一个磁盘空间。所有写入根目录的数据都在该分区,但是在根目录下的一个一级目录可以单独拿出来,再分配一块独立空间,写入该目录的数据都在该空间。从系统上看,所有目录都是根目录的子目录;从硬盘上看,每一个目录都有自己的独立空间。
8、总结
分区:把大硬盘分为小的逻辑分区
格式化:写入文件系统
分区设备文件名:给每个分区定义设备文件名
挂载:给每个分区分配挂载点
三、Linux系统安装
1、安装欢迎界面
“Install or upgrade an existing system”:安装或升级现有系统
“Install system with basic video driver”:安装过程采用基本的显卡驱动
“Rescue install system”:进入系统修复模式
“Boot from local driver”:退出安装从硬盘启动
“Memory test”:存储介质检测
2、密码原则
复杂性:八位字符以上、大小写字母、数字、符号;不能是英文单词;不能是和用户相关的内容
易记忆性
时效性:每隔三个月或半年更换一次密码
3、软件包选择
Desktop(桌面)
Minimal Desktop(最小化桌面)
Minimal(最小化)
Basic Server(基本服务器)
Database Server(数据库服务器)
Web Server(网页服务器)
Virtual Host(虚拟主机)
software development workstation(软件开发工作站)
4、安装日志
/root/install.log:存储了安装在系统中的软件包及其版本信息
/root/install.log.syslog:存储了安装过程中留下的事件记录
/root/anaconda-ks.cfg:以Kickstart配置文件的格式记录安装过程中设置的选项信息。自动安装时遵循的配置文件。
四、远程登录管理工具
远程登录之前要先连上网络,网络连接方式有四种:桥接、NAT、Host-only、自定义。桥接表明虚拟机在使用真实机的真实网卡,与当前计算机进行通信,优点:配置简单,虚拟机设置和真实机相同的IP地址,就可以和真实机直接通讯,还可以和局域网内的同网段的其他计算机进行通信;缺点:需要占用你的IP,会出现IP地址冲突。NAT是通过VMnet8虚拟网卡与真实机通信,Host-only是通过VMnet1虚拟网卡与真实机通信。桥接会使虚拟机变为一条真正的独立电脑,另外两种方式只能跟主机通信,但不会占用主机的IP地址。Host-only只能和本机通信,NAT在和本机通信的基础上,如果本机能正常访问互联网,则虚拟机也能正常访问互联网。
1、ifconfig查询Linux的IP地址
2、ifconfig eth0 ip地址 设置虚拟机IP地址,eth0是指第一块网卡
远程连接工具SecureCRT、Windows与虚拟机的文件copy工具WinSCP
五、系统安装出现的网络问题
由于是初学者,第一次安装Linux虚拟机的时候,没有配置好网络,也不知道哪里出了问题,导致主机的网络也连接不上了,主机的Internet设置界面也进不去。恢复Win10系统创建的还原点也无法恢复,VMware也无法卸载,最后在Win10的安全模式下,进行系统还原才成功卸载了VMware,删除了虚拟机,恢复了网络。心有余悸,第二次安装的时候在刚开始的硬件配置中就没有选择安装网卡,CentOS安装完毕后,在配置网络时,自己添加了一个网卡的硬件。刚开始用ifconfig etth0 IP是可以设置ip的,也能ping通自己的主机。但是,学到后期,使用setup指令使IP地址永久生效时却出现没有网卡的问题,如下图:
在硬件中查看也没有eth0,在etc/sysconfig/network-scipts/ifcfg-eth0配置文件下也没有网卡的配置文件,手动添加了还是不行。最后没有办法了,重新安装了CentOS,这次在安装开始的硬件排至中就添加了网卡,解决了问题。我猜想是没有网卡的话,安装CentOS时,关于网卡的配置文件没有被系统安装,由于我是菜鸟,所以也不会后期怎么配置,只能重装。
第三讲 给初学者的建议
一、学习Linux的注意事项
Linux严格区分大小写,Linux中的命令全都是小写的,文件名称也区分大小写。
Linux中所有的内容都是以文件形式保存的,包括硬件,硬盘文件是/dev/sd[a-p]、光盘文件是/dev/sr0等。在Linux中要想内容永久生效,都要写入文件,像IP地址,网管等都需要写入文件。
Linux不靠扩展名区分文件类型:压缩包:“*.gz”、“*.bz2”、“*.tar.bz2”、“*.tgz”等;二进制软件包:“*.rpm”;网页文件:“*.html”、“*.php”;脚本文件:“*.sh”;配置文件:“*.conf”;这些扩展名是给管理员看的,虚拟机不用扩展名也能区分文件。
Linux所有的存储设备都必须挂载之后用户才能使用,包括硬盘、U盘和光盘。这些硬件插入之后都需要手动挂载才能使用。
Windows下的程序不能直接在Linux中安装和运行
二、服务器管理和维护建议
1、Linux各目录的作用
每个目录的作用是固定的,大家应遵守目录的约定。bin目录中的命令所有用户都可以执行,sbin中的命令只有root用户可以执行。
/dev目录下保存的都是硬件文件,/etc是绝大多数配置文件的保存地址。/boot和/etc一般需要备份。
2、服务器注意事项
远程服务器不允许关机,只能重启。因为服务器可能不在身边。
重启时应该关闭服务
不要在服务器访问高峰运行高负载命令
远程配置防火墙时不要把自己提出服务器
指定合理的密码规范并定期更新
合理分配权限
定期备份重要数据和日志
第四讲 Linux常用命令
一、文件处理命令
1、命令格式与目录处理ls
命令格式:命令 [-选项] [参数],例:ls -la /etc
说明:1)个别命令使用不遵循此格式;2)当有多个选项时,可以写在一起;3)简化选项与完整选项-a等于--all
简化选项用一个-,完整选项用两个--
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
ls | list | /bin/ls | 所有用户 | 显示目录文件 | ls 选项[-ald] [文件或目录] -a 显示所有文件,包括隐藏文件(all全部显示) -l 详细信息显示(long长信息显示) -d 查看目录属性(directory) -i 查看文件I节点(inode) |
在Linux中以“.”开头的就是隐藏文件。隐藏文件的目的是告诉用户这是系统文件,一般情况不要动用。想隐藏文件就在文件名前面加上“.”。
在Linux中输入下列指令,可以得到各个文件的详细信息:
[root@localhost ~]# ls -l
总用量 48
-rw-------. 1 root root 1229 7月 22 02:22 anaconda-ks.cfg
-rw-r--r--. 1 root root 27282 7月 22 02:22 install.log
-rw-r--r--. 1 root root 9043 7月 22 02:21 install.log.syslog
其中“1”是引用系数,代表这个文件曾经被调用或引用过几次,只在硬链接中有用。Linux中把文件用户分为三类:u:use,所有者;g:group,所属组;o:other,其他人。默认情况下,谁创建的文件谁就是所有者,所有者关系可以转变。第一个“root”为所属者,第二个“root”为所属组,“1229”是文件的大小,单位是字节,可使用ls -lh命令,h是human指的是人性化显示,便会显示1.3K。“7月 22 02:22”为文件最后一次修改时间,如果未被修改则是创建时间。
“-rw-r--r--”,开头的“-”代表是文件,如果是“d”代表是目录,“l”代表是软链接。r读,w写,x执行,“rw-r--r--”分别代表所有者、所属组、其他人各自对文件的权限,用--表示没有权限。
[root@localhost ~]# ls -ld /etc,-d指令表示只查看该目录本身的属性,而不查看该目录下的其他文件。
2、目录处理命令
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
mkdir | make directories | /bin/mkdir | 所有用户 | 创建新目录 | mkdir -p [目录名] -p 递归创建 |
1)[root@localhost ~]# mkdir /tmp/xiaodianying创建一个新目录
2)[root@localhost ~]# mkdir -p /tmp/Japan/boduo在未存在的目录下再创建一个未存在的目录,需要用-p
3)[root@localhost ~]# mkdir /tmp/Japan/cangjing /tmp/Japan/longze一次创建多个目录
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
cd | change directory | shell内置命令 | 所有用户 | 切换目录 | cd [目录名] |
1)[root@localhost ~]# cd ..回到上一级目录,“..”表示上一级目录,“.”表示本级目录
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
pwd | print working directory | /bin/pwd | 所有用户 | 显示当前完整目录路径 | pwd |
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
rmdir | remove empty directory | /bin/rmdir | 所有用户 | 删除空目录 | rmdir [目录名] |
只能删除空目录,有内容的不能删除,不常用。
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
cp | copy | /bin/cp | 所有用户 | 复制文件或目录 | cp -rp [原文件或目录] [目标目录] -r 复制目录 -p 保留文件属性 |
1)[root@localhost ~]# cp /etc/grub.conf /tmp复制文件
2)[root@localhost ~]# cp -r /tmp/Japan/cangjing /root复制目录,要用到-r指令
3)[root@localhost ~]# cp /root/install.log /root/install.log.syslog /tmp 一次复制多个文件到/tmp目录
4)[root@localhost ~]# cp -p /root/install.log /tmp,-p可以完整的复制文件属性,不用-p复制过来的文件,文件的更新时间等属性会改变,因为复制相当于新建了一个文件。
5)[root@localhost ~]# cp -r /tmp/Japan/longze /root/shenhao.18+复制的过程中可以改名,longze在新文件里改名为shenchao.18+
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
mv | move | /bin/mv | 所有用户 | 剪切文件、改名 | mv [原文件或目录] [目标目录] |
1)[root@localhost Japan]# mv cangjing /root将cangjing剪切到/root文件
2)[root@localhost Japan]# mv /tmp/Japan/longze /root/nvshen剪切的同时进行改名
3)[root@localhost ~]# mv cangjing canglaoshi同一目录下剪切就是改名
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
rm | remove | /bin/rm | 所有用户 | 删除文件 | rm -rf [文件或目录] -r 删除目录 -f 强制执行 |
一旦删除,无法恢复。谨慎使用,做好备份。
3、文件处理命令
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
touch | /bin/touch | 所有用户 | 创建空文件 | touch [文件名] |
在Linux中除了“/”,其他的特殊符号*、-、+、%……都可以作为文件名,但是不推荐,容易制造麻烦。在Windows中文件名可以带空格,但是在Linux中文件带空格很麻烦。
1)[root@localhost tmp]# touch program files。创建两个文件program和file
2)[root@localhost tmp]# touch "program files"。创建文件名带空格的文件需要双引号引起来作为整体。不推荐文件名带空格。
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
cat | /bin/cat | 所有用户 | 显示文件内容 | cat [文件名] -n 显示行号(number) | |
tac(cat反过来写) | /usr/bin/tac | 所有用户 | 反向显示文件内容 | 同 |
只适合显示短文件,文件内容过多不适合。
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 | ||||||
more | /bin/more | 所有用户 | 分页显示文件内容 | more [文件名]
|
1)[root@localhost tmp]# more /etc/services
more命令只能向下翻页,不能向上回翻。
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
less | /usr/bin/touch | 所有用户 | 分页显示文件内容(可向上翻页) | less [文件名] |
1)[root@localhost tmp]# less /etc/services
按PageUp可以一页一页的向上翻,按向上键可以一行一行的向上翻。
可以用 /关键词 进行搜索,如/services。按“n”可以接下向下找,n表示next。
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
head | /usr/bin/head | 所有用户 | 显示文件前面几行 | head [文件名] -n 指定行数 |
1)[root@localhost ~]# head -n 7 /etc/services 只显示services文件的前七行
2)[root@localhost ~]# head /etc/services不加/n,默认显示10行。
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
tail | /usr/bin/tail | 所有用户 | 显示文件后面几行 | tail [文件名] -n 指定行数 -f 动态更新末尾内容 |
1)[root@localhost ~]# tail -n 3 /etc/services 只显示service文件的最后三行。默认显示也是10行
2)-f 会使文件动态更新,如果更改了文件,则显示页面会动态更新显示。
4、链接命令
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
ln | link | /bin/ln | 所有用户 | 生成链接文件 | ln -s [原文件] [目标文件] -s 创建软链接 |
1)软链接特征:类似Windows快捷方式
[root@localhost ~]# ln -s /etc/issue /tmp/issue.soft 创建issue文件的软链接
查看issue文件 | 查看软链接文件 |
[root@localhost ~]# ls -l /etc/issue -rw-r--r--. 2 root root 48 6月 26 2018 /etc/issue | [root@localhost ~]# ls -l /tmp/issue.soft lrwxrwxrwx. 1 root root 10 7月 23 08:51 /tmp/issue.soft -> /etc/issue |
文件48字节 | 1.最开始的“l”代表为软链接,所有的用户都具有rwx的全部操作权限。 2.文件较小,因为只是符号链接 3./tmp/issue.soft->/etc/issue箭头指向源文件 运行软链接时,实际在运行原文件。软链接的权限不影响原文件的权限。 |
2)硬链接
[root@localhost ~]# ln /etc/issue /tmp/issue.hard 没有-s指令就是创建硬链接
查看issue文件 | 查看硬链接文件 |
[root@localhost ~]# ls -l /etc/issue -rw-r--r--. 2 root root 48 6月 26 2018 /etc/issue | [root@localhost ~]# ls -l /tmp/issue.hard -rw-r--r--. 2 root root 48 6月 26 2018 /tmp/issue.hard |
文件48字节 | 1.属性相当于拷贝文件 cp -p + 同步更新,与原文件属性相同 2.通过i节点识别 3.不能跨分区 4.不能针对目录使用 无论是更改源文件还是硬链接,另一个文件都会同步更新 |
3)注意的细节
删除了源文件,软链接会失效,硬链接不会失效。
硬链接和源文件i节点一样,但与软链接不一样。所以一个文件只有一个i节点,但是一个i节点可以对应多个文件。
文件更新实际上是更新的i节点,硬链接与源文件i节点相同,所以会同步更新。
软链接可以指向目录,硬链接不可指向目录。
二、权限管理命令
1、权限管理命令chmod
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
chmod | change the permissions mode of a file | /bin/chmod | 所有用户 | 改变文件或目录权限 | chmod [{ugoa}{+-=}{rwx}] [文件或目录] [mode=421] [文件或目录] -R 递归修改 |
只有文件所有者和root管理员可以更改文件和目录的权限。
u所有者 | +增加权限 | r读权限 | 4---r |
g所属组 | -减少权限 | w写权限 | 2---w |
o其他人 | =不管以前什么权限, 现在设置为当前权限 | x执行权限 | 1---x |
a所有人(all) | rwx用7表示 rw=6 …… |
1)[root@localhost tmp]# chmod u+x Japanlovestory.list 给所有者增加执行的权限
2)[root@localhost tmp]# chmod g+w,o-r Japanlovestory.list 给所属组增加写的权限,去掉其他人读的权限
3)[root@localhost tmp]# chmod g=rwx Japanlovestory.list 不考虑以前什么权限,设置所属组现在为rwx权限
4)532 == r-x-wx-w-
5)[root@localhost tmp]# chmod 640 Japanlovestory.list 用数字修改文件权限
6)[root@localhost tmp]# chmod -R 777 /tmp/a 会改变a目录以及a目录下所有文件和目录的权限
r | 读权限 | 可以查看文件内容:cat/more/head/tail/less | 可以列出目录中的内容:ls |
w | 写权限 | 可以修改文件内容:vim | 可以在目录中创建、删除文件:touch/mkdir/rmdir/rm |
x | 执行权限 | 可以执行文件:script/command | 可以进入目录:cd |
只要对目录有w权限,就可以删除该目录下的所有文件或目录,无论该文件或目录有何权限。对该文件所在的目录有写权限,那么就可以删除该文件。
2、其他权限管理命令
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
chown | change file ownership | /bin/chown | 所有用户 | 改变文件或目录的所有者 | chown [用户] [文件或目录] |
只有管理员root才能改变文件所有者。
1)[root@localhost /]# chown liming fengjie 将文件fengjie的所有者改为liming
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
chgrp | change file group ownership | /bin/chgrp | 所有用户 | 改变文件或目录的所有者 | chgrp [用户] [文件或目录] |
1)[root@localhost /]# groupadd lampbrother 创建新的组lampbrother
[root@localhost /]# chgrp lampbrother fengjie 将fengjie文件所属组改为lampbrother
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
umask | the user file-creation mask | Shell内置命令 | 所有用户 | 显示、设置文件的缺省权限 | umask [-S] -S 以rwx形式显示新建文件缺省权限 |
1)[root@localhost tmp]# umask -S 显示:u=rwx,g=rx,o=rx,目录的默认权限
文件的默认权限是rw-r--r--,在Linux中文件的缺省权限是不能有可执行权限x的,所以去掉了。
2)[root@localhost tmp]# umask 直接输入umask,会显示0022
其中0表示特殊权限,022为权限掩码,真实的权限是777-022=755 即rwxr-xr-x
3)使用umask修改默认权限
rwxr-xr--为754,用777-754=023
[root@localhost tmp]# umask 023 就会修改成功,不建议修改。
三、文件搜索命令
1、文件搜索命令find
在文件中应该少用搜索,搜索需要占用大量系统资源
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
find | /bin/find | 所有用户 | 文件搜索 | find [搜索范围] [匹配条件] |
1)根据文件名搜索name/iname
[root@localhost /]# find /etc -name init 在/etc目录下搜索文件名为init的文件,与Windows不同的是,Linux中为准确搜索,只会显示文件名为init的文件,不会显示如initabc、ainit这种文件。
[root@localhost tmp]# find /etc -name *init*或init*,要想搜索包含init的文件,需要使用通配符*。init???,?可以匹配某个单个字
[root@localhost tmp]# find /etc -iname init???不区分大小写查找
2)根据文件大小查找size
+n 大于,-n小于,n等于。其中文件大小是根据数据块来换算,1数据块=512字节=0.5k,查找文件时需要换算,100MB=102400KB=204800个数据块
[root@localhost tmp]# find / -size +204800 查找大于100M的文件
3)根据所有者来查找user/group
[root@localhost tmp]# find /home -user linzhiling查找属于linzhiling的文件
4)根据时间属性查找cmin
-amin访问时间access;-cmin文件属性change;-mmin文件内容modify
[root@localhost tmp]# find /etc -cmin -5 在/etc目录下次、 查找5分钟内被修改过属性的文件或目录
5)其他
[root@localhost /]# find /etc -size +163840 -a -size -204800 在/etc下查找大于80MB小于100MB的文件
-a两个条件同时满足;-o两个条件满足任意一个即可
[root@localhost /]# find /etc -name inittab -exec ls -l {} \; 在/etc下查找inittab文件并显示其详细信息
-exec/-ok 命令 {} \; 用-exec/-ok连接两条命令,对搜索结果执行操作,最后以“;”结束。{}表示find查找的结果,\表示转义符。-ok会进行询问是否进行该操作,-exec直接执行不询问,所以查找删除是多用-ok
-type 根据文件类型查找:f文件 d目录 l软链接[root@localhost /]# find /etc -name *init* -a -type d
-inum 根据i节点查找 [root@localhost /]# find . -inum 31531 -ok rm {} \; 在当前目录下查找i节点为31531的文件并删除
2、其他搜索命令
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
locate | /usr/bin/locate | 所有用户 | 在文件资料库中查找文件 | locate 文件名 -i 不区分大小写 |
1)[root@localhost /]# locate inittab搜索inittab文件
locate搜索速度很快,它是先对所有文件创建了数据库,在数据库中进行搜索而不是在硬盘中。但是对新建立的文件,由于文件资料库还没有更新,所以查找不到,可以用:
[root@localhost /]# updatedb命令手动更新,新建立的文件就可以查找到了
如果是在/tmp临时文件中新建的文件,即使手动更新也差找不到,因为临时目录不在文件资料库的存储范围内。
2)[root@localhost ~]# locate -i init 不区分大小写查找
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
which | /usr/bin/which | 所有用户 | 搜索命令所在目录及别名 | which 命令 |
1)[root@localhost ~]# which rm 显示rm命令的路径及别名,显示别名alias rm='rm -i'路径/bin/rm
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
whereis | /usr/bin/whereis | 所有用户 | 搜索命令所在目录及帮助文档路径 | whereis 命令 |
1)[root@localhost ~]# whereis useradd 命令路径useradd: /usr/sbin/useradd 帮助文档路径:/usr/share/man/man8/useradd.8.gz
可以搜索配置文件的路径,which不可以
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
grep | /bin/grep | 所有用户 | 在文件中搜寻字串匹配的行并输出 | grep -iv [指定字串] [文件] -i 不区分大小写 -v 排除指定字串 |
1)[root@localhost ~]# grep multiuser /etc/inittab 查找inittab文件中的multiuser关键字
2)[root@localhost ~]# grep -i multiuser /etc/inittab 不区分大小写查找
3)[root@localhost ~]# grep -v ^# /etc/inittab #开头的是注释语句,^表示开头的意思,命令是去掉注释行
四、帮助命令
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
man | manual | /usr/bin/man | 所有用户 | 获取帮助信息 | man [命令或配置文件] |
1)[root@localhost ~]# man ls 查看ls命令的帮助文档,可以用“/-l”查找关于“-l”的关键信息,按空格翻页,回车换行,q退出。
2)[root@localhost ~]# man services 查看配置文件的帮助信息时,不需要写配置文件的路径,写了路径查看到的是文件的内容,直接man 配置文件名。文件名中,1---代表命令的帮助,5---代表配置文件的帮助
[root@localhost ~]# man 5 passwd 显示passwd配置文件的帮助信息,不加5的话默认显示命令passwd的帮助信息
whatis 命令;apropos 配置文件可以查看简短的帮助信息,也可以用命令 --help查看帮助信息。info命令和man几乎相同,也可以用。
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
help | Shell内置命令 | 所有用户 | 获得Shell内置命令的帮助信息 | help 命令 |
找不到命令所在路径的命令都是Shell内置命令,如[root@localhost ~]# which cd显示/usr/bin/which: no cd in (/usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin),cd就是Shell内置命令,内置命令不能用man来查看帮助文档,需要使用help命令[root@localhost ~]# help cd
五、用户管理命令
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
useradd | /usr/sbin/useradd | root | 添加新用户 | useradd 用户名 |
1)[root@localhost ~]# useradd yangmi创建yangmi用户
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
passwd | password | /usr/bin/passwd | 所有用户 | 设置用户密码 | passwd 用户名 |
root可以设置简单密码,但是用户不可以设置简单密码。
1)[linzhiling@localhost home]$ passwd 用户只能用passwd修改自己的密码,root才可以指定用户,更改指定用户的密码
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
who | /usr/bin/who | 所有用户 | 查看登录用户信息 | who |
1)[root@localhost ~]# who 输入who,显示以下信息:
root tty1 2020-07-22 18:29
linzhiling pts/2 2020-07-29 14:12 (192.168.1.15)
root pts/3 2020-07-29 14:12 (192.168.1.15)
用户名 登录终端(tty表示本地终端,pts表示远程终端)用不同的终端号表示不同的终端 登录时间(登录的主机IP地址)
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
w | /usr/bin/w | 所有用户 | 查看登录用户详细信息 | w |
[root@localhost ~]# w
19:57:02 up 1 day, 19:30, 3 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 22Jul20 29:45m 0.15s 0.15s -bash
linzhili pts/2 192.168.1.15 Wed14 15:01 0.02s 0.02s -bash
root pts/3 192.168.1.15 Wed14 0.00s 0.14s 0.04s w
19:57:02系统时间 up 1 day, 19:30,系统运行时间 3 users, 用户数 load average: 0.00, 0.00, 0.00负载均衡指数1分钟5分钟15分钟负载情况 | |||||||
USER | TTY | FROM | LOGIN@ | IDLE 用户空闲多久 | JCPU累计占用时间 | PCPU当前操作占用CPU执行时间 | WHAT用户执行的命令 |
root | tty1 | - | 22Jul20 | 29:45m | 0.15s | 0.15s | -bash未执行,等待窗口 |
linzhili | pts/2 | 192.168.1.15 | Wed14 | 15:01 | 0.02s | 0.02s | -bash |
root | pts/3 | 192.168.1.15 | Wed14 | 0.00s | 0.14s | 0.04s | w执行了w命令 |
六、压缩解压命令
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
gzip | GNU zip | /bin/gzip | 所有用户 | 压缩文件 | gzip [文件] 压缩后文件格式:gz |
1)[root@localhost tmp]# gzip boduo 压缩boduo文件,只能压缩文件不能压缩目录,并且压缩完不保留源文件
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
gunzip | GNU unzip | /bin/gunzip | 所有用户 | 解压缩.gz的压缩文件 | gunzip [压缩文件] |
1)[root@localhost tmp]# gunzip boduo 解压
2)[root@localhost tmp]# gzip -d boduo 或用gzip -d解压
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
tar | /bin/tar | 所有用户 | 压缩目录 | tar 选项[-zcf] [压缩后文件名] [目录] -c 打包 -x 解包 -v 显示详细信息 -f 指定压缩文件名/指定解压文件名 -z 打包同时压缩/解压缩,压缩后文件格式: tar.gz -j 压缩/解压缩,压缩完文件格式:.tar.bz2 |
1)[root@localhost tmp]# tar -cvf Japan.tar Japan 打包
2)[root@localhost tmp]# tar -zcf Japan.tar.gz Japan 打包并压缩
3)[root@localhost tmp]# tar -zxvf Japan.tar.gz 解压
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
zip/unzip | /usr/bin/zip /usr/bin/unzip | 所有用户 | 压缩文件或目录 解压文件或目录 | tar 选项[-r] [压缩后文件名] [文件或目录] -r 压缩目录 压缩后文件格式:.zip |
.zip文件在Linux和Windows中可以通用,转移小文件很方便,Linux中的压缩文件格式Windows都可解压缩,但是Windows中的压缩格式Linux不支持,所以用zip很方便。.zip压缩后会保留源文件。
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
bzip2 bunzip2 | /usr/bin/bzip2 /usr/bin/bunzip2 | 所有用户 | 压缩文件 解压文件 | bzip2 选项[-k] [文件] -k 产生压缩文件后保留原文件/解压时保留压缩文件 |
gzip的升级版,压缩后可以保留原文件。压缩比很高,建议大文件使用。
1)[root@localhost tmp]# tar -cjf Japan.tar.bz2 Japan -j可以使tar生成.bz2的文件
七、网络命令
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
write | /usr/bin/write | 所有用户 | 给用户发消息,以Ctrl+D保存结束 | write <用户名> |
一定要是在线用户,用Ctrl+BackSpace或Delete删除,Ctrl+d发送消息
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
wall | write all | /usr/bin/wall | 所有用户 | 发广播信息 | wall [message] |
给所有用户发信息
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
ping | /bin/ping | 所有用户 | 测试网络连通性 | ping 选项 IP地址 -c 指定发送次数 |
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
ifconfig | interface configure | /sbin/ifconfig | root | 查看和设置网卡信息 | ifconfig 网卡名称 IP地址 |
1)[root@localhost tmp]# ifconfig 查看当前IP地址
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
/bin/mail | 所有用户 | 发送邮件 | mail <用户名> |
& 输入序列号,回车,就可以查看内容;h 看到邮件列表;d 序列号,删除邮件;q 退出
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
last | /usr/bin/last | 所有用户 | 列出目前与过去登录系统的用户信息 | last |
统计所有用户登录的时间,也会记录重启计算机的时间
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
lastlog | /usr/bin/lastlog | 所有用户 | 检查某特定用户上次登录的时间 | lastlog |
用lastlog可以查看所有用户最近一次的登录时间,lastlog -u 用户号,可以查看某一用户的登录信息
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
traceroute | /bin/traceroute | 所有用户 | 显示数据包到主机间的路径 | traceroute |
1)[root@localhost ~]# traceroute www.sina.com.cn
返回连接到网站的每一个节点
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
netstat | network state | /bin/netstat | 所有用户 | 显示网络相关信息 | netstat [选项] -t TCP协议 -u UDP协议 -l 监听 -r 路由 -n 显示IP地址和端口号 |
1)[root@localhost ~]# netstat -tlun 查看本机监听的端口
2)[root@localhost ~]# netstat -an 查看本机所有的网络连接
3)[root@localhost ~]# netstat -rn 查看本机路由表
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
setup | /usr/bin/setup | root | 配置网络 | setup |
并不是所有的Linux都有这个指令。
命令名称 | 命令英文原意 | 命令所在路径 | 执行权限 | 功能描述 | 语法 |
mount | /bin/mount | 所有用户 | 挂载 | mount [-t文件系统] 设备文件名 挂载点 |
Linux中的光盘、U盘、移动硬盘等外接存储设备不会自动挂载,每次都需要手动挂载。
1)第一步:[root@localhost /]# mkdir /mnt/cdrom 在/mnt目录下新建cdrom目录
2)第二步:[root@localhost /]# mount -t iso9660 /dev/sr0 /mnt/cdrom 将sr0挂载到cdrom挂载点目录下,sr0为光盘的设备文件名,iso9660是系统默认的,不写也可以,/dev/cdrom是/dev/sr0的软链接,可以替换/dev/sr0
出现mount: block device /dev/sr0 is write-protected, mounting read-only提示就是挂载成功了,可以去/mnt/cdrom查看光盘内文件。
卸载命令:[root@localhost /]# umount /dev/sr0 不能在挂载点目录当中卸载,因为这是正在使用,所以无法卸载。
八、关机重启命令
1、关机命令shutdown,推荐使用
命令名称 | 执行权限 | 功能描述 | 语法 |
shutdown | root | 关机/重启 | shutdown [选项] 时间 -c 取消前一个关机命令 -h 关机 -r 重启 |
1)[root@localhost /]# shutdown -h now 立即关机
2)[root@localhost /]# shutdown -h 20:30 定时关机,晚上8点30关机
2、其他关机命令
1)[root@localhost /]# halt
2)[root@localhost /]# poweroff 相当于直接断电,最好不要用
3)[root@localhost /]# init 0
3、其他重启命令
1)[root@localhost /]# reboot
2)[root@localhost /]# init 6
4、系统运行级别init
0 关机;
1 单用户;类似于Windows中的安全模式,启动最核心的服务来运行,用来进行修复系统的,只能root登录,所以叫单用户
2 不完全多用户,不含NFS服务;network file system网络文件系统,实现电脑之间文件共享,很简单但不安全
3 完全多用户;
4 未分配;可以自己定义
5 图形界面;
6 重启;
1)[root@localhost /]# cat /etc/inittab #修改系统默认运行级别 id:3:initdefault:
2)[root@localhost /]# runlevel 查询系统运行级别
3)[root@localhost /]# init 3 设置运行级别
5、退出登录命令
1)[root@localhost ~]# logout 退出登录
第五讲 文本编辑器Vim
一、Vim常用操作
1、Vim简介
Vim是一个功能强大的全屏幕文本编辑器,是Linux/UNIX上最常用的文本编辑器,它的作用是建立、编辑、显示文本文件。
Vim没有菜单,只有命令。
2、Vim工作模式
在命令模式中输入“:”就进入了编辑模式。编辑模式命令执行完后会自动返回命令模式。
编辑模式命令:set number/nu 加行号;
插入命令 | 定位命令 | 删除命令 | 复制和剪切命令 | ||||
---|---|---|---|---|---|---|---|
命令 | 作用 | 命令 | 作用 | 命令 | 作用 | 命令 | 作用 |
a | 在光标所在字符后插入 | :set nu | 设置行号 | x | 删除光标所在处字符 | yy | 复制当前行 |
A | 在光标所在行尾插入 | :set nonu | 取消行号 | nx | 删除光标所在处后n个字符 | nyy | 复制当前行以下n行 |
i | 在光标所在字符前插入 | gg | 到第一行 | dd | 删除光标所在行,ndd删除n行 | dd | 剪切当前行 |
I | 在光标所在行行首插入 | G | 到最后一行 | dG | 删除光标所在行到文件末尾内容 | ndd | 剪切当前行以下n行 |
o | 在光标下插入新行 | nG | 到第n行 | D | 删除光标所在处到行尾内容 | p、P | 粘贴在当前光标所在行下或行上 |
O | 在光标上插入新行 | :n | 到第n行 | :n1,n2d | 删除指定范围的行 | ||
$ | 移至行尾 | ||||||
0 | 移至行首 |
替换和取消命令 | 搜索和搜索替换命令 | 保存和退出命令 | |||
---|---|---|---|---|---|
命令 | 作用 | 命令 | 作用 | 命令 | 作用 |
r | 取代光标所在处字符 | /string | 搜索指定字符串 搜索时忽略大小写:set ic;set no ic | :w | 保存修改 |
R | 从光标所在处开始替换字符,按Esc结束 | n | 搜索指定字符串的下一个出现位置 | :w new_filename | 另存为指定文件 |
u | 取消上一步操作 | :%s/old/new/g | 全文替换指定字符串 | :wq | 保存修改并退出 |
:n1,n2s/old/new/g | 在一定范围内替换指定字符串 /g不询问,/c每次替换都询问 | ZZ | 快捷键,保存修改并退出 | ||
:q! | 不保存修改退出 | ||||
:wq! | 强行保存修改并退出(文件所有者及root可使用,对只读文件) |
二、Vim使用技巧
1、导入命令执行结果:r !命令
1):r /etc/issue 将issue文件内容导入到光标所在处
2):!which ls 查看命令所在路径
3):r !date 将当前时间导入到文件中
2、定义快捷键:map 快捷键 触发命令
1):map ^P I#<ESC> 定义快捷键Ctrl+p为跳到行首插入#号,并返回命令模式。输入^P时同时按住Ctrl+v+p或先按Ctrl+v再按Ctrl+p
2):map ^B 0x 定义快捷键Ctrl+b为删除行首字母并返回命令模式
3):map ^H isamlee@lambrother.net<ESC> 定义插入邮箱的快捷键为Ctrl+h
3、连续行注释
1):1,4s/^/#/g ^表示行首,#号位置为想要替换的字符,替换时不需要确认用g,命令为在行首添加#
2):1,4s/#//g 什么都不写表示空,把#替换为空,即去掉#号,行中间的#也会去掉
3):1,4s/^#//g 只去掉开头的#号,^表示开头
4):5,7s/^/\/\//g \为转义字符
4、替换ab
1):ab mymail samlee@lampbrother.net 在文中输入mymail会自动转换为samlee@lampbrother.net
上面的命令重启后都会失效,要想永久有效,需要写在该用户的配置文件.vimrc中,该文件可能不存在,其中只能放一些编辑模式的命令,开头不用加:
[root@localhost ~]# vi /root/.vimrc
set nu
map ^P I#<ESC>
ab mymail samlee@lampbrother.net
ab shenchao fengjie
~
".vimrc" [New] 4L, 74C written
如果是用户,.vimrc文件就保存在/home/用户名/.vimrc;如果是管理员就在/root/.vimrc
第六讲 软件包管理
一、软件包管理简介
1、软件包分类
源码包:可以直接看到源代码,安装速度慢,需要编译后再安装。脚本安装包,相当于Windows的安装界面,不多,主要给初学者
二进制包(RPM包、系统默认包):源代码包经过编译后产生的二进制指令,安装速度快。是软件厂商为了加快安装速度,简化安装过程,但无法看到源代码。二进制包又称为rpm包、系统默认包
2、源码包
源码包的优点:
1)开源,如果有足够的能力,可以修改源代码
2)可以自由选择所需的功能
3)软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高。同样的软件比rpm方式安装,软件效率高5%左右。
4)卸载方便,直接删除文件即可,不会留下任何残留
源码包的缺点
1)安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现拼写错误
2)编译过程时间较长,安装比二进制安装时间长
3)因为是编译安装,安装过程一旦报错新手很难解决
建议后期,自己用源代码安装一次Linux,会对Linux内部结构的了解有质的飞跃,安装过程会很慢,需要三天时间
3、RPM包
二进制包的优点
1)包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载
2)安装速度比源码包安装快得多
二进制包缺点:
1)经过编译,不再可以看到源代码
2)功能选择性不如源码包灵活
3)依赖性,安装a,需要先安装b,安装b需要先安装c……,Linux中大量存在这种依赖性
二、RPM包管理-rpm命令管理
1、RPM包命名规则
http-2.2.15-15.el6.centos.1.i686.rpm | |
httpd | 软件包名 |
2.2.15 | 软件版本 |
15 | 软件发布的次数 |
el6.centos | 适合的Linux平台,不写就是都可以安装 |
i686 | 适合的硬件平台,noarch所有硬件平台都可以安装 |
rpm | rpm包扩展名 |
要注意包名和包全名的区别,包名httpd,包全名http-2.2.15-15.el6.centos.1.i686.rpm,不同的命令要求的不一样,要注意
2、RPM包依赖性
1)树形依赖:a->b->c 依赖性是RPM包最大的问题
2)环形依赖:a->b->c->a 用一条命令将a、b、c同时安装
3)模块依赖:模块依赖查询网站:www.rpmfind.net
模块依赖实验:
将CentOS-6.10-i386-bin-DVD1.iso放入虚拟机光驱
[root@localhost ~]# mkdir /mnt/cdrom 新建挂载点
[root@localhost ~]# mount /dev/sr0 /mnt/cdrom 挂载
[root@localhost ~]# cd /mnt/cdrom 进入cdrom目录
[root@localhost cdrom]# ls 显示光盘中的目录
[root@localhost cdrom]# cd Packages/ 进入Packages目录
[root@localhost Packages]# ls 显示Packges目录下的文件
[root@localhost Packages]# rpm -ivh mysql-connector-odbc-5.1.5r1144-7.el6.i686.rpm 安装软件,系统提示报错:
warning: mysql-connector-odbc-5.1.5r1144-7.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY
error: Failed dependencies:
libodbcinst.so.2 is needed by mysql-connector-odbc-5.1.5r1144-7.el6.i686
unixODBC is needed by mysql-connector-odbc-5.1.5r1144-7.el6.i686
需要安装libodbcinst.so.2模块,以“.so.数字”结尾的都是库依赖包,不是一个独立的软件而是某一个软件包中的一个软件,所以把这个软件所在的软件包安装上就可以,该软件所在的软件包可以在www.rpmfind.net进行查找。
有的时候开发环境并没有网络,所以不能进行网络查询,所以就需要用到yum在线管理,yum会自动从服务器下载依赖的软件包,也可以用包含所有软件安装包的本地光盘做服务器源。 在RedHat系列,yum是需要收费的,属于售后服务。CentOS是社区维护,完全免费的,包括yum也是免费的。
3、包全名与包名
1)包全名:操作的包是没有安装的软件包时,使用包全名。而且要注意路径。安装和升级
2)包名:操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm/中的数据库
4、RPM安装
rpm -ivh 包全名 | |
---|---|
-i(install) | 安装 |
-v(verbose) | 显示详细信息 |
-h(hash) | 显示进度 |
--nodeps | 不检测依赖性 |
5、RPM包升级
6、卸载
7、查询是否安装
1)[root@localhost ~]# rpm -q 包名 #查询包是否安装;选项:-q 查询(query)
2)[root@localhost ~]# rpm -qa #查询所有已经安装的RPM包;选项:-a 所有(all)
3)[root@localhost ~]# rpm -qa | grep httpd 查询所有包含httpd的安装包
8、查询软件包详细信息
1)[root@localhost ~]# rpm -qi httpd #查询已安装包的详细信息
2)[root@localhost Packages]# rpm -qip zip-3.0-1.el6_7.1.i686.rpm #查询未安装包的详细信息
9、查询包中文件安装位置
10、查询系统文件属于哪个RPM包
1)[root@localhost Packages]# rpm -qf /var/www/icons/up.gif
11、查询软件包的依赖性
1)[root@localhost Packages]# rpm -qR httpd #查询已安装软件包的依赖性
2)[root@localhost Packages]# rpm -qRp zip-3.0-1.el6_7.1.i686.rpm #查询未安装的软件包的依赖性
12、RPM包校验
将RPM包安装完之后,将最初的特征记录下载,将现在的文件与最初的文件进行比较,从而判断是否被做了修改。
验证内容中的8个信息的具体内容如下:
- S 文件大小是否改变
- M 文件的类型或文件的权限(rwx)是否被改变
- 5 文件MD5校验和是否改变(可以看成文件内容是否改变)
- D 设备的中,从代码是否改变
- L 文件路径是否改变
- U 文件的属主(所有者)是否改变
- G 文件的属组是否改变
- T 文件的修改时间是否改变
文件类型:
- c 配置文件(config file)
- d 普通文档(documentation)
- g “鬼”文件(ghost file),很少见,就是该文件不应该被这个RPM包包含
- l 授权文件(license file)
- r 描述文件(read me)
1)[root@localhost Packages]# rpm -V httpd
输出:S.5....T. c /etc/httpd/conf/httpd.conf #其中S表示文件大小改变,5表示MD5校验值改变,……表示没有改变,T表示文件修改时间改变,c表示配置文件改变
13、RPM包中文件提取
对文件的命令或其他功能误删除了,不需要重装,提取出缺失文件进行安装就可以
第一步:首先将RPM文件转换为cpio文件[root@localhost ~]# rpm2cpio 包全名 | \,结尾的“\”表示一条命令没输完,换行
第二步:cpio -idv .文件绝对路径,“.”把指定的文件提取到当前路径下,“.”就表示当前路径
rpm2cpio #将rpm包转换为cpio格式的命令
cpio #是一个标准工具,它用于创建软件档案文件和从档案文件提取文件
文件提取实验:
1)[root@localhost ~]# rpm -qf /bin/ls #查询ls命令属于哪个软件包,被删了可以百度,用其它Linux都可以查出
输出:coreutils-8.4-47.el6.i686
2)[root@localhost ~]# mv /bin/ls /tmp #将ls命令剪切到/tmp目录下,造成ls命令误删除的假象
3)[root@localhost ~]# ls #再次执行ls命令
输出:-bash: /bin/ls: 没有那个文件或目录,系统报错
4)[root@localhost ~]# rpm2cpio /mnt/cdrom/Packages/coreutils-8.4-47.el6.i686.rpm |cpio -idv ./bin/ls #提取RPM包中ls命令到当前目录的/bin/ls下
输出:./bin/ls 24840 块
5)[root@localhost ~]# cp /root/bin/ls /bin/ #把ls命令复制回/bin/目录,修复文件丢失
6)[root@localhost ~]# ls #命令可以正常使用
三、RPM包管理-yum在线管理
可以用网上服务器,也可以用本地光盘作为yum的服务器。yum最大的缺点就是收费,CentOS中是社区维护,完全免费的。
1、IP地址配置和网络yum源
第一步:配置ip地址和DNS
小问题:
DHCP,沈超老师说*是自动获取ip的意思,没有DHCP服务器,所以将*改为空格后,手动配置ip。
我在进行上述操作后,发现CentOS网络无法连接外网,打开自家路由器的管理界面,发现存在DHCP服务器
所以,我又将DHCP的空格改为*,让服务器自动分配,解决了上网问题。
DNS服务器可以根据自己是移动、电信还是联通的宽带,百度所在省份的DNS服务器地址
第二步:设置完后,需要重启网络服务才可以生效
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 打开网卡配置文件将开机启动选项ONBOOT="no"改为ONBOOT="yes",否则重启网络服务无效。如果不用setup时,手动更改网络设置就是在配置文件中更改
第三步:重启网络服务
[root@localhost ~]# service network restart
网络yum源 | |
---|---|
[root@localhost yum.repos.d]# vi /etc/yum.repos.d/CentOS-Base.repo | |
[base] | 容器名称,一定要放在[]中 |
name | 容器说明,可以自己随便写 |
mirrorlist | 镜像站点,这个可以注释掉 |
baseurl | 我们的yum源服务器地址。默认是CentOS官方的yum源服务器,是可以使用的,如果你觉得慢可以改成你喜欢的yum源地址 |
enabled | 此容器是否生效,如果不写或写成enable=1都是生效,写成enable=0就是不生效 |
gpgcheck | 如果是1指RPM的数字证书生效,如果是0则不生效 |
gpgkey | 数字证书的公钥文件保存位置。不用修改 |
CentOS能联网后,就可以直接使用yum访问CentOS的官方网站,然后进行下载安装升级,但是CentOS的服务器在国外,访问起来比较慢。这是就可以将地址改为国内的,免费的一些地址,可以百度寻找。
2、yum命令
3、光盘yum源搭建
四、源码包管理
五、脚本安装包与软件包选择