目录
1、基础
什么是linux
linux是一套免费使用和自由传播的类unix操作系统,是一个基于posix和unix的多用户,多任务,支持多线程和多cpu的操作系统
linux与Unix的区别
可以浅显的认为Unix是linux的父亲,但是具有以下区别
- UNIX系统大多是与硬件配套的,是无法安装在个人计算机上面的,属于商业软件
- linux是开源的,免费、公开源代码的。Linux具有UNIX的全部功能
linux与windows的不同
- Linux是开源操作系统,而windos是商业操作系统
- linux有权访问源代码并且根据用户需要更改代码,而windows则无权访问源代码。
- linux系统使用linux内核,windows使用NT内核
- linux命令行区分大小写,windows是在dos界面不区分大小写
Linux的基本组件
内核,shell和GUI,系统实用程序和应用程序
Linux 的体系结构
内核:负责管理计算机的硬件资源、提供系统调用接口、调度进程和管理内存等重要功能
shell:是用户与Linux内核中的接口程序
应用程序:运行在用户的程序空间中的程序,例如:文本编辑器、网页浏览器和邮件客户端等
文件系统:是用于管理文件和目录的一种机制,用于在存储设备上组织、存储和管理数据。它通过树状结构来组织文件和目录,使用户能够方便地存储、检索和管理数据
网络协议栈:用于处理网络通信的一系列协议和机制的集合
设备驱动程序:是操作系统与硬件设备的桥梁
BASH和shell的区别
BASH(Bourne-Again SHell)是一种广泛使用的Unix shell和命令语言解释器。
Shell是一个命令行解释器,它为用户提供了与操作系统交互的接口。(是一种c语言编写的程序)
Linux系统缺省的运行级别
- 运行级别3:多用户模式,不带图形界面。在这个级别下,系统启动所有多用户环境下的服务和守护进程,但不启动X Window系统(图形界面)。这对于不需要图形界面的服务器环境非常常见。
- 运行级别5:多用户模式,带图形界面。除了启动多用户环境所需的服务外,还会启动一个图形显示管理器(如GDM、LightDM等),允许用户通过图形界面登录。
但是:
- multi-user.target:相当于传统运行级别3,提供多用户命令行环境。
- graphical.target:相当于传统运行级别5,提供图形化登录界面。
Linux 使用的进程间通信方式
-
管道(Pipe)
-
无名管道:用于具有亲缘关系的进程之间的通信,数据只能单向流动。通过
pipe()
函数创建。 -
有名管道(FIFO):允许无亲缘关系的进程进行通信,通过命令
mkfifo
或函数mkfifo()
创建。
-
-
消息队列(Message Queue)
-
由消息的链表构成,存放在内核中,每个消息包含一个类型和一个消息体。适用于频繁通信的场景,但存在消息大小限制。
-
-
信号量(Semaphore)
-
作为一个计数器,控制多个进程对共享资源的访问,常用于进程间的同步。
-
-
共享内存(Shared Memory)
-
多个进程可以访问同一段内存空间,是最快的 IPC 方式,通常与信号量结合使用以实现同步。
-
-
套接字(Socket)
-
可用于不同主机上的进程通信,也适用于本地进程间通信。Linux 下的 Socket 编程模型支持 TCP 和 UDP 协议。
-
-
信号(Signal)
-
用于通知进程某个事件的发生,除了用于进程间通信外,还可以发送信号给进程本身,作为进程间以及同一进程内不同线程之间的同步手段
-
Linux 有哪些系统日志文件
-
/var/log/syslog:传统的通用系统日志文件,记录了系统启动以来发生的所有重要事件。这个文件通常包含来自系统各个部分的消息,包括应用程序、硬件和内核。
-
/var/log/messages:许多现代 Linux 发行版使用的日志文件,汇总了系统范围内的消息,包括错误和警告。它是进行系统监控和故障排除的重要资源。
-
/var/log/auth.log:专注于记录所有与用户认证相关的事件,例如用户的登录尝试、密码更改和使用 sudo 的记录。这个日志对于监控系统安全和检测未授权访问至关重要。
-
/var/log/boot.log:记录了系统启动过程中的所有消息。当系统启动失败或服务无法正常加载时,这个日志文件提供了诊断问题的线索。
-
/var/log/kern.log:专门用于记录来自 Linux 内核的消息。这些消息可能涉及硬件错误、驱动程序问题或其他与内核相关的事件。
-
/var/log/dmesg:存储了内核环缓冲区的日志信息。这些信息通常在系统启动时生成,可以通过
dmesg
命令查看,对于理解系统启动过程中的硬件交互非常有用。 -
/var/log/daemon.log:记录了系统后台守护进程的日志信息。这些守护进程负责执行各种后台任务,如网络服务和系统监控。
-
/var/log/cron.log:记录了 cron 守护进程的日志,包括计划任务的执行情况。这对于确保定时任务按预期执行和监控任务执行结果非常重要。
-
/var/log/mail.log:记录了邮件服务器的日志信息,包括邮件的发送和接收。这个日志对于监控邮件服务的运行状态和性能至关重要。
-
/var/log/faillog:记录了失败的登录尝试,这对于检测潜在的安全威胁和加强系统安全非常有用。
-
/var/log/lastlog:记录了系统中每个用户的最后一次登录信息,包括登录时间和 IP 地址。使用
lastlog
命令可以查看这些信息。 -
/var/log/btmp:记录了失败的登录尝试的详细信息。这个二进制文件需要特定的工具来解析,如
lastb
命令。 -
/var/log/wtmp:记录了所有用户的登录和注销信息。使用
last
命令可以查看这些信息,这对于审计用户活动和监控系统访问非常有帮助
什么是交换空间
交换空间(Swap Space)是Linux系统中用于扩展物理内存的一种机制,当系统的RAM使用量达到其最大容量时,Linux内核会使用交换空间来临时存储那些暂时不活跃的进程,从而为其他进程腾出内存空间。
-
工作原理
- 内存管理:Linux内核会监控内存使用情况,并在需要时将数据从内存移动到交换空间。
- 页面置换:当系统内存不足时,内核会根据页面置换算法(如LRU - 最近最少使用)将某些页面从内存移动到交换空间。
- 性能影响:使用交换空间可能会影响系统性能,因为磁盘I/O速度通常比内存访问速度慢得多。
-
类型
- 交换分区:在磁盘上预留的一段空间,专门用于交换目的。
- 交换文件:一个特殊的文件,其内容被初始化为零,也可以作为交换空间使用。
-
查看与调整方法
- 查看交换空间:可以使用
free -m
或swapon --show
命令查看交换空间的总量和已使用量。 - 创建交换文件:可以通过一系列命令(如
fallocate
,chmod
,mkswap
,swapon
)创建一个交换文件,并启用它。 - 调整交换分区:如果需要,可以使用
fdisk
或parted
工具调整交换分区的大小。
- 查看交换空间:可以使用
-
注意事项
- 不过度依赖:虽然交换空间可以作为物理内存的补充,但过度依赖交换空间可能会导致系统性能下降。
- 定期监控:定期监控交换空间的使用情况,确保系统不会因为交换空间不足而出现问题。
- 合理配置大小:根据系统的实际需求和物理内存大小来配置交换空间的大小
什么是root帐户
root账户是Linux系统中的超级用户账户,拥有系统上的所有权限。具体又如下:
- 超级用户权限:root账户拥有读取、写入、执行和删除任何文件或目录的能力,可以修改系统设置、安装软件、管理用户帐户等。
- 安全性考虑:由于root账户具有极高的权限,使用它时必须格外小心。错误地执行一个命令可能会导致系统不稳定、数据丢失或其他严重问题。
- 登录方式:在大多数Linux发行版中,可以通过在登录界面输入root作为用户名和密码来以root身份登录。但通常不推荐这样做,因为这会暴露root密码并增加安全风险。更常见的做法是使用普通用户帐户登录,并在需要时通过sudo命令请求root权限。
- 用户账户管理:root账户可以创建、修改和删除系统上的其他用户帐户,还可以为用户分配特定的权限和访问级别。
- 系统维护:在执行系统维护任务(如更新软件包、安装新内核、配置网络设置等)时,通常需要root权限。
- 日志和审计:root账户的活动通常会被记录在系统日志中,以便进行审计和监控。这有助于检测潜在的安全威胁、未经授权的访问或其他问题。