SRM 是一个轻量级的、基于 Swift 的命令行工具,旨在帮助您管理、监控和控制各种进程,包括 Swift 应用程序、Shell 脚本、二进制文件和命令。它受到 PM2 的启发,提供了一个直观的界面,用于启动、停止、监控进程以及查看实时日志。
running
、stopped
、error
),即使它们启动失败。bash
和 zsh
shell。要使用 SRM,请确保您的系统上安装了 Swift 5.9 或更高版本。以下是如何安装 Swift
在 macOS 上,如果您使用 Xcode,可能已经安装了 Swift。您也可以通过 Homebrew 安装 Swift
brew install swift
对于基于 Linux 的发行版,如 Ubuntu、Debian、Fedora 或 Raspbian,您可以使用一键命令安装 Swift 工具链管理器 Swiftly
curl -s https://raw.githubusercontent.com/Maxim-Lanskoy/Swiftly/main/install/swiftly-install.sh | bash
对于诸如 Arch 或其他发行版,请遵循官方 Swift 安装指南(Linux 版)。
克隆仓库
git clone https://github.com/Maxim-Lanskoy/SRM.git
cd SRM
运行 SRM 设置
构建并设置 SRM,以确保它可以全局访问
swift run srm setup
此命令会构建 SRM,将其添加到您的 $PATH
中,并设置监控服务以在系统启动时启动。
SRM 提供了各种命令来管理和监控进程、脚本和可执行文件。
启动任何命令、可执行文件或脚本,并使用自定义名称
srm start "watch -n 5 free -m" --name MemoryMonitor
运行 Swift 应用程序
srm start /path/to/swift/app --name SwiftApp
运行 Shell 脚本
srm start ./myscript.sh --name ScriptRunner
运行 Python 脚本
srm start "python script.py" --name PythonScript
如果进程崩溃,自动重启进程
srm start ./myapp --name MyApp --restart
启动所有已停止的进程
srm start all
通过名称停止正在运行的进程
srm stop ProcessName
通过索引停止进程
srm stop 1
停止所有托管的进程
srm stop all
通过名称重启进程
srm restart ProcessName
通过索引重启进程
srm restart 1
重启所有进程
srm restart all
从 SRM 中通过名称删除进程
srm delete ProcessName
通过索引删除进程
srm delete 1
从 SRM 中删除所有进程
srm delete all
查看所有进程及其状态的编号列表,包括 CPU 和内存使用情况
srm list
您也可以使用别名
srm ls
示例输出
┌───────┬───────────────┬──────────┬───────┬──────┬──────┬─────────────────────┐
│ Index │ Name │ Status │ PID │ CPU% │ MEM% │ Start Time │
├───────┼───────────────┼──────────┼───────┼──────┼──────┼─────────────────────┤
│ 1 │ MyApp │ running │ 12345 │ 2.3 │ 1.5 │ 2024-10-11 12:34:56 │
├───────┼───────────────┼──────────┼───────┼──────┼──────┼─────────────────────┤
│ 2 │ FailedProcess │ error │ 0 │ N/A │ N/A │ N/A │
├───────┼───────────────┼──────────┼───────┼──────┼──────┼─────────────────────┤
│ 3 │ StoppedProcess│ stopped │ 0 │ N/A │ N/A │ N/A │
└───────┴───────────────┴──────────┴───────┴──────┴──────┴─────────────────────┘
获取任何进程的最新 10 行日志并跟踪日志
srm logs ProcessName
查看指定行数并跟踪日志
srm logs ProcessName --lines 50
查看日志但不跟踪
srm logs ProcessName --no-follow
查看所有进程的日志
srm logs all
SRM 监控服务在系统启动时自动启动,恢复任何先前正在运行的进程。它还会跟踪所有进程的状态,并尝试重启标记为 --restart
的进程,最多尝试重启 15 次。
注意: srm monitor
命令现在仅用于在系统启动时自动运行,不应手动调用。
如果由于任何原因,SRM 在您的 $PATH
中不再可用,或者您想重新构建工具二进制文件,您可以重新运行设置命令
srm setup
此命令还将重新注册监控服务。
如果您希望从系统中完全删除 SRM
srm destroy
这将
$PATH
中删除 SRM。SRM 依赖于 ShellOut 库来处理进程执行、日志记录和管理。ShellOut 使 SRM 能够使用 shell 命令,运行脚本或直接从 Swift 代码执行二进制文件。
有关每个命令及其选项的详细帮助,请使用 --help
标志
srm <command> --help
示例
srm start --help
这将显示命令的使用说明、可用选项和示例。
SRM 兼容以下
bash
、zsh
和其他常见的 shell。--name
指定进程名称,SRM 将默认使用可执行文件的名称。running
、stopped
、error
),使您可以有效地监控和调试进程。--restart
标志,以便在进程崩溃时让 SRM 自动重启它。监控服务自动运行以方便此功能。srm list
中的索引号来引用命令中的进程。srm ls
作为 srm list
的快捷方式。