linux总复习(二)

本文深入探讨了Linux的高级主题,包括makefile和make工具在C语言程序编译中的作用,包管理工具如RPM和YUM的使用,以及如何管理进程,如fork、exec和system函数。文章还详细介绍了Linux的启动过程,从BIOS到init,讲解了init机制和systemd的区别和优缺点。此外,讨论了计划任务如cron和at的使用,以及日志管理的重要性。最后,文章涵盖了Git版本控制系统的基础知识,Apache服务器的安装与配置,以及反向代理和负载均衡的概念,尤其是Nginx的工作原理和优势。
摘要由CSDN通过智能技术生成

二、进阶与原理
(1)make和makefile
6.1 Linux C语言程序的编译和运行
确保已安装有gcc
-o选项用于指定编译后的文件名
如不指定则默认生成a.out
./用于指定路径
Linux C头文件
基本头文件在/usr/include,附加头文件一般在/usr/include/sys或/usr/include/linux中
使用gcc的-I选项可以引入不在默认路径中的头文件
Linux C库文件
标准库文件一般位于/lib或/usr/lib
库文件可以分为静态库(.a)和共享库(.so)
库文件的命名规范:以lib开头,后面部分指明库功能,后缀名说明库类型
make工具可以解决上述问题,会在必要时重新编译所有受影响的文件。
6.2makefile文件语法
makefile文件由一组依赖关系和规则构成;
每个依赖关系由一个目标(将要创建的文件)和一组该目标所依赖的源文件组成;
而规则描述了如果通过这些依赖关系创建目标;
make命令通过读取makefile文件的内容,先确定目标文件或要创建的文件,然后比较所依赖源文件的日期和时间决定该用哪条规则来构造目标。
(2)包管理工具
6.3软件包管理
Linux平台下的软件都是以源代码的方式进行发布的;
一般采用归档压缩文件的方式(.tar.gz),被称为软件包;
对这类软件包的安装方法为:

  1. ./configure:检查各种配置文件、参数,生成makefile;
  2. make:编译并链接成二进制文件;
  3. make install:执行并安装到系统中
    6.4两大主流的软件包管理器

RPM:RedHat Package Manager的缩写,由RedHat公司开发和维护,适用于RedHat家族的发行版,Fedora,CentOS等;
DPKG:Debian Packager的缩写,最早由Debian社区所开发,适用于Debian家族的发行版,B2D,Ubuntu等;
6.4.1`使用RPM安装软件
[root@localhost ~]# rpm -ivh 软件包名
参数:
-i:安装RPM包
-v:查看安装过程中的详细信息
-h:显示安装、升级、卸载的进度
-U:升级RPM包
-F:升级本机已安装的组件

全称为 Yellow dog Updater, Modified是一个基于RPM的前端软件包管理器,其主要特点为:
从指定服务器自动下载RPM包并且安装
自动处理包依赖关系
引入仓库和容器的概念
6.5 YUM

使用YUM主要包括使用YUM查询软件版本、信息和通过YUM进行软件的更新、维护。
YUM采用分段配置的方式,即主配置+分段配置
CentOS 7下主配置文件为/etc/yum.conf
CentOS 7下分段配置文件为/etc/yum.repos.d/*.repo

6.5.2yum的使用

使用方法一:查询
[root@localhost ~]# yum [list|info|search|provides] 参数
范例
#列出所有已安装的软件
[root@localhost ~]# yum list
#查询某类或某个软件的详细信息
[root@localhost ~]# yum info raid
使用方法二:安装、升级、卸载
[root@localhost ~]# yum [install|update|remove] 参数
范例
#安装名称为pam-devel的软件
[root@localhost ~]# yum install pam-devel
#更新Java版本
[root@localhost ~]# yum update java
(3)Linux进程基本原理
6.6fork函数`
fork函数可以启动一个新进程,其方法是复制当前进程。
fork函数在进程表中创建一个新的表项,新表项的许多属性与当前进程是相同的,执行的代码也完全相同;但新进程有自己的数据空间、环境和文件描述符。
基本语法
#include <sys/types.h>#include< <unistd.h>
pid t fork (void)
父进程的fork调用返回的是新的子进程的pid,新子进程继续执行,就像原进程一样;
不同之处在于,子进程中fork调用返回的是0,父子进程就是通过这一点来区分彼此的;
如果fork调用失败将返回-1。
fork操作:复制父进程

6.7exec系列函数

exec系列函数由一组相关的函数组成,用于把当前进程替换为新进程,新进程由path或file参数指定。

6.8system函数system函数:fork-and-exec

(4)Linux进程同步问题
6.9fork函数使用进阶

当用fork启动一个子进程时,子进程就有了其自身的生命周期并将独立运行。
可以通过wait函数,让父进程等待子进程结束后再结束。

6.10僵尸进程
子进程终止时,其与父进程之间的关联还会保持,直到父进程也正常终止或父进程调用wait()方法才告结束。
因此,进程表中代表子进程的表项不会立即删除(虽然子进程已经不再运行),因为它的退出码还需要保存起来,以备父进程中可能的wait()方法使用。
这样的进程被称为死(defunct)进程或僵尸(zombie)进程

6.11信号机制
信号是由于某些错误条件而生成的,如内存段冲突、浮点处理器错误或非法指令等;
术语生成(raise)表示一个信号的产生,术语捕获(catch)表示接收到一个信号
接收到信号的进程会进行相信的处理,默认情况是立刻终止进程;
信号可以由shell和终端生成,来引起中断;也可以作为进程间传递消息和修改行为的一种方式(明确的由一个进程发送给另一个进程)。
信号机制
信号的名称在头文件signal.h中定义,都以SIG开头,如下表所示:

Linux中使用signal()函数来处理信号

6.12发送信号
调用kill函数向包括本身在内的其他进程发送一个信号,该函数和同名的shell命令功能一样

6.13发送信号
Linux中还提供一个用于定时发送信号的alarm函数和用于挂起进程的pause函数

信号使用范例(该范例通过fork、sleep、signal来模拟alarm函数的功能)

6.14使用alarm函数使编程变简单
功能与作用:alarm()函数的主要功能是设置信号传送闹钟,即用来设置信号SIGALRM在经过参数seconds秒数后发送给目前的进程。如果未设置信号SIGALARM的处理函数,那么alarm()默认处理终止进程。

2引导和服务
(5)init机制
7.1Linux系统的启动过程为:
BIOS:硬件启动(EFI)
MBR:Master Boot Record(GPT)
GRUB:操作系统引导程序

加载内核
init:第一个进程(systemd)
runlevel:相关应用程序(target)
7.2BIOS
BIOS:Basic Input Output System,基本输入输出系统
POST:Power-On Self-Test,通电/硬件自检
初始化:读取CMOS中的设置进行初始化
引导:根据CMOS设置寻找引导程序,并加载到内存
EFI/UEFI:Unified Extensible Firmware Interface,统一可扩展固件接口
7.3MBR:主引导记录
主引导记录是装有Linux系统的硬盘的第一个扇区,即C/H/S地址的0柱面0磁头1扇区,也叫做MBR扇区。
7.4GRUB
GRUB是Linux发行版中普遍使用的引导程序,GRUB相关文件保存在/boot/grub目录中,其中主要的配置文件为/boot/grub/grub.conf。
7.5/boot/grub/grub.conf

default:选择哪个启动项 timeout:停留的秒数 splashimage:背景图片 hiddenmenu:隐藏菜单 titil: 一个启动项 root (hd0,0): 操作系统所在硬盘 kernel: 指定内核及相关参数
initrd: 驱动模块
7.6加载内核
加载内核一般是将/boot 目录下的相关内核文件加载到内存中。
7.7 init进程——第一个进程
init进程的主要工作是初始化操作系统,其主要功能包括:
调用/etc/rc.d/rc.sysinit文件对系统进行初始化
挂载文件系统
根据运行级别启动相关守护进程
init进程的流程可以概括为:

7.8守护进程(Daemon)/系统服务
Linux系统中的服务是通过常驻内存的守护进程来实现的
Linux系统启动过程中会加载一系列的守护进程来完成各种功能,提供服务
守护进程一般以d结尾进行命名,如atd、crond、httpd等
守护进程的实现原理有两种方式:
init机制
systemd机制
7.9init机制
init.d守护进程机制是源自Unix的System V版的系统中,大部分Linux发行版和CentOS 7.x以前的版本一直使用该机制进行守护进程的管理和维护。
该机制有以下主要特点:
将守护进程分为三种类型:init进程、独立启动进程(stand alone)和超级守护进程(super daemon)
系统分为7个运行级别,每个级别对应不同的默认启动守护进程
针对三种类型的进程需要不同的管理方式(init、chkconfig和service等)
7.10运行级别(Run Le

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值