Linux 系统信息、权限管理与 Python 并发编程(协程与线程)完全指南

大家好,今天的内容涵盖三个重要领域:Linux 系统信息与网络管理Linux 权限修改 ,以及 Python 中的协程与线程。系统信息查看是服务器运维的基础,权限管理是安全的核心,而并发编程则是提升程序性能的关键手段。本文将逐一讲解,并结合实用示例帮助理解。


一、Linux 系统信息查看

1.1 操作系统信息:uname

uname 用于查看系统内核和操作系统信息。

复制代码
# 查看操作系统名称
uname
# Linux

# 查看详细系统信息
uname -a
# Linux hostname 5.15.0-91-generic #101-Ubuntu SMP ...

1.2 CPU 信息:lscpu

lscpu 显示 CPU 架构的详细信息。

复制代码
lscpu

输出解读

字段 说明
Architecture 架构类型(x86_64、aarch64 等)
CPU(s) 逻辑 CPU 核心数
Thread(s) per core 每核心线程数(超线程)
Core(s) per socket 每颗物理 CPU 的核心数
Model name CPU 型号
CPU MHz 当前主频

1.3 内存信息:free -h

free 显示内存使用情况,-h 以人类可读格式显示。

复制代码
free -h

输出解读

字段 说明
total 总内存
used 已使用内存
free 空闲内存
shared 共享内存
buff/cache 缓冲区/缓存占用
available 可用内存

1.4 磁盘信息:df -h

df(Disk Free)显示磁盘分区使用情况,-h 以人类可读格式显示。

复制代码
df -h

输出解读

字段 说明
Filesystem 文件系统
Size 总大小
Used 已使用
Avail 可用
Use% 使用百分比
Mounted on 挂载点

二、网络信息查看与测试

2.1 查看 IP 地址:ip address / ifconfig

复制代码
# 查看所有网络接口的 IP 地址(新版命令)
ip address
# 简写
ip a

# 查看指定网卡
ip addr show eth0

# 旧版命令(可能需要安装 net-tools)
ifconfig

2.2 测试网络连通性:ping

ping 用于测试与目标主机的网络连通性。

复制代码
# 测试与百度的连通性
ping baidu.com

# 指定发送次数
ping -c 4 baidu.com

# 指定间隔时间(秒)
ping -i 2 baidu.com

2.3 查看网络端口与连接状态:netstat / ss

复制代码
# 查看所有监听端口(新版推荐)
ss -tuln

# 查看所有监听端口(旧版)
netstat -tuln

# 查看所有 TCP 连接
ss -tan

# 查看所有 UDP 连接
ss -uan
选项 说明
-t TCP 端口
-u UDP 端口
-l 仅显示监听状态
-n 显示数字地址和端口(不解析域名)
-a 显示所有连接

2.4 文件下载:wget

wget 是一个强大的命令行下载工具。

复制代码
# 基本下载
wget https://example.com/file.zip

2.5 HTTP 请求工具:curl

curl 是一个功能强大的 HTTP 请求工具,常用于 API 测试。

复制代码
# GET 请求
curl https://api.github.com/users/octocat

# 下载文件
curl -O https://example.com/file.zip

三、Linux 权限管理

3.1 权限的基本概念

Linux 中每个文件/目录都有三组权限:

权限位 说明
r 读(read)
w 写(write)
x 执行(execute)

三组权限分别对应:

角色 说明
u 文件所有者(user)
g 用户组(group)
o 其他用户(other)
复制代码
ls -l file.txt
# -rw-r--r-- 1 user group 1024 Aug 19 10:00 file.txt
# 第一个字符:- 文件,d 目录
# 接着三位:所有者权限(rw-)
# 接着三位:组权限(r--)
# 接着三位:其他用户权限(r--)

3.2 修改权限:chmod

chmod(Change Mode)用于修改文件或目录的权限。

数字方式

数字 权限
4 读(r)
2 写(w)
1 执行(x)
复制代码
# 所有者:读写执行(4+2+1=7)
# 组:读执行(4+1=5)
# 其他:读(4)
chmod 754 file.txt

# 所有者:读写(6),组:读(4),其他:读(4)
chmod 644 file.txt

# 所有用户:读写执行(777)
chmod 777 file.txt

符号方式

复制代码
# 为所有者添加执行权限
chmod u+x file.sh

# 为组和其他用户移除写权限
chmod go-w file.txt

# 为所有用户添加读权限
chmod a+r file.txt

# 递归修改目录权限
chmod -R 755 myfolder/

四、Python 中的协程

4.1 什么是协程

协程(Coroutine)是一种用户态的轻量级线程 ,由程序自身控制调度,不需要操作系统参与上下文切换。协程适合 I/O 密集型 任务,如网络请求、文件读写、数据库操作等。

协程的特点

特点 说明
轻量级 一个线程可运行数万个协程
非抢占式 协程主动让出控制权(await
单线程 无需考虑线程安全问题
高效 I/O 等待时切换执行其他任务

4.2 基础语法

python 复制代码
import asyncio

# 定义协程
async def hello():
    print("开始")
    await asyncio.sleep(1)   # 模拟 I/O 操作
    print("结束")

# 运行协程
asyncio.run(hello())

4.3 并发执行多个协程

python 复制代码
import asyncio
import time

async def task(name: str, delay: int):
    print(f"任务 {name} 开始")
    await asyncio.sleep(delay)
    print(f"任务 {name} 完成")
    return f"{name} 的结果"

async def main():
    start = time.time()
    
    # 并发执行多个协程
    results = await asyncio.gather(
        task("A", 3),
        task("B", 2),
        task("C", 1)
    )
    
    print(f"结果: {results}")
    print(f"总耗时: {time.time() - start:.2f}秒")

asyncio.run(main())
# 输出:总耗时约 3 秒(而不是 3+2+1=6 秒)

五、Python 中的线程

5.1 什么是线程

线程是操作系统调度的最小单位,属于系统级并发 。Python 的线程适用于 I/O 密集型 任务,但由于 GIL(全局解释器锁)的存在,不适合 CPU 密集型 任务。

python 复制代码
import threading
import time

def worker(name: str, delay: int):
    print(f"线程 {name} 开始")
    time.sleep(delay)
    print(f"线程 {name} 完成")

# 创建并启动线程
t1 = threading.Thread(target=worker, args=("A", 2))
t2 = threading.Thread(target=worker, args=("B", 3))

t1.start()
t2.start()

# 等待线程完成
t1.join()
t2.join()
print("所有线程完成")

5.2 线程安全与锁

多线程访问共享资源时,需要使用锁避免数据竞争。

python 复制代码
import threading

counter = 0
lock = threading.Lock()

def increment():
    global counter
    for _ in range(100000):
        with lock:          # 加锁
            counter += 1

threads = [threading.Thread(target=increment) for _ in range(10)]

for t in threads:
    t.start()
for t in threads:
    t.join()

print(f"计数器: {counter}")  # 1000000

六、协程 vs 线程

对比项 协程 线程
调度方式 用户态(程序自己控制) 内核态(操作系统调度)
切换开销 极小(微秒级) 较大(毫秒级)
数量上限 数万甚至数十万 通常数百到数千
适用场景 I/O 密集型、高并发网络 I/O 密集型、阻塞操作
CPU 密集型 不适合 不适合(受 GIL 限制)
语法复杂度 async/await threading

选择建议

复制代码
# 网络请求、Web API → 协程

# 文件 I/O、数据库操作 → 协程或线程

七、总结

分类 核心命令/概念
系统信息 unamelscpufree -hdf -h
网络工具 ip addresspingssnetstatwgetcurl
权限管理 chmodchownchgrp
Python 协程 asyncawaitasyncio.gather()asyncio.run()
Python 线程 threadingThreadPoolExecutorLock
并发选择 I/O 密集型用协程/线程,CPU 密集型用多进程

系统信息查看和权限管理是 Linux 运维的基础技能,Python 并发编程则是提升程序性能的核心手段。协程轻量高效,适合高并发网络请求;线程适合阻塞型 I/O 操作。根据场景选择合适的并发方式,可以显著提升程序的执行效率。

如果觉得这篇内容对你有帮助,欢迎收藏备用。

相关推荐
曲无忆1 小时前
密码学三大核心技术解析
python·密码学
2301_800954991 小时前
Linux 常用系统信息与进程管理命令速查
linux·运维·服务器
qq21084629531 小时前
在python中什么是 self 和 cls?
开发语言·前端·python
nanawinona1 小时前
2026年手工思路量化后,工具重点会怎样变化
人工智能·python
今天AI了吗2 小时前
从聊天到委派:AI Agent 如何推进长期任务
数据库·人工智能·python·sql·rust
傻啦嘿哟2 小时前
王者荣耀爬虫:爬取全英雄皮肤数据,用Python做可视化分析
开发语言·爬虫·python
T型码农要学习2 小时前
eMMC_命令整理
linux·驱动开发·emmc
徒慕风流2 小时前
激光雷达回波信号滤波与时刻鉴别算法:原理、代码实现与仿真验证
python·算法·激光雷达