# 检查Python是否已安装
python3 --version
# 在Ubuntu/Debian上安装Python
sudo apt update
sudo apt install python3 python3-pip python3-venv
# 在CentOS/RHEL上安装Python
sudo yum install python3 python3-pip
# 创建项目目录
mkdir my_script_project && cd my_script_project
# 创建虚拟环境
python3 -m venv venv
# 激活虚拟环境
source venv/bin/activate
# 退出虚拟环境
deactivate
# 安装常用开发工具
pip install ipython black flake8 pylint mypy
# 安装调试工具
pip install pdbpp ipdb
# 安装系统操作相关库
pip install psutil sh requests click rich
# 可选:安装更高级的CLI工具库
pip install typer fire
.
├── bin/ # 可执行脚本
├── lib/ # 项目库代码
├── tests/ # 测试代码
├── docs/ # 文档
├── requirements.txt # 依赖列表
└── setup.py # 安装配置
# 生成当前环境依赖
pip freeze > requirements.txt
# 从requirements.txt安装依赖
pip install -r requirements.txt
#!/usr/bin/env python3
"""
系统脚本基础模板
"""
import os
import sys
import argparse
import logging
from typing import List, Optional
# 配置日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
def main(args: Optional[List[str]] = None) -> int:
"""主函数"""
if args is None:
args = sys.argv[1:]
# 解析参数
parser = argparse.ArgumentParser(description='系统脚本描述')
parser.add_argument('-v', '--verbose', action='store_true', help='详细输出')
# 添加更多参数...
parsed_args = parser.parse_args(args)
if parsed_args.verbose:
logger.setLevel(logging.DEBUG)
try:
# 主逻辑
logger.info("脚本开始执行")
# TODO: 实现脚本功能
logger.info("脚本执行成功")
return 0
except Exception as e:
logger.error(f"脚本执行失败: {str(e)}", exc_info=True)
return 1
if __name__ == '__main__':
sys.exit(main())
import os
import subprocess
import shutil
import psutil
# 执行系统命令
def run_command(cmd: str) -> str:
"""执行系统命令并返回输出"""
try:
result = subprocess.run(
cmd,
shell=True,
check=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True
)
return result.stdout
except subprocess.CalledProcessError as e:
print(f"命令执行失败: {e.stderr}")
raise
# 文件操作
def backup_file(src: str, dst: str) -> None:
"""备份文件"""
if not os.path.exists(src):
raise FileNotFoundError(f"源文件不存在: {src}")
shutil.copy2(src, dst)
# 系统监控
def check_system_health() -> dict:
"""检查系统健康状况"""
return {
'cpu_usage': psutil.cpu_percent(interval=1),
'memory_usage': psutil.virtual_memory().percent,
'disk_usage': psutil.disk_usage('/').percent,
'load_avg': os.getloadavg()
}
# 添加执行权限
chmod +x your_script.py
# 可以直接执行
./your_script.py
# setup.py示例
from setuptools import setup
setup(
name='my_system_scripts',
version='0.1',
scripts=['bin/script1', 'bin/script2'],
install_requires=[
'psutil>=5.0',
'click>=7.0',
],
)
安装到系统:
pip install --user .
import logging
from logging.handlers import RotatingFileHandler
def setup_logging(log_file: str = '/var/log/my_script.log'):
handler = RotatingFileHandler(
log_file,
maxBytes=1024*1024, # 1MB
backupCount=5
)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.addHandler(handler)
创建服务文件 /etc/systemd/system/my_script.service
:
[Unit]
Description=My Python System Script
After=network.target
[Service]
User=root
WorkingDirectory=/path/to/script
ExecStart=/path/to/venv/bin/python /path/to/script.py
Restart=always
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
然后启用服务:
sudo systemctl daemon-reload
sudo systemctl enable my_script
sudo systemctl start my_script
os.umask
设置适当的文件权限subprocess
时避免shell=True,防止命令注入# 安全示例
def safe_file_operation(filename: str) -> None:
"""安全文件操作示例"""
if not os.path.exists(filename):
raise FileNotFoundError(f"文件不存在: {filename}")
if not os.path.isfile(filename):
raise ValueError(f"不是常规文件: {filename}")
# 设置安全权限
os.umask(0o077)
# 安全地处理文件
with open(filename, 'r') as f:
content = f.read()
# 处理内容...
通过以上配置,您可以在Linux系统上高效地开发和运行Python系统脚本。