linux环境基础
发布人:shili8
发布时间:2024-11-08 00:37
阅读次数:0
**Linux 环境基础**
Linux 是一种开放源码的操作系统,最初由林纳斯·本纳德斯(Linus Torvalds)在1991 年开发。它基于 Unix 的设计理念,并且具有高度可定制化和灵活性。Linux 在计算机领域广泛应用于服务器、工作站、嵌入式设备等多种场景。
**1. Linux 环境的基本概念**
###1.1 运行级别Linux 有七个运行级别,每个级别代表不同的系统状态:
* **0:单用户模式**,用于系统维护和故障排除。
* **1:单用户模式(多用户)**,允许一个用户登录,但不允许网络访问。
* **2:多用户模式(多用户)**,允许多个用户登录,并且可以使用网络服务。
* **3:多用户模式(多用户)**,与级别2 相同,但提供了更多的服务和功能。
* **4:系统模式**,用于系统维护和故障排除。
* **5:图形模式**,提供一个图形界面供用户登录和使用。
* **6:重启模式**,用于系统重启。
###1.2 shellshell 是 Linux 的命令行接口,它允许用户通过输入命令来控制系统。常见的 shell 有 Bash、Zsh、Fish 等。
####例子:
bash# 使用 Bash shell$ bash --versionGNU bash, version5.0.17(1)-release (x86_64-pc-linux-gnu) # 使用 Zsh shell$ zsh --versionzsh5.8 (x86_64-unknown-linux-gnu)
###1.3 文件系统Linux 的文件系统基于 Unix 的设计理念,使用一个树状结构来组织文件和目录。每个文件或目录都有一个唯一的路径名。
####例子:
bash# 创建一个新目录$ mkdir mydir# 列出当前目录下的文件和目录$ lsmydir# 进入新创建的目录$ cd mydir# 在新目录下创建一个新文件$ touch myfile.txt
###1.4 权限控制Linux 使用权限控制来限制用户对系统资源的访问。每个文件或目录都有三个属性:所有者、组和其他人。
####例子:
bash# 列出当前目录下的文件和目录,并显示其权限$ ls -l总用量0drwxr-xr-x.2 user user40962023-02-2014:30 mydir# 修改一个文件的所有者$ chown user myfile.txt
###1.5 进程管理Linux 使用进程来执行任务,每个进程都有自己的 ID、父进程 ID 和状态。
####例子:
bash# 列出当前系统下的所有进程$ ps -ef# 杀死一个进程$ kill1234
###1.6 网络配置Linux 使用网络协议栈来管理网络通信,每个网络接口都有自己的 IP 地址、子网掩码和默认网关。
####例子:
bash# 列出当前系统下的所有网络接口$ ip addr show# 配置一个新网络接口$ ip addr add192.168.1.100/24 dev eth0
###1.7 系统日志Linux 使用系统日志来记录系统事件,每个日志条目都有自己的时间戳、优先级和内容。
####例子:
bash# 列出当前系统下的所有系统日志$ journalctl -u systemd# 配置一个新系统日志$ logger "Hello, world!"
**2. Linux 环境的高级概念**
###2.1 内存管理Linux 使用内存管理来分配和释放内存,每个进程都有自己的虚拟地址空间。
####例子:
c#include <stdio.h> #include <stdlib.h> int main() { int* ptr = malloc(1024); if (ptr == NULL) { printf("Memory allocation failed "); return -1; } free(ptr); return0; }
###2.2 文件系统缓存Linux 使用文件系统缓存来缓存最近访问的文件数据,每个进程都有自己的缓存。
####例子:
c#include <stdio.h> #include <stdlib.h> int main() { char* buf = malloc(1024); if (buf == NULL) { printf("Memory allocation failed "); return -1; } // 使用缓存 free(buf); return0; }
###2.3 网络协议栈Linux 使用网络协议栈来管理网络通信,每个网络接口都有自己的 IP 地址、子网掩码和默认网关。
####例子:
c#include <stdio.h> #include <stdlib.h> int main() { // 配置网络接口 struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(8080); inet_pton(AF_INET, "192.168.1.100", &addr.sin_addr); return0; }
###2.4 系统日志Linux 使用系统日志来记录系统事件,每个日志条目都有自己的时间戳、优先级和内容。
####例子:
c#include <stdio.h> #include <stdlib.h> int main() { // 写入系统日志 syslog(LOG_INFO, "Hello, world!"); return0; }
**3. Linux 环境的安全性**
###3.1 权限控制Linux 使用权限控制来限制用户对系统资源的访问,每个文件或目录都有三个属性:所有者、组和其他人。
####例子:
bash# 列出当前目录下的文件和目录,并显示其权限$ ls -l总用量0drwxr-xr-x.2 user user40962023-02-2014:30 mydir# 修改一个文件的所有者$ chown user myfile.txt
###3.2 访问控制列表(ACL)
Linux 使用访问控制列表(ACL)来限制用户对系统资源的访问,每个文件或目录都有自己的 ACL。
####例子:
bash# 列出当前目录下的文件和目录,并显示其 ACL$ getfacl mydir# 修改一个文件的 ACL$ setfacl -m user:myuser:rwx mydir
###3.3 系统日志Linux 使用系统日志来记录系统事件,每个日志条目都有自己的时间戳、优先级和内容。
####例子:
bash# 列出当前系统下的所有系统日志$ journalctl -u systemd# 配置一个新系统日志$ logger "Hello, world!"
###3.4 系统安全性Linux 使用系统安全性来保护系统免受恶意攻击,每个进程都有自己的安全设置。
####例子:
c#include <stdio.h> #include <stdlib.h> int main() { // 配置系统安全性 setuid(0); return0; }
**4. Linux 环境的高级特性**
###4.1 内存管理Linux 使用内存管理来分配和释放内存,每个进程都有自己的虚拟地址空间。
####例子:
c#include <stdio.h> #include <stdlib.h> int main() { int* ptr = malloc(1024); if (ptr == NULL) { printf("Memory allocation failed "); return -1; } free(ptr); return0; }
###4.2 文件系统缓存Linux 使用文件系统缓存来缓存最近访问的文件数据,每个进程都有自己的缓存。
####例子:
c#include <stdio.h> #include <stdlib.h> int main() { char* buf = malloc(1024); if (buf == NULL) { printf("Memory allocation failed "); return -1; } // 使用缓存 free(buf); return0; }
###4.3 网络协议栈Linux 使用网络协议栈来管理网络通信,每个网络接口都有自己的 IP 地址、子网掩码和默认网关。
####例子:
c#include <stdio.h> #include <stdlib.h> int main() { // 配置网络接口 struct sockaddr_in addr; addr.sin_family = AF_INET;