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 操作。根据场景选择合适的并发方式,可以显著提升程序的执行效率。

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

相关推荐
新时代牛马8 小时前
嵌入式 Linux 蓝牙框架完整篇:从 HCI、L2CAP 到BlueZ 用户态
linux·运维·服务器
用户938515635078 小时前
Text2SQL 实战:用 DeepSeek 大模型实现自然语言查询 SQLite 数据库
python·sqlite
2601_962099688 小时前
Python环境下中文分词实现与应用探索
python·自然语言处理·中文分词·jieba·开源社区
2601_966949658 小时前
批量获取多只股票五档盘口的极简方案:QuantDash Python SDK 实战指南
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
用户019027581618 小时前
如何用 Python 监控 A 股涨停跌停与封板/炸板?
python
Brilliantwxx8 小时前
【STM32】 初认识USART串口
linux·stm32·单片机·嵌入式硬件·架构
aningx9 小时前
使用自定义bash脚本预防oom卡死
linux
Lyra_Infra9 小时前
云效主机部署场景下 Python 服务生命周期问题复盘
后端·python
ONLYOFFICE9 小时前
ONLYOFFICE成为Linux操作系统 – Winux的预装办公套件
linux·运维·服务器
刀鋒偏冷9 小时前
CentOS 7 配置 Python 3.12.4 + RTX 4090 深度学习环境全记录
python·深度学习·centos