### Linux实践知识点详解 #### 1. 创建与管理用户账户 - **命令**: 使用`adduser`命令可以创建一个新的用户账户。例如,在本例中,我们创建了一个名为`zhang`的新用户。 - `# adduser zhang`: 这条命令会提示你设置新用户的密码、提供额外的信息等。 - **设置密码**: 创建完用户后,可以使用`passwd`命令为用户设置密码。 - `# passwd zhang`: 运行这条命令后,系统会提示你输入新密码。 - **用户切换**: 在Linux中,你可以使用`su`命令从一个用户切换到另一个用户。 - `# su zhang`: 如果当前用户是`root`,那么切换到普通用户时通常不需要密码。 - `# su`: 不带参数的`su`命令通常用于从普通用户切换到`root`。 #### 2. 修改启动模式 - **文件路径**: `/etc/inittab`文件用于配置系统的启动模式。 - **修改方法**: 若要让系统下次启动时进入字符界面,可以找到`id:5:initdefault:`这一行,并将其修改为`id:3:initdefault:`,这样系统就会默认进入字符界面。若希望进入图形界面,则保留原样即可。 - **命令**: `startx`命令用于启动X Window图形界面。 #### 3. 关闭或重启系统 - **命令**: - `# halt`: 立即关闭系统。 - `# reboot`: 重启系统。 #### 4. 配置网络连接与SSH访问 - **配置IP地址**: - `# ifconfig eth0 192.168.0.11`: 将网卡`eth0`的IP地址设置为`192.168.0.11`。 - **启动SSH服务**: 确保`sshd`服务已启动。可以通过`ps –ef | grep ssh`检查。 - **远程登录**: - 使用SSH客户端(如PuTTY)连接至`192.168.0.11`。 #### 5. 目录概述 - **根目录**: - `root`的主目录为`/root`。 - 用户`zhang`的主目录通常为`/home/zhang`。 - 内核源代码通常位于`/usr/src/linux-版本号`目录下。 - **重要目录说明**: - `/bin`: 存放常用命令的二进制文件。 - `/dev`: 设备文件所在位置。 - `/home`: 用户家目录。 - `/etc`: 系统配置文件。 - `/mnt`: 临时挂载点。 - `/proc`: 虚拟文件系统,包含运行中的进程信息。 #### 6. 系统调用与进程控制 - **`fork()`函数**: - 父进程: 返回子进程的进程ID。 - 子进程: 返回0。 - **进程控制块(PCB)**: PCB数据结构存储在内核源代码的`/usr/src/linux-2.4/include/linux/sched.h`文件中。关键结构包括: - `struct task_struct`: 进程控制块的核心结构。 - `struct files_struct`: 描述进程打开的文件。 - `struct signal_struct`: 处理进程接收的信号。 #### 7. Shell的功能与类型 - **基本功能**: - 命令解释器。 - 脚本编程环境。 - 进程管理工具。 - **常见Shell**: - `bash`: 最常见的Shell。 - `sh`: 早期的Shell。 - `zsh`: 功能强大且高度可定制。 #### 8. Shell命令与重定向 - **命令重定向**: - `cd > dir`: 将当前目录的路径重定向到`dir`文件中。 - `ls | wc -l`: 统计当前目录下文件的数量。 - **后台运行**: - `gcc -o test test.c &`: 编译`test.c`并将其输出到`test`可执行文件,同时在后台运行编译过程。 #### 9. Shell脚本编写 - **示例脚本**: ```bash #!/bin/bash echo "参数数量: $#" for arg in "$@" do echo "参数: $arg" done ``` #### 10. U盘挂载与卸载 - **挂载步骤**: - 查找U盘设备名: `# /sbin/fdisk -l` - 创建挂载点: `# mkdir /mnt/usb` - 挂载U盘: `# mount /dev/sdb1 /mnt/usb` - 卸载U盘: `# umount /mnt/usb` #### 11. 双系统环境下Windows分区挂载 - **挂载Windows分区**: - `# mount -t vfat /dev/sda2 /mnt/windows`: 假设Windows分区为`/dev/sda2`,将其挂载到`/mnt/windows`目录下。 #### 12. 名词解释与命令解析 - **POSIX**: 一组标准,定义了操作系统的行为和接口。 - **GNU**: 自由软件基金会发起的一个项目,旨在开发一个完全自由的操作系统。 - **VFS**: 虚拟文件系统,Linux中用于抽象不同文件系统类型的接口。 - **`cut`命令**: 用于从文件中切割字段或字节。 - `cut -d: -f1 /etc/passwd`: 从`/etc/passwd`文件中提取第一列(用户名)。 - **管道通信**: - **无名管道**: 仅限于父子进程间通信。 - **有名管道(fifo)**: 允许没有亲缘关系的进程进行通信。 #### 13. 示例程序与进程管理 - **示例C程序**: ```c #include <sys/types.h> #include <unistd.h> int main() { pid_t pid; printf("PID before fork(): %d\n", (int)getpid()); pid = fork(); if (pid < 0) { printf("Error in fork!\n"); } else if (pid == 0) { printf("I am the child process, my process ID is %d\n", getpid()); } else { printf("I am the parent process, my process ID is %d\n", getpid()); } return 0; } ``` 此程序演示了如何使用`fork()`函数创建子进程,并打印出父进程和子进程的PID。
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助