欢迎进入高效程序管理的世界!FuckRun是你的得力助手——它帮你管理程序、记录日志,并确保程序平稳运行。
随着项目规模的扩大以及运行程序数量的增加,你可能会面临以下问题:
- 必须打开多个终端窗口运行不同的程序
- 难以找到程序的日志
- 程序突然崩溃,没收到任何提示
- 需要手动重启程序
FuckRun可以帮助你解决这些问题,它像一个贴心的管家,能:
- 管理所有运行中的程序
- 自动记录日志
- 程序出现问题时及时通知你
- 遇到崩溃时自动重启
为了便于与其他程序(如 Python)进行集成,FuckRun使用简单一致的输出格式,方便解析和处理数据。
所有状态信息都遵循以下格式:
STATUS:ACTION:NAME[:PID]
其中:
STATUS
:固定前缀,表示这是一个状态信息。ACTION
:描述执行的动作,可能的值包括:STARTING
:程序正在启动STARTED
:程序已启动(会包含PID)STOPPING
:程序正在停止STOPPED
:程序已停止RUNNING
:程序正在运行(会包含PID)
NAME
:程序名称。PID
:进程ID(仅在STARTED
和RUNNING
状态下存在)。
def parse_fuckrun_status(line):
"""解析 FuckRun 的状态输出"""
if not line.startswith("STATUS:"):
return None
parts = line.strip().split(":")
if len(parts) < 3:
return None
status = {
"action": parts[1],
"name": parts[2],
"pid": int(parts[3]) if len(parts) > 3 else None
}
return status
# 使用示例
import subprocess
# 启动程序
process = subprocess.Popen(
["fuckrun", "start", "-n", "web"],
stdout=subprocess.PIPE,
text=True
)
# 读取输出
for line in process.stdout:
status = parse_fuckrun_status(line)
if status:
print(f"程序 {status['name']} {status['action']}")
if status['pid']:
print(f"PID: {status['pid']}")
# 启动程序时的输出
STATUS:STARTING:web
STATUS:STARTED:web:1234
# 查看程序状态时的输出
STATUS:RUNNING:web:1234
# 停止程序时的输出
STATUS:STOPPING:web
STATUS:STOPPED:web
# 如果遇到错误导致程序终止
Error: [错误信息]
⚠️ 在开始之前:
- 确保已安装Git
- 避免使用包含中文或空格的路径
- 如果遇到权限问题,请尝试以管理员身份运行
打开终端(Windows系统按 Win+R 并输入 cmd
),运行以下命令:
# 1. 克隆仓库
git clone https://github.com/yourusername/fuckrun
# 2. 进入目录
cd fuckrun
# 3. 编译安装
cargo build --release
💡 如果编译过程较慢,可以下载预编译版本
在你的项目目录下创建一个 config.yaml
文件:
# config.yaml
processes:
# 'web' 是程序的名称,可以修改
web:
# 使用 Python 运行 app.py
program: python
args: ["app.py"]
# 程序的工作目录
working_dir: ./app
# 程序崩溃后自动重启
auto_restart: true
💡 更多高级配置选项将在后续部分详细介绍。
# 启动名为 'web' 的程序
fuckrun start -n web
完成!现在,FuckRun会帮你管理这个程序。
想要查看程序状态吗?试试这些命令:
# 查看程序状态
fuckrun status -n web
# 查看程序日志
fuckrun logs -n web -f
了解 FuckRun 的工作原理,能够帮助你更好地使用它。
FuckRun 的核心思想很简单:它像一个管家,帮你照看所有程序。具体来说:
-
启动程序:当你让 FuckRun 启动一个程序时:
- 它会创建一个独立的进程来运行你的程序
- 收集程序输出到日志文件
- 记录程序状态(PID、启动时间等)
-
监控运行:程序运行过程中,FuckRun 会:
- 定期检查程序是否仍在运行
- 记录程序输出到日志文件
- 发现异常时立即通知你
-
自动恢复:如果程序出现问题,FuckRun 会:
- 记录错误原因
- 尝试重启程序
- 通知你发生了什么
下面是简单的流程概览:
[你的程序] <─────┐
│
▼
[FuckRun 管家]
│
┌────────┴───────┐
▼ ▼
[照看程序] [记录日志]
- 启动/停止 - 输出日志
- 健康检查 - 错误日志
- 自动重启 - 系统日志
这一节将教你如何使用 FuckRun 最常用的命令,每个命令配有示例,跟着做试试看!
# 最基础的启动命令
fuckrun start -n web
# 启动并查看日志
fuckrun start -n web --tail
# 启动多个程序
fuckrun start -n web -n api -n worker
# 指定应用程序目录
fuckrun start -n web --app-dir ./deployments/web/app
# 启动并自动重启,同时指定目录
fuckrun start -n web --app-dir ./deployments/web/app --daemon --auto-restart
# 正常停止
fuckrun stop -n web
# 强制停止(不建议,除非程序卡死)
fuckrun stop -n web --force
# 停止所有程序
fuckrun stop --all
# 查看单个程序状态
fuckrun status -n web
# 查看所有程序状态
fuckrun status --all
# 输出 JSON 格式的状态(方便程序处理)
fuckrun status -n web --json
# 查看最新日志
fuckrun logs -n web
# 实时查看日志
fuckrun logs -n web -f
# 仅查看错误日志
fuckrun logs -n web --error
# 查看最近 100 行日志
fuckrun logs -n web -n 100
💡 加上
-f
参数可以实时查看日志,就像tail -f
一样。
这一节帮助你了解 FuckRun 的文件组织结构,方便你查找文件。
FuckRun 会在你的项目中创建如下目录结构:
你的项目目录/
├── deployments/ # 应用程序部署目录
│ └── {程序名}/ # 每个程序一个目录
│ └── app/ # 应用程序目录
│ ├── app.py # 程序本体
│ └── config.yaml # 程序配置文件
│
├── .fuckrun/ # FuckRun 的工作目录
│ ├── processes/ # 程序运行信息
│ │ └── {程序名}/ # 每个程序的信息
│ │ ├── state.json # 运行状态
│ │ └── logs/ # 日志目录
│ │ ├── stdout.log # 标准输出
│ │ └── stderr.log # 错误输出
│ └── logs/ # FuckRun 自身日志
│ └── {日期}/ # 按日期分类
│ └── fuckrun.log
└── config.yaml # 全局配置文件
⚠️ 注意事项:
- 不要手动修改
.fuckrun
目录里的文件- 日志文件会自动分割,不用担心文件过大
- 配置文件修改后需要重启程序才能生效
- 可以通过
--app-dir
参数自定义应用程序目录位置