Linux学习笔记
Linux常用命令
文件搜索命令
-
find命令:
① find 目录 -name 文件名:
文件名可以用通配符,* 代表任意个任意字符; ?代表一个任意字符。
-iname 代表文件名不区分大小写搜索。
② find 目录 -size +n/-n/n:
+n代表大于n;-n代表小于n;n代表等于n;
③ find 目录 -user 用户名; find 目录 -group 属组名:
用于查找拥有者或所属组为XXX的文件或目录。
④ find 目录 -type d/f/l:
用于查找类型为d(目录),f(文件),l(软链接)。
⑤ find 目录 -inum i节点号:
根据i节点号搜索文件。
⑥ -a和-r 搜索条件拼接:
-a即and; -r即or。
⑦ 对搜索结果执行其他命令:
find /etc -name inittab -exec/-ok 命令 {} ;
-exec和-ok区别就是-ok在执行命令前会询问是否执行。
-
locate命令:
find是实时查找,耗时耗资源会较多。locate是系统维护了一个文件资料库,在文件资料库中查找文件会快很多。
缺点: 新创建的文件或在/tmp/目录的文件,不再文件资料库中会找不到。
通过updatedb更新文件资料库。
locate 文件名; locate -i 文件名。 加-i参数文件名不区分大小写。
-
which命令:
用于搜索命令所在目录及别名信息。
which 命令名称
-
whereis命令:
搜索命令所在目录及帮助文档路径。
帮助文档一般都放在/user/share/man目录下。
-
grep命令:
在文件中搜寻字串匹配的行并输出。
-i 不区分大小写;
-v 排除指定字串;
帮助命令
- man命令:
man ls : 查看ls命令的帮助文档,包括作用,参数等。 - whatis命令:
whatis ls : 查看ls命令的作用。仅列出man ls中的NAME中的内容。 - 命令的 --help参数:
ls --help :ls的参数信息。 - help命令:
例如:umask、cd命令都是linux内置的命令,不能通过man命令查询帮助,需要通过help cd查看。
获得Shell内置命令的帮助信息。
软件包管理
软件包管理简介
- 软件包分类:
源码包:脚本安装包
二进制包(RPM包、系统默认包) - 源码包
源码包的优点是:
开源,如果有足够的能力,可以修改源代码;
可以自由选择所需的功能;
软件是编译安装,所以更加适合自己的系统,更加稳定也效率更高;
卸载方便(直接删除安装目录,一般源码包安装在/usr/local/下)。
源码包的缺点是:
安装过程步骤较多,尤其安装较大的软件集合时(如LAMP环境搭建),容易出现错误;
编译过程时间较长,安装比二进制安装时间长;
因为是编译安装,安装过程中一旦报错新手很难解决。 - RPM包:
二进制包的优点:
包管理系统简单,只通过几个命令就可以实现包的安装、升级、查询和卸载;
安装速度比源码包安装快的多;
二进制包缺点:
经过编译,不再可以看到源代码;
功能选择不如源码包灵活;
依赖性。
RPM包管理-rpm命令管理
-
RPM包命名原则:
httpd-2.2.15-15.el6.centos.1.i686.rpm
httpd 软件包名
2.2.15 软件版本
15 软件发布的次数
el6.centos 适合的Linux平台
i686 适合的硬件平台
rpm rpm包扩展名 -
RPM包安装时的依赖:
树形依赖: a -> b -> c
环形依赖: a -> b -> c -> a
模块依赖: 模块依赖查询网站:www.rpmfind.net -
包全名与包名:
包全名:操作的包是没有安装的软件包时,使用包全名,而且要注意路径。比如:执行命令安装rpm包时要写包全名(带.rpm后缀)。
包名:操作已经安装的软件包时,使用包名。是搜索/var/lib/rpm/中的数据库。比如:查询已经安装的rpm包时只需要写包名(不需要带.rpm后缀) -
RPM安装:
rpm –ivh 包全名
选项:
-i(install) 安装
-v(verbose) 显示详细信息
-h(hash) 显示进度
–nodeps 不检测依赖性 -
查询是否安装:
rpm -q 包名 #查询包是否安装
选项:
-q 查询(query)
rpm –qa #查询所有已经安装的RPM包
选项:
-a 所有(all) -
查询软件包详细信息:
rpm –qi 包名
选项:
-i 查询软件信息(information)
-p 查询未安装包信息(package) -
查询包中文件安装位置:
rpm –ql 包名
选项:
-l 列表(list)
-p 查询未安装包信息(package) -
查询系统文件属于哪个RPM包:
rpm –qf 系统文件名
选项:
-f 查询系统文件属于哪个软件包(file) -
查询软件包的依赖性:
rpm –qR 包名
选项:
-R 查询软件包的依赖性(requires)
-p 查询未安装包信息(package) -
RPM包升级:
rpm -Uvh 包全名
选项:
-U(upgrade) 升级 -
卸载:
rpm -e 包名
选项:
-e(erase) 卸载
–nodeps 不检查依赖性
RPM包管理-yum在线管理
-
查询:
yum list # 查询所有可用软件包列表
yum search 关键字 # 搜索服务器上所有和关键字相关的包 -
安装:
yum –y install 包名
选项:
-y 自动回答yes -
升级:
yum -y update 包名
选项:
-y 自动回答yes -
卸载:
yum -y remove 包名
选项:
-y 自动回答yes -
YUM软件组管理命令
yum grouplist # 列出所有可用的软件组列表
yum groupinstall 软件组名 # 安装指定软件组,组名可以由grouplist查询出来
yum groupremove 软件组名 # 卸载指定软件组
源码包管理
源码包和RPM包的区别
-
区别:
安装之前的区别:概念上的区别。
安装之后的区别:安装位置不同。 -
RPM包安装位置:
是安装在默认位置中
-
源码包安装位置:
安装在指定位置当中,一般是/usr/local/软件名/ -
安装位置不同带来的影响:
RPM包安装的服务可以使用系统服务管理命令(service)来管理,例如RPM包安装的apache的启动方法是:
/etc/rc.d/init.d/httpd start
service httpd start
而源码包安装的服务则不能被服务管理命令管理,因为没有安装到默认路径中。所以只能用绝对路径进行服务的管理,如:
/usr/local/apache2/bin/apachectl start
文件系统管理
分区和文件系统
分区类型
- 主分区:总共最多只能分四个
- 扩展分区:只能有一个,也算作主分区的一种,也就是说主分区加扩展分区最多有四个。但是扩展分区不能存储数据和格式化,必须再划分成逻辑分区才能使用。
- 逻辑分区:逻辑分区是在扩展分区中划分的,如果是IDE硬盘,Linux最多支持59个逻辑分区;如果是SCSI硬盘Linux最多支持11个逻辑分区。
分区表示方法
注:1,2,3,4这4个编号只能给主分区或扩展分区使用。 当主分区+扩展分区小于4时,逻辑分区依然从5开始计数。
文件系统
ext2:是ext文件系统的升级版本,Red Hat Linux7.2版本以前的系统默认都是ext2文件系统。1993年发布,最大支持16TB的分区和最大2TB的文件(1TB=1024GB=1024*1024KB)
ext3: ext3文件系统是ext2文件系统的升级版本,最大的区别就是带日志功能,以在系统突然停止时提高文件系统的可靠性。支持最大16TB的分区和最大2TB的文件
ext4:它是ext3文件系统的升级版。ext4 在性能、伸缩性和可靠性方面进行了大量改进。EXT4的变化可以说是翻天覆地的,比如向下兼容EXT3、最大1EB文件系统和16TB文件、无限数量子目录、Extents连续数据块概念、多块分配、延迟分配、持久预分配、快速FSCK、日志校验、无日志模式、在线碎片整理、inode增强、默认启用barrier等。是CentOS 6.3的默认文件系统(1EB=1024PB=1024*1024TB)
文件系统常用命令
df命令、du命令、fsck命令和dump2fs命令
-
文件系统查看命令df:
df [选项] [挂载点]
选项:
-a 显示所有的文件系统信息,包括特殊文件系统,如/proc、/sysfs;
-h 使用习惯单位显示容量,如KB,MB或GB等;
-T 显示文件系统类型;
-m 以MB为单位显示容量;
-k 以KB为单位显示容量。默认就是以KB为单位;
-
统计目录或文件大小:
du [选项] [目录或文件名]
选项:
-a 显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量;
-h 使用习惯单位显示磁盘占用量,如KB,MB或GB等;
-s 统计总占用量,而不列出子目录和子文件的占用量;
-
du命令和df命令的区别:
df命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是程序并没有释放空间)。
du命令是面向文件的,只会计算文件或目录占用的空间。
-
文件系统修复命令fsck:
fsck [选项] 分区设备文件名
选项:
-a:不用显示用户提示,自动修复文件系统
-y:自动修复。和-a作用一致,不过有些文件系统只支持-y -
显示磁盘状态命令dumpe2fs:
dumpe2fs 分区设备文件名
Shell编程
基础
概念
- Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
- Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强。Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令。
- Shell的两种主要语法类型有Bourne和C,这两种语法彼此不兼容。Bourne家族主要包括sh、ksh、Bash、psh、zsh;C家族主要包括:csh、tcsh。
- Bash: Bash与sh兼容,现在使用的Linux就是使用Bash作为用户的基本Shell。Linux支持的Shell:/etc/shells。
执行方式
-
echo输出命令:
echo -n 不换行输出:
echo -e 支持反斜线控制的字符转换。例如:\t在不加-e参数时,会直接输出\t;但是加-e参数时,会输出制表