1.当执行一个指令的时候,举例来讲【ls】,系统会依照PATH的设定去每一个PATH定义的目录下搜寻文件名为ls的可执行文件,若是在PATH定义的目录中含有多个文件名为ls的可执行文件,那么先搜寻到的同名指令先被执行!shell
2.使用echo $PATH能够查看那些目录被定义了。echo 有【显示、印出】的意思,而PATH 前面加上的 $ 表示后面接的是变量。数据库
3.shell script 是利用shell 的功能所写的一个【程序program】,这个程序是使用纯文本文件,将一些shell的语法与指令(含外部指令)写在里面,搭配正规表示法、管线命令与数据流重导向等功能,已达到咱们所想要的处理目的。vim
4.干吗学些shell scripts (1)自动化管理的重要依据;天天要进行的任务有:查询登入档、追踪流量、监控用户使用主机状态、主机各项硬设备状态、主机软件更新查询等等。(2)追踪与管理系统的重要工做。(3)简单入侵检测功能。(4)连续指令单一化。(5)简单的数据处理。(6)跨平台支持与学习历程较短。缓存
5.(1)指令的执行时从上而下、从左到右的分析与执行;(2)指令、选项与参数间的多个空白都会被忽略掉;(3)空白行也将被忽略掉,而且【tab】按键所推开的空白一样视为空格键;(4)若是读取到一个Enter符号(CR),就尝试开始执行改行(或该串)命令;(5)至于若是一行的内容太多,则可使用【\Enter】来延伸至下一行;(6)【# 】可做为批注!任何加在# 下面的资料将所有被视为批注文字而被忽略。bash
6.养成良好的script 撰写习惯,在每一个script的文件头除记录好:(1)script的功能;(2)script的版本信息;(3)script的做者与联系方式;(4)script的版权宣告方式;(5)script的History(历史记录);(6)script内特殊的指令,使用【绝对路径】的方式来下达;(7)script运转时须要的环境变量预先宣告与设定;(8)撰写script 的工具最好使用vim 而不是vi,由于vim会有额外的语法检验机制。此外,在较为特殊的程序代码部分,建议加上批注说明。服务器
7.利用判断符号 []。由于中括号用在不少地方,包括通配符与正规表示法等等,因此若是要在bash的语法当中使用中括号做为shell的判断式时,必需要注意中括号的两端须要有空格符来分割。(1)在中括号[]内的每一个组件都须要有空格键来分割;(2)在中括号内的变数,最好都以双引号括起来;(3)在中括号内的变数,最好都以单或者双引号括起来。网络
8.条件判断式 (1)利用if…then ;(2)利用case…esac 判断;(3)利用funcation功能。函数
9.循环(loop)(1)while do done,until do done(不定循环);(2)for…do…done(固定循环);(3)for…do…done 的数值处理。工具
10.每一个登入的使用者至少都会取得两个ID,一个是使用者ID(User ID,简称UID)、一个是群组ID(Group ID,简称GID)。oop
11.当你输入帐号后,系统是怎么处理的那? (1)先找寻/etc/passwd 里面是否有你输入的帐号?若是没有则跳出,若是有的话则将该帐号对应的UID与GID(在/etc/group中)读出来,另外,该帐号的家目录与shell设定也一并读出;(2)再来则是核对密码表,这是Linux会进入 /etc/shadow 里面找出对应的帐号与UID,而后核对一下你刚输入的密码与里头的密码是否相符。(3)若是一切都OK的话,就会进入shell 控管的阶段。
12. /etc/passwd 文件结构 每一行都表明一个帐号,有几行就表明有几个帐号在你的系统中。不过须要特别留意的是,里头有不少帐号原本就是系统正常运做所必须的,咱们能够简称为系统帐号,例如 bin.daemon,adm,nobody等等,这些帐号请不要随意的杀掉。
13.新增与移除使用者:useradd,相关配置文件,passwd,usermod,userdel。
14.使用了useradd 创建了帐号以后,在预设的状况下,该帐号是暂时被封锁的,也就是说,该帐号是没法登入的。直接给他设定新密码就行了。
15.Linux 开发商先在固定的硬件平台与操做系统平台上面将须要安装或升级的软件编译好,而后将这个软件的全部相关文件打包成为一个特殊格式的文件,在这个文件内还包含了预先侦测系统与相依软件的脚本,并提供记载该软件提供的全部文件信息等。最终将这个软件文件释放出来。客户端取得这个文件后,只要透过特定的指令来安装,那么该软件文件就会依照内部的脚原本侦测相依的前驱软件是否存在,若安装的环境符合要求,就会开始安装。安装完成后还会将该软件的信息写入软件管理机制中,以达成将来能够进行升级、移除等动做。
16.RPM 全名 是【Red-Hat Package Manager】简称则为RPM。顾明思议,当初这个软件管理的机制是由Red Hat 这家公司发展出来的。RPM 是以一种数据库记录的方式来将你所须要的软件安装到你的Linux系统的一套管理机制。
17.RPM 最大的特色就是将你要安装的软件先编译过,而且打包成为RPM机制的包装文件,透过包装好的软件里头默认的数据库记录,记录这个软件要安装的 时候必须具有的相依属性软件,当安装在你的Linux主机时,RPM会先依照软件里头的数据查询Linux主机的相依属性软件是否知足,如知足则予以安装,若不知足则不予安装。而且安装的时候将软件的信息写入RPM的数据库中,以便将来的查询、验证和反安装。
18.SRPM 是Source RPM 的意思,也就是这个RPM文件里面含有原始码。特别注意的是,这个SRPM 所提供的软件内容【并无通过编译】,它所提供的是原始码。
19.SRPM的扩展名是以***.src.rpm 这种格式来命名的。
20.SRPM 虽然内容是原始码,可是他仍然还有该软件所须要的相依性软件说明、以及全部RPM文件所提供的数据。同时,他与RPM不一样的是,他也提供了参数配置文件(就是configure 与makefile).因此,若是咱们下载的是SRPM,那么要安装该软件时,就必需要(1)先将已该文件以RPM管理的方式编译,此时SRPM会被编译成为RPM文件;(2)而后将编译完成的RPM文件安装到Linux系统中。
21.RPM 文件必需要在相同的Linux 环境下才可以安装,而SRPM既然是原始码的格式,天然咱们就能够透过修改SRPM内的参数配置文件,而后从新编译产生能适合咱们Linux环境的RPM文件。
22.透过档名能够知道 软件名称 – 版本信息 –释放版本次数—操做硬件平台。
23.RPM 有如下的有点:(1)RPM内含已经编译过的程序与配置文件等数据,可让用户免除从新编译的困扰;(2)RPM 在安装以前,会先检查系统的硬盘容量、操做系统版本等,可避免文件被错误安装;(3)RPM 文件自己提供软件版本信息、相依属性软件名称、软件用途说明、软件所含文件等信息,便于了解软件;(4)RPM 管理的方式使用数据库记录RPM文件的相关参数,以便于升级、移除、查询与验证。
24.YUM 机制:CentOS (1)先将释放出来的软件放置到YUM服务器内(2)而后分析这些软件的相依属性问题,将软件内的记录信息写下来(header)。而后再将这些信息分析后记录成软件相关性的列表。这些列表数据与软件所在的本机或网络位置能够称呼为容器或软件仓库或软件库(repository)。当客户端有软件安装的需求时,客户端主机会主动的向网络上面的yum 服务器的软件库网址下载清单列表,而后透过列表的数据与本机RPM数据库已存在的软件数据相比较,就可以一口气安装所须要的具备相依属性的软件了。
25.因此软件仓库内的列表会记载每一个文件的相依属性关系,以及全部文件的网络位置(URL)! 因为记录了详细的软件网络位置,因此有需求的时候,固然就会自动的从网络下载该软件。
26.基本上rpm 这个指令真的就剩下查询与检验的功能,因此,查询与检验仍是要学的,至于安装,透过yum就行了。
27.使用RPM来升级很简单,就是以-Uvh 或者-Fvh 来升级便可。-Uvh 后面接的软件即便没有安装过,则系统将予以直接安装;若后面接的软件有安装过旧版,则系统自动更新;-Fvh 若是后面接的软件并未安装到你的Linux 系统上,则该软件不会被安装,亦即只有已安装到你Linux 系统的软件才会被升级。
28.验证(Verify)的功能主要在于提供系统管理员一个有用的管理机制,做用的方式是【使用/var/lib/rpm底下的数据库内容来比对目前Linux系统的环境下的全部软件文件】,也就是说,当你有数据不当心遗失,或者是由于你误杀了某个软件的文件,或者是不当心不知道修改了哪个软件的文件内容,可使用这个简单的方法来验证一下本来的文件系统。
29.在Linux系统上面,一个文件能不能被执行看的是有没有可执行的那个权限(具备 x permission),不过,Linux 系统上真正认识的可执行文件实际上是二进制文件(binary program)。
30.函式库 就 相似子程序的角色,能够被呼叫来执行的一段功能函数。
31.可使用make 这个指令的相关功能来进行编译过程的指令简化了。 当执行make 时,make 会在当前的目录下搜寻Makefile(or makefile) 这个文本文件,而Makefile 里面则记录了原始码如何编译的详细信息! make 会自动的判别原始码是否通过变更了。
32.通常来讲,侦测程序会侦测的数据大约有低下这些:(1)是否有适合的编译程序能够编译本软件的程序代码;(2)是否已经存在本软件所须要的函式库,或其余须要的相依软件;(3)操做系统平台适合适合本软件,包括Linux的核心版本;(4)核心的表头定义档(header include)是否存在(驱动程序必需要的侦测)。
33.所谓的源代码,其实就是一些写满了程序代码的纯文本文件。
34.因为咱们的原始文件有时并不是仅只有一个文件,因此咱们没法直接进行编译。这个时候就须要先产生目标文件,而后再以链接制做成为binnary可执行文件。
35.gcc 为Linux 上面最标准的编译程序,这个gcc 是由GNU 计划所维护的。
36.make 有这些好处:(1)简化编译时所须要下达的指令;(2)若在编译完成以后,修改了某个原始码文件,则make 仅会针对被修改了的文件进行编译,其余的object file 不会被更动;(3)最后能够依照相依性来更新(update)执行档。
37.事实上不少在Linux平台上面发展的软件的原始码,本来就是以gcc 为底来设计的。
38.通常来讲,以Tarball 方式释放出来的软件当中,为了简化编译的流程,一般都是配合前几个小节提到的make 这个指令来依据目标文件的相依性来进行编译的。
39.不少的软件在发展的时候都是直接取用系统核心提供的函式库与include文件的,这样才能够与这个系统兼容。
40.几乎每一个软件都会提供联机帮助的服务,那就是 info 与 man 的功能。
41.咱们会发现软件的内容大体上是摆在etc,lib,bin,man等目录当中,分别表明【配置文件、函式库、执行档、联机帮助档】。
42.Diff 这个指令 能够将【两个文件之间的差别性列出来】。
43.不少的软件之间都会互相取用彼此提供的函式库来进行特殊功能的运转。例如不少须要验证身份的程序都习惯利用PAM这个某块提供的验证机制来实做,而不少网络联机机制则习惯利用SSL函式库来进行联机加密的机制。
44.函式库依照是否被编译到程序内部而分为动态和静态函式库。
45.静态函式库的特点:(1)扩展名:这类的函式库一般扩展名为libxxx.a的类型; (2) 编译行为:这类函式库在编译的时候会直接整合到执行程序当中,因此利用静态函式库编译成的文件会比较大一些;(3)独立执行的状态:这类函式库的最大优势,就是编译成功的可执行文件能够独立执行,而不须要再向外部要求读取函式库的内容。(4)升级难易度: 虽然执行档能够独立执行,但由于函式库是直接整合到执行档中,所以若函式库升级时,整个执行档必需要从新编译才能将新版的函式库整合到程序中,也就是说,在升级方面,只要函式库升级了,全部将此函式库归入的程序都须要从新编译。
46.动态函式库的特点:(1) 扩展名:这类函式库一般扩展名为libxxx.so.(2)编译行为:与静态函式库被整个捉到程序中不一样的,动态函式库在编译的时候,在程序里面只有一个【指向(Pointer)】的位置而已。也就是说,动态函式库的内容并无被整合到执行档中,而是当执行档要使用到函式库的机制时,程序才会去读取函式库来使用。因为执行文件当中仅具备指向动态执行函式库所在的指标而已,并不包含函式库的内容。
47.独立执行的状态: 这类型的函式库所编译出来的程序不能被独立执行,由于当咱们使用到函式库的机制时,程序才会去读取函式库,因此函式库文件【必需要存在】才行,并且,函式库的【所在目录也不能改变】,由于咱们的可执行文件里面仅有【指标】。(4)升级难易度:当函式库升级后,执行档根本不须要进行从新编译,由于执行档会直接指向新的函式库文件。
48.如何判断某个可执行的binnary文件含有什么动态函式库呢?很简单,利用ldd 就能够了。
49.Service几个常见的状态:
*active(running):正有一只或多只程序正在系统中执行。
*active(exited):仅执行一次就正常结束的服务,目前并无任何程序在系统中执行。
*active(waiting):正在执行当中,不过还在等待其余的事件才能继续处理。
*inactive:这个服务目前没有运转的意思。
50.重启网卡: service network restart
51.直接关闭防火墙
systemctl stop firewalld.service
禁止firewall开机启动
systemctl disable firewalld.service
52.Linux Swap 空间释放
Swap意思是交换分区,一般咱们说的虚拟内存,是从硬盘中划分出的一个分区。当物理内存不够用的时候,内核就会释放缓存区(buffers/cache)里一些长时间不用的程序,而后将这些程序临时放到Swap中,也就是说若是物理内存和缓存区内存不够用的时候,才会用到Swap。
主要使用的命令是:
swapoff -a; 和 swapon -a;
注意:这样清理有个前提条件,空闲的内存必须比已经使用的swap空间大
53 . shell 链接 Linux Server,链接会话时间过短,修改会话有效时间窗口。
修改的文件 为 /etc/profile 参数为 TMOUT。
(保存,新链接才有效)
54.从本机目录安装软件包
因为RPM 是透过预先编译并打包成RPM文件格式后,再加以安装的一种方式,而且还可以进行数据库的记载。因此 RPM有如下优势:
* RPM 内含有已经编译过的程序和配置文件等数据,可让用户免除从新编译的困扰;
* RPM 在被安装以前,会先检查系统的磁盘容量、操做系统版本等,可避免文件被错误安装;
* RPM 文件自己提供软件版本信息、相依属性软件名称、软件用途说明、软件所含文件等信息,便于了解软件;
* RPM 管理的方式使用数据库记录RPM文件的相关参数,便于升级、移除、查询与验证。
咱们有时候在安装某个程序时,报错:
No package XXXXX available. Error: Nothing to do
这个时候,咱们能够找到rpm文件先下载到本地,而后再经过本地目录安装。
sudo yum localinstall XXXXX-1.8.3-1.x86_64.rpm
以上问题解决,报错消失。
----我的学习笔记