![](https://img-blog.csdnimg.cn/6e982325211b4fd184da04c77c0a4f19.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
学习鸟哥的Linux私房菜
文章平均质量分 83
基础学习篇(第四版)
Uncertainty!!
生存/生活--商品和服务--货币--物欲--价值观--人生观--世界观
展开
-
知识回顾:源代码与Tarball(软件安装)
1.源代码其实大多数是纯文本文件,需要通过编译器的编译操作之后,才能够制作出Linux系统能够识别的可执行的二进制文件2.开放源代码可以加速软件的更新速度,让软件性能更快、漏洞修补更及时3.在Linux系统中,最标准的C语言编译器为gcc4.在编译的过程中,可借由其他软件提供的函数库来使用该软件的相关机制与功能5.为了简化编译过程当中复杂的命令输入,可借由make与makefile(定义编译规则)来简化程序的更新、编译与链接等操作6.Tarball为使用tar与gzip、bzip2、xz压缩功原创 2021-03-24 22:31:22 · 725 阅读 · 0 评论 -
函数库管理
1. 函数库管理很多软件之间都会互相使用彼此提供的函数库来使用其特殊的功能1.1 动态与静态函数库目前Linux发行版比较倾向于使用动态函数库Linux系统中内核提供了许多的函数库,内核的函数库放置在 /lib/modules1.2 ldconfig与 /etc/ld.so.conf内存访问速度是硬盘的好几倍如果将常用的动态函数库先加载到内存当中(缓存,cache),当软件要使用动态函数库时,就不需要从头由硬盘里面读出,这样就提高了动态函数库的读取速度,这时需要 ldconfig 与 /e原创 2021-03-24 17:50:52 · 236 阅读 · 2 评论 -
Tarball的管理与建议
1. Tarball的管理与建议了解如何使用具有源代码的 Tarball 来建立一个属于自己的软件1.1 使用源代码管理软件所需要的基础软件原创 2021-03-24 15:04:40 · 456 阅读 · 1 评论 -
用make进行宏编译
1. 用make进行宏编译make 的功能就是可以简化编译过程里面所执行的命令范例:原创 2021-03-24 00:55:07 · 1618 阅读 · 2 评论 -
使用传统程序语言进行编译的简单范例
1. 使用传统程序语言进行编译的简单范例1.2 单一程序:打印Hello World原创 2021-03-23 22:57:36 · 324 阅读 · 2 评论 -
开放源码的软件安装与升级简介
1. 开放源码的软件安装与升级简介1.1 什么是开放源码、编译器、可执行文件Linux上的软件几乎都是经过GPL的授权,所以每个软件几乎均提供源代码,并且你可以自行修改该程序代码,已符合你个人的需求,这就是开放源码的优点Linux系统真正识别的可执行文件是二进制程序(Binary Program)如何知道一个文件是否为二进制文件?[root@study ~] file /bin/bash #bash本身是二进制程序...原创 2021-03-22 23:30:21 · 387 阅读 · 0 评论 -
硬件数据的收集
1. 服务器硬件数据的收集1.1 查看硬件设备:dmidecodedmidecode命令的作用是以一种可读的方式显示机器的DMI(Desktop Management Interface)信息, 其输出的信息包括 BIOS、系统、主板、处理器、内存、缓存等等, 既可以得到当前的配置,也可以得到系统支持的最大配置,比如说支持的最大内存数等DMI就是帮助收集电脑系统信息的管理系统,DMI信息的收集必须在严格遵照SMBIOS规范的前提下进行。DMI设计适用于任何的平台和操作系统。由于DMI信息可以人为修改,原创 2021-03-22 12:27:38 · 1082 阅读 · 0 评论 -
Linux系统基本设置
1. Linux系统基本设置1.1 网络设置(手动设置与DHCP自动获取)1.1.0 手动设置固定IP获取下面几个参数Linux才可以上网:IP来自百度百科:IP子网掩码(netmask)来自百度百科:子网掩码网关(gateway)来自百度百科:网关DNS 主机的IP(通常有两个,其中一个是119.29.29.29)DNS来自百度百科:DNS1.1.1 网络参数可自动获取(DHCP协议自动获取)来自百度百科:DHCP1.1.2 光纤到户与ADSL宽原创 2021-03-22 09:12:29 · 624 阅读 · 0 评论 -
知识回顾:启动流程、模块管理与Loader
1. Boot Loader:Grub21.1 boot loader的两个stage在BIOS读完信息后,接下来会到第一个启动设备的MBR去读取 boot loaderboot loader 可具有选项功能、直接加载内核文件亦即控制权移交的功能操作系统必须要有 loader 才有办法加载该操作系统的内核MBR是整个硬盘的第一个扇区中的一个区块,充其量整个大小也才446B而已Linux将boot loader的程序代码执行与设置值加载分成两个阶段:stage 1:执行 boot loade原创 2021-03-21 18:18:23 · 155 阅读 · 0 评论 -
内核与内核模块
目录1. 内核与内核模块1.1 内核模块与依赖性1.2 查看内核模块1. 内核与内核模块在整个启动过程中,是否能够成功地驱动主机的硬件设备是内核的工作内核一般是压缩文件,在使用内核前,要将其解压缩后,才能加载到内存中为了应付日新月异的硬件,目前的内核都具有 可读取模块化驱动程序 的功能,亦即是所谓的 模块化(modules) 的功能。所谓模块化可将它想成一个插件,该插件可能由硬件开发商提供,也有可能内核本来就支持,较新的硬件通常都需要硬件开发商提供驱动程序模块如果有个操作系统恰好不支持的新硬件原创 2021-03-21 09:54:55 · 896 阅读 · 0 评论 -
Linux的启动流程
目录1. Linux的启动流程1.1 启动流程1.2 BIOS、Boot Loader、Kernel加载1.2.0 BIOS1.2.1 boot loader 的功能1.2.2 加载内核检测硬件与 initramfs 的功能1. Linux的启动流程系统启动过程中内核要检测硬件并加载适当的驱动程序,接下来则必须调用程序来准备好系统运行的环境,以让用户能够使用整个主机系统1.1 启动流程操作系统(OS)启动的流程:加载BIOS的硬件信息与进行自我检测(自检),并根据BIOS设置取得第一个可启动的原创 2021-03-21 08:59:35 · 449 阅读 · 1 评论 -
日志文件
1. 日志文件日志文件可以记录系统在什么时间、哪个主机、哪个服务、出现了什么信息等内容,这些信息也包括用户识别数据、系统故障排除须知等信息日志文件就是记录系统活动信息的几个文件,如:何时、何地(来源IP)、何人(什么服务名称)、做了什么操作(信息登录)换句话说就是记录系统在什么时候由哪个进程做了什么样的操作时,发生了何种的事件日志文件的作用:解决系统方面的错误解决网络服务的问题过往事件记事本...原创 2021-03-20 15:23:50 · 1814 阅读 · 0 评论 -
知识回顾:系统服务(daemon)
1.早期的服务管理使用System V 的机制,通过 /etc/init.d/*、service、chkconfig、setup等命令来管理服务的启动/关闭/默认启动2.从CentOS 7.x 开始采用 systemd 的机制,此机制最大功能为并行处理,并采用单一命令管理(systemctl)启动速度加快3.systemd将各服务定义为unit,而unit又分类为service、socket、target、path、timer等不同类别,方便管理与维护4.启动/关闭/重新启动服务的方式为:syst原创 2021-03-19 14:48:21 · 167 阅读 · 0 评论 -
通过systemctl管理服务
1.通过systemctl管理服务1.1 通过systemctl管理单一服务(service unit)的启动/开机启动与查看状态systemctl命令Centos7之后从init完全换成了systemd的启动方式,systemd 启动服务的机制主要是通过 systemctl 的这个系统服务管理指令来处理。systemctl在用法上也囊括 service / chkconfig / setup / init 的大部分功能[root@study ~] systemctl [参数] [服务]-st原创 2021-03-18 23:05:46 · 470 阅读 · 0 评论 -
知识回顾:进程管理与SELinux初探
1.程序:通常为二进制程序,放置在存储媒介中(如硬盘、光盘、软盘、磁带等),为物理文件的形式存在2.进程:程序被触发后,执行者的权限与属性、程序的代码与所需数据等都会被加载到内存中,操作系统并给予这个内存中的单元一个标识符(PID),可以说进程就是一个正在运行中的程序3.进程彼此间是具有相关性的,故有父进程与子进程之分而Linux系统所有进程的父进程就是 systemd 这个PID为1号的进程4.Linux的过程调用通常称为【fork-and-exec】的流程进程都会借由父进程以复制(fork原创 2021-03-15 15:56:58 · 157 阅读 · 0 评论 -
SELinux(Security Enhanced Linux)
1. SELinux初探1.1 什么是SELinuxSELinux是整合到内核的一个模块SELinux是在进行进程、文件等详细权限设置时依据的一个内核模块由于启动网络服务的也是进程,因此刚好也是控制网络服务能否读写系统资源的一道关卡1.1.0 传统文件权限与账号的关系:自主访问控制(DAC,Discretionary Access Control)使用DAC产生的结果,以Apache为例说明1.1.1 以策略规则制定特定进程读取特定文件:强制访问控制(MAC,Mandatory Acces原创 2021-03-15 15:00:42 · 351 阅读 · 0 评论 -
特殊文件与进程
1. 特殊文件与进程1.1 具有SUID/SGID权限的命令执行状态SUIDSGID权限与进程的相关性很大权限会生效是由于【具有该权限的程序被触发】一个程序被触发会变成进程,被触发时就具有了程序拥有者的权限1.2 /proc/* 代表的意义所谓的进程都是在内存当中,而内存中的数据都是写入到目录【/proc/*】下...原创 2021-03-14 15:30:17 · 154 阅读 · 0 评论 -
进程管理
1. 进程管理1.1 查看进程静态 ps 或 动态 top 命令 或 利用 pstree 来查看进程ps命令是“process status”的缩写,ps命令用于显示当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的[root@study ~] ps [参数]-a : 显示所有终端机原创 2021-03-14 11:43:03 · 224 阅读 · 0 评论 -
任务管理(job control)
目录1. 任务管理1.1 job control 的管理1.1.0 使用 & 直接将命令丢到后台中运行1.1.1 将目前的任务丢到后台中暂停:[Ctrl]+z1.1.2 查看目前的后台任务状态:jobs1.1.3 将后台任务拿到前台来处理:fg1.1.4 让任务在后台下的状态变成运行中:bg1.1.5 管理后台当中的任务:kill1.2 脱机管理问题1. 任务管理任务管理是用在 bash 环境中的,也就是说【当我们登录系统获取 bash shell 后,再单一终端下同时执行多个任务的操作管理】原创 2021-03-11 22:38:36 · 671 阅读 · 0 评论 -
进程
1. 进程1.1 进程与程序(process & program)程序(program):通常为二进制程序,放置在存储媒介中(如硬盘、光盘、软盘、磁带等)以物理文件的形式存在进程(process):程序被触发后,执行者的权限与属性、程序代码、所需数据等都会被加载到内存中,操作系统给予这个内存中的单元一个标识符(PID)可以说进程就是一个正在运行中的程序子进程与父进程fork and exec:程序调用的流程Linux的程序调用通常称为 fork-and-exec 流程进程都会原创 2021-03-11 21:13:29 · 179 阅读 · 0 评论 -
计划任务
1. 计划任务1.1 仅执行一次的计划任务1.1.0 atd 的启动与 at 运行的方式Linux系统上有负责单一计划任务的服务–atd并非所有Linux发行版都默认启动,有时候需要手动启动 atd 服务[root@study ~] systemctl restart atd #重新启动 atd 服务[root@study ~] systemctl enable atd #让 atd 服务开机就自动启动[root@study ~] systemctl status atd #查看 atd原创 2021-03-09 17:53:42 · 180 阅读 · 0 评论 -
知识回顾:磁盘配额与高级文件系统管理
1.磁盘配额可公平地分配系统上面的磁盘容量给用户,分配的资源可以是磁盘容量(与block有关)或可建立文件数量(与 inode 有关)2.磁盘配额的限制可以有 soft、hard、grace time 等重要选项3.磁盘配额是针对整个文件系统进行限制,xfs 文件系统可以限制目录4.磁盘配额的使用必须要内核与文件系统均支持,文件系统的参数必须含有【usrquota】【grpquota】【prjquota】5.磁盘配额的 xfs_quota 的命令【report】【print】【limit】【ti原创 2021-03-07 11:06:00 · 334 阅读 · 0 评论 -
逻辑卷管理器(LVM,Logical Volume Manager)
目录1. 逻辑卷管理器(LVM)1.1 物理卷(Physical Volume,PV)1.2 卷组(Volume Group,VG)1.3 物理扩展块(Physical Extent,PE)1.4 逻辑卷(Logical Volume,LV)1.5 实践流程1. 逻辑卷管理器(LVM)LVM的全名是Logical Volume Manager(逻辑卷管理器)LVM的重点在于【可以弹性地调整文件系统的容量】LVM可以整合多个物理分区,让这些分区看起来就像个一个磁盘一样。而且,未来还可以在 LVM 管原创 2021-03-06 20:52:07 · 540 阅读 · 0 评论 -
磁盘阵列(RAID,Redundant Array of Independent Disks,独立冗余磁盘阵列)
目录1.磁盘阵列1.1 什么是磁盘阵列1.2 磁盘阵列的分类1.3 磁盘阵列的选择级别(level)1.3.0 RAID 0(等量模式,stripe)1.3.1 RAID 1(镜像模式,mirror)1.3.2 RAID 1+0 或者 RAID 0+11.3.2.0 RAID 0+1(RADI 01)1.3.2.0 RAID 1+0(RADI 10)1.磁盘阵列1.1 什么是磁盘阵列磁盘阵列的全名为独立冗余磁盘阵列(Redundant Array of Independent Disks)RAID可原创 2021-03-06 12:03:15 · 398 阅读 · 0 评论 -
磁盘配额(Quota)
1. 磁盘配额(Quota)1.1 什么是磁盘配额磁盘配额就是为管理员提供磁盘使用率以及让管理员管理磁盘使用情况的一个工具不同的文件系统在磁盘配额的处理情况上不太相同,因此进行磁盘配额前,先确认你的文件系统1.针对Linux主机上的设置:限制某一用户组(group)所能使用的最大磁盘配额(使用用户组限制)限制某一用户(user)的最大磁盘配额(使用用户限制)限制某一目录(directory,project)的最大磁盘配额2.磁盘配额的使用限制ext文件系统仅能针对整个文件系统内核必原创 2021-03-05 17:11:57 · 785 阅读 · 0 评论 -
知识回顾:Linux账号管理与ACL权限设置
1.Linux操作系统上,关于账号与用户组,其实记录的是UID/GID的数字而已2.用户的账号/用户组与 UID/GID 对应,参考【/etc/passwd】与【/etc/group】两个文件3.【/etc/passwd】文件结构4.UID 只有0和非0两种,非0为一般账号,一般账号又分为系统账号(1~999)及可登录者账号(大于1000)5.账号的密码已经移动到【/etc/sahdow】文件中,该文件权限为仅有 root 可修改。该文件结构:6.写入【/etc/passwd】的第四个字段原创 2021-02-28 23:56:15 · 138 阅读 · 0 评论 -
Linux主机上的用户信息传递
1. Linux主机上的用户信息传递1.1 查询用户:w、who、last、lastlog[root@study ~] w原创 2021-02-28 23:03:04 · 237 阅读 · 0 评论 -
用户身份切换
1. 用户身份切换如何让一般用户转变身份成为 root?通过【su -】直接将身份变成 root,但此命令需要 root 的密码通过【sudo 命令】执行 root 的命令串,且需要用户的密码1.1 su(身份切换命令)su命令用于切换当前用户身份到指定用户或者以指定用户的身份执行命令或程序。1.普通用户切换到root用户,可以使用su – 或su root,但是必须输入root密码才能完成切换。2.root用户切换到普通用户,可以使用su username,不需要输入任何密码即可完成切换原创 2021-02-28 16:22:56 · 898 阅读 · 0 评论 -
主机的详细权限规划:ACL(Access Control List)的使用
1. 主机的详细权限规划:ACL的使用1.1 什么是 ACLACL 是 Access Control List 的英文缩写,中文译为 访问控制列表,主要目的是提供传统的属主、所属群组、其他人的读、写执行权限之外的详细权限设置ACL 可针对单一用户、单一文件或目录来进行 r、w、x 的权限设置ACL主要针对这几个方面来控制权限:用户(user):可针对用户来设置权限用户组(group):针对用户组为对象来设置其权限默认属性(mask):可针对在该目录下建立新文件/目录时,规范新数据的默认权限,原创 2021-02-27 21:49:41 · 571 阅读 · 0 评论 -
账号管理
目录1. 账号管理1.1 新增/删除用户:useradd、passwd、usermod、userdel1.1.0 useradd(新建账号)1.1.1 passwd(密码设置)1. 账号管理1.1 新增/删除用户:useradd、passwd、usermod、userdel1.1.0 useradd(新建账号)useradd命令用来创建新的用户或更改用户的信息。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码。使用useradd指令所建立的帐号,实际上是保存在/etc原创 2021-02-27 17:38:57 · 814 阅读 · 0 评论 -
Linux的账号与用户组
1. Linux的账号与用户组1.1 用户标识符:UID 与 GIDLinux主机不会直接认识【账号名称】,它仅认识ID每个登录的用户至少都会获取两个ID用户ID(User ID,UID)用户组ID(Group ID,GID)1.2 用户账号与用户账号有关的两个重要文件1.管理用户 UID 与 GID 重要参数的【/etc/passwd】2.管理用户密码相关数据的【/etc/shadow】1.2.0 【/etc/passwd】文件结构...原创 2021-02-26 16:24:53 · 140 阅读 · 0 评论 -
知识回顾:shell脚本
1.shell 脚本是利用 shell 的功能所写的一个【程序】,这个程序是纯文本文件2.shell 脚本用在系统管理上面是很好的一项工具,但是用在处理大量数值运算上就不够好了,因为 shell 脚本的速度较慢,且使用的 CPU 资源较多,会造成主机资源的分配不良3.shell 脚本的文件中,命令是从上而下、从左而右地分析与执行4.良好的程序编写习惯中:第一行要声明 shell (#!/bin/bash)第二行起声明程序的用途、版本、作者等信息5.交互式脚本可用【read】命令完成原创 2021-02-25 21:20:25 · 360 阅读 · 0 评论 -
shell脚本的跟踪与调试
1. shell脚本的跟踪与调试运行脚本前,检查脚本文件是否存在问题sh命令是shell命令语言解释器,执行命令从标准输入读取或从一个文件中读取。通过用户输入命令,和内核进行沟通!Bourne Again Shell (即bash)是自由软件基金会(GNU)开发的一个Shell,它是Linux系统中一个默认的Shell。Bash不但与Bourne Shell兼容,还继承了C Shell、Korn Shell等优点用法[dmtsai@study ~] sh [参数]-c : 命令从-c后的字符串读原创 2021-02-25 18:10:08 · 579 阅读 · 0 评论 -
循环(loop)
1. 循环(loop)原创 2021-02-25 18:06:43 · 3490 阅读 · 0 评论 -
条件判断式
1. 条件判断式1.1 利用 if…thenif…then是最常见的条件判断式,当符合某个条件判断的时候,就予以进行某项任务1.1.0 单层、简单条件判断式原创 2021-02-25 15:13:06 · 491 阅读 · 0 评论 -
判断式
目录1. 判断式1.1 利用 test 命令的测试功能1. 判断式1.1 利用 test 命令的测试功能检测系统上某些文件或相关的属性时,利用【test】命令test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试用法:[dmtsai@study ~] test [表达式]-eq (=) : 等于则为真-ne (!=) : 不等于则为真-gt (>) : 大于则为真-ge (>=) : 大于等于则为真-lt (<) : 小于则为真-le (原创 2021-02-25 00:29:46 · 445 阅读 · 0 评论 -
什么是shell脚本
目录1. 什么是shell脚本1. 什么是shell脚本shell脚本是利用 shell 的功能所写的一个程序。这个程序是使用纯文本文件,将一些 shell 的语法与命令(含外部命令)写在里面,搭配正则表达式、管道命令与数据流重定向等功能shell 脚本编写的注意事项:命令是从上而下,从左到右地分析执行命令、选项与参数间的多个空格都会被忽略空白行也被忽略,且[Tab]按键所产生的空白同样视为空格键如果读取到一个Enter符号(CR),就尝试开始执行该行(或该串)命令如果一行内容太多,可使原创 2021-02-23 16:52:06 · 2757 阅读 · 0 评论 -
知识回顾:正则表达式与文件格式化处理
1.正则表达式就是处理字符串的方法,以行为单位进行字符串的处理操作2.正则表达式通过一些特殊符号的辅助,可以让用户轻易实现【查找、删除、替换】某特定字符串的处理过程特殊符号代表意义[:alnum:]代表英文大小写字符及数字0 ~ 9、A ~ Z、a ~ z[:alpha:]代表任何英文大小写字符A ~ Z、a ~ z[:blank:]代表空格键与[Tab]按键[:cntrl:]代表键盘上控制按键CR、LF、Tab、Del等[:digit:]代表数字0原创 2021-02-23 11:43:14 · 250 阅读 · 0 评论 -
文件的格式化与相关处理
目录1. 文件的格式化与相关处理格式化打印:printf1. 文件的格式化与相关处理格式化打印:printfprintf 命令模仿 C library里的 printf() 程序。printf 使用引用文本或空格分隔的参数,外面可以在printf中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认printf不会像 echo 自动添加换行符,我们可以手动添加 \n用法:[dmtsai@study ~] printf [格式控制字符串] [参数]\a : 警告字符,通常为ASCII的原创 2021-02-23 00:11:28 · 477 阅读 · 0 评论 -
扩展正则表达式
1. 扩展正则表达式扩展正则表达式使用范围更广,可简化整个命令操作范例:去除空白行与行首为#的行[dmtsai@study ~] grep -v '^$' regular_express.txt | grep -v '^#'简化为:[dmtsai@study ~] egrep -v '^$|^#' regular_express.txtegrep命令作用是在文件内查找指定的字符串egrep执行效果与grep -E相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的原创 2021-02-22 12:49:39 · 446 阅读 · 2 评论