Linux操作系统:开源世界的强大引擎(中)

简介: Linux操作系统:开源世界的强大引擎

2.4 硬链接和软链接


在Linux中,链接是一种将一个文件或目录关联到另一个位置的方式。硬链接是指两个或多个文件名指向同一个物理文件,删除任意一个链接都不会影响文件本身。而软链接是一种特殊类型的文件,它包含了另一个文件或目录的路径信息,删除原始文件或目录会导致软链接失效。


示例:

# 创建一个硬链接
ln /home/user/file1.txt /home/user/link1
# 创建一个软链接
ln -s /home/user/dir1 /home/user/link2
# 删除原始文件并查看硬链接和软链接的情况
rm /home/user/file1.txt
ls -l /home/user/link1
ls -l /home/user/link2


2.5 挂载和卸载


挂载是指将一个磁盘或分区与文件系统的某个目录关联起来,以便用户可以访问该磁盘或分区中的数据。卸载则是取消这种关联。


示例:

# 挂载一个磁盘或分区
sudo mount /dev/sdb1 /mnt/data
# 查看已经挂载的文件系统列表
df -h
# 卸载一个磁盘或分区
sudo umount /mnt/data


2.6 磁盘分区和格式化


在Linux中,可以使用一些工具来对硬盘进行分区和格式化,例如fdisk、parted、gparted等。分区可以将一个物理硬盘划分为多个逻辑分区,每个分区都可以被格式化为一个文件系统以便于存储数据。


示例:

使用fdisk对硬盘进行分区和格式化的示例:
# 列出所有可用的硬盘
sudo fdisk -l
# 对/dev/sdb进行分区,创建一个主分区
sudo fdisk /dev/sdb
n                      # 创建新分区
p                      # 主分区
1                      # 分区号为1
<Enter>                # 默认起始扇区
<Enter>                # 默认结束扇区
w                      # 保存并退出
# 格式化分区为ext4文件系统
sudo mkfs.ext4 /dev/sdb1


在这个示例中,我们对硬盘/dev/sdb进行了分区,并将第一个分区(/dev/sdb1)格式化为了ext4文件系统。然后,可以将该分区挂载到Linux文件系统的某个目录中,以便用户可以使用它来存储数据。


3. 系统管理员工具:


例如添加/删除用户、设置文件系统权限、修改系统配置、安装软件包等。


3.1 添加/删除用户


在Linux系统中,可以使用一些命令和工具来添加或删除用户,并设置其密码、所属组等信息。常用的命令包括useradd、userdel、passwd等。


示例:

# 创建一个名为user1的新用户
sudo useradd -m user1
# 设置user1的密码
sudo passwd user1
# 删除user1用户
sudo userdel -r user1


在上述示例中,我们使用了useradd命令创建了一个名为user1的用户,并通过passwd命令设置了用户的密码。然后,我们使用userdel命令删除了该用户。


3.2 设置文件系统权限


在Linux系统中,每个文件和目录都有一个所有者和一个所属组,并且可以设置不同的访问权限,以控制用户对它们的访问。文件和目录的访问权限通常被分为三个类别:所有者(owner)、所属组(group)和其他人(others)。


可以使用chmod命令来更改文件或目录的权限,也可以使用chown和chgrp命令来更改文件或目录的所有者和所属组。


示例:

# 更改文件或目录的权限
chmod u+r file1.txt            # 给文件所有者增加读取权限
chmod g+w dir1/                # 给目录所属组增加写入权限
chmod o-rx file1.txt           # 去除其他人的读取和执行权限
chmod 644 file1.txt            # 设置文件权限为rw-r--r--
# 更改文件或目录的所有者和所属组
chown user1:group1 file1.txt    # 将文件所有者设置为user1,所属组设置为group1
chgrp group1 dir1/              # 将目录所属组设置为group1


3.3 修改系统配置


Linux系统中有许多配置文件,用于控制各种系统设置。可以使用文本编辑器(如vi、nano等)来编辑这些配置文件,并更改系统配置。


示例:

# 编辑sudoers配置文件
sudo visudo
# 编辑sshd配置文件
sudo vi /etc/ssh/sshd_config


在上述示例中,我们使用visudo命令打开sudoers配置文件并编辑它,以便修改特定用户的sudo权限。也可以使用vi命令编辑/etc/ssh/sshd_config配置文件,以更改SSH服务器的配置选项。


3.4 安装软件包


在Linux系统中,可以使用不同的包管理器来安装、更新、卸载软件包。常见的包管理器包括yum、apt-get、dnf等。


示例:

# 使用yum包管理器安装Apache Web服务器
sudo yum install httpd
# 使用apt-get包管理器安装MySQL数据库
sudo apt-get install mysql-server
# 使用dnf包管理器安装Node.js运行时环境
sudo dnf install nodejs


在上述示例中,我们使用不同的包管理器来安装了一些常用的软件包,例如Apache Web服务器、MySQL数据库和Node.js运行时环境。这些工具可以使系统管理员更方便地管理和维护Linux系统,提高了系统的安全性和效率。


4. 网络管理:


包括基本的网络设置、防火墙配置、IP地址分配、路由表设置等。


4.1 基本的网络设置


在Linux系统中,可以使用ifconfig和ip命令来配置网络接口、IP地址、子网掩码、网关等信息。此外,也可以使用网络管理工具(如nmcli、nmtui等)来简化这些操作。


示例:

# 显示所有网络接口的状态
sudo ifconfig -a
# 配置eth0网络接口的IP地址和子网掩码
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0
# 配置默认网关
sudo route add default gw 192.168.1.1


在上述示例中,我们使用ifconfig命令来配置eth0网络接口的IP地址和子网掩码,并使用route命令添加了默认网关。这些命令可以帮助我们快速地进行网络设置。


4.2 防火墙配置


防火墙是保护网络安全的重要组成部分,可以通过阻止不必要的流量来防止攻击。在Linux系统中,可以使用iptables和firewalld等工具来配置防火墙规则。


示例:

# 允许所有流量通过
sudo iptables -P INPUT ACCEPT
sudo iptables -P FORWARD ACCEPT
sudo iptables -P OUTPUT ACCEPT
# 禁止所有流量通过
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT DROP
# 允许SSH流量通过
sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT


在上述示例中,我们使用iptables命令设置了一些常见的防火墙规则。第一个示例允许所有流量通过,第二个示例禁止所有流量通过。第三个示例允许SSH流量通过。


4.3 IP地址分配


IP地址是网络通信的基础,可以使用不同的方法进行分配,例如静态IP地址分配和动态IP地址分配。静态IP地址需要手动配置,而动态IP地址由DHCP服务器自动分配。


示例:

# 配置静态IP地址
sudo vi /etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
# 配置动态IP地址
sudo vi /etc/network/interfaces
auto eth0
iface eth0 inet dhcp


在上述示例中,我们使用/etc/network/interfaces文件来配置eth0网络接口的IP地址分配方式。第一个示例配置了静态IP地址,第二个示例配置了动态IP地址。


4.4 路由表设置


路由表用于决定数据包从源主机到目标主机的路由路径。在Linux系统中,可以使用route和ip命令来设置路由表。


示例:

# 显示当前的路由表
sudo route -n
# 添加一个新的路由
sudo route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.1.1
# 删除一个路由
sudo route del -net 10.0.0.0 netmask 255.0.0.0


在上述示例中,我们使用route命令来添加和删除路由。第一个示例显示了当前的路由表。第二个示例添加了一个新的路由,将所有目标IP地址为10.0.0.0/8的数据包发送到192.168.1.1网关。第三个示例删除了这个路由。


5. Shell脚本编程:


可以编写自动化脚本来完成任务。

Shell脚本编程是Linux系统管理员必须掌握的技能之一,可以使用Shell脚本编写自动化任务,并提高工作效率。


5.1 概念


Shell脚本是一种文本文件,其中包含了一系列的Shell命令和操作,以完成特定的任务。Shell脚本通常使用Bash、KornShell等Shell解释器来解释执行。


Shell脚本编程的基本概念包括:


  • 变量:用于存储数据的容器。
  • 命令:用于执行操作的程序。
  • 条件语句:用于根据条件来执行不同的操作。
  • 循环结构:用于重复执行相同的操作。
  • 函数:用于封装一段代码,并且可以在其他地方调用。


5.2 代码详解


以下示例展示了一个简单的Shell脚本,用于统计指定目录下的文件数和目录数,并将结果输出到屏幕上。


/

#!/bin/bash
# 统计指定目录下的文件数和目录数
dir=$1
file_count=0
dir_count=0
for item in $dir/*; do
    if [ -f $item ]; then
        file_count=$((file_count + 1))
    elif [ -d $item ]; then
        dir_count=$((dir_count + 1))
    fi
done
echo "文件数:$file_count"
echo "目录数:$dir_count"

在这个示例中,我们使用了Bash解释器,以及一些基本的Shell编程概念。首先,我们定义了一个变量dir,用于存储要统计的目录路径。然后,我们使用for循环遍历该目录下的所有文件和目录,并使用if语句判断当前项是文件还是目录,并分别进行文件计数和目录计数。最后,我们使用echo命令将结果输出到屏幕上。


可以通过以下方式运行这个脚本:

chmod +x count_files.sh       # 添加可执行权限
./count_files.sh /path/to/dir # 运行脚本,指定要统计的目录路径

在上述示例中,我们首先使用chmod命令添加了脚本的可执行权限,然后使用./命令运行了这个脚本,并且指定了要统计的目录路径。运行结果将会输出到屏幕上。


相关文章
|
1天前
|
Linux 开发工具 C语言
【操作系统】实验四 增加Linux系统调用
【操作系统】实验四 增加Linux系统调用
13 1
|
1天前
|
NoSQL Ubuntu Linux
【操作系统】实验三 编译 Linux 内核
【操作系统】实验三 编译 Linux 内核
9 1
|
1天前
|
安全 Linux 网络安全
【操作系统】实验一 Linux操作系统安装
【操作系统】实验一 Linux操作系统安装
9 3
|
1天前
|
存储 Linux 程序员
【操作系统原理】—— Linux内存管理
【操作系统原理】—— Linux内存管理
8 0
|
1天前
|
存储 Shell Linux
操作系统实战(一)(linux+C语言)
本篇文章重点在于利用linux系统的完成操作系统的实验,巩固课堂知识
|
1天前
|
Linux Shell
Linux操作系统下查找大文件或目录的技巧
Linux操作系统下查找大文件或目录的技巧
11 2
|
1天前
|
算法 Ubuntu Linux
为什么Linux不是实时操作系统
本文探讨了Linux为何不是实时操作系统(RTOS)。实时性关乎系统对事件的确定性响应时间,而Linux虽能保证调度执行的实时任务,但无法确保中断响应时间、中断处理时间和任务调度时间的确定性。中断响应时间受中断屏蔽时间影响,Linux中无法确保;中断处理时间因不支持中断嵌套而不确定;任务调度时间虽快,但调度点的限制影响实时性。Linux的定位是通用操作系统,追求平均性能而非绝对实时性。为改善实时性,Linux提供了不同抢占模型,如可抢占内核(Low-Latency Desktop)和PREEMPT-RT补丁,后者接近硬实时但牺牲了吞吐量。PREEMPT-RT正逐渐成为Linux实时增强的标准。
13 1
为什么Linux不是实时操作系统
|
1天前
|
存储 Ubuntu Linux
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
Xenomai是一个实时性解决方案,通过在Linux上添加实时内核Cobalt来增强实时性能。它有三个主要部分:libcobalt(用户空间实时库)、Cobalt(内核空间实时内核)和硬件架构特定层(ipipe-core或dovetail)。ipipe-core适用于Linux 5.4以下版本,而dovetail用于5.4及以上版本。本文介绍了在X86 Ubuntu环境下,如何编译Xenomai内核,搭建应用环境,包括配置、编译、安装和实时性测试。对于其他硬件架构,如ARM和ARM64,步骤类似。文章还提到了Xenomai与Linux内核版本的兼容性和实时性测试结果。
17 0
xenomai3+linux构建linux实时操作系统-基于X86_64和arm
|
1天前
|
Ubuntu Linux Shell
【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战
【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战
74 0
|
1天前
|
Ubuntu Linux Shell
【Linux操作系统】探秘Linux奥秘:用户、组、密码及权限管理的解密与实战
【Linux操作系统】探秘Linux奥秘:用户、组、密码及权限管理的解密与实战
60 0