#unix-socket #process #process-manager #client-server #manager #user #running

bin+lib sopht

比tmux更复杂的方式管理长时间运行的程序的小巧程序

4个版本 (2个重大更新)

0.3.0 2024年1月17日
0.2.0 2023年12月22日
0.1.1 2023年12月17日
0.1.0 2023年12月16日

Unix API 中排名 456

每月下载量 45

MIT 许可证

58KB
1K SLoC

比tmux更复杂的方式管理长时间运行的程序的小巧程序。

链接

概述

sopht由两个程序组成:一个在Unix套接字上运行的 服务器sophtd),它监听来自sopht 客户端sopht) 的连接。服务器负责启动和管理客户端请求的任何进程。客户端负责验证用户的命令,与服务器通信,并将最终以可读的方式将响应传递给用户。

sopht是一个用户级程序。这意味着在多用户环境中,每个用户都应该在后台运行自己的sophtd实例。sopht绝 不能 以root/admin用户身份运行!实际上,如果以类似于root的特权用户身份运行,它将失败,因为这个用户没有主目录,sopht需要创建Unix套接字。有关如何正确安装客户端和服务器的信息,请参阅下面的 安装 部分。

使用方法

sopht v0.3.0
cute process manager
(slightly) more sophisticated than tmux

commands:
  help
    prints this message

  hello
    requests the server greet you. kinda like a ping command, but friendlier

  shutdown
    shuts the server down gracefully

  start <...>
    attempts to run the rest of the arguments <..> as a command and begins
    managing the resulting process. pass "--restart <policy>" to set the restart
    policy of the process. valid restart policies are "never", "always", and
    "on-failure". if setting the restart policy to "on-failure", the
    "--retries <retry-count>" option must also be specified.

  output <pid>
    completely retrives the output of the process with the specified PID

  status
    retrieves the status of all managed processes

  stop <pid>
    stops the process with the specified PID and sets its restart policy to
    "never"

  restart <pid>
    stops the process with the specified PID and runs the same command again,
    creating a new process with a different PID.

  send <pid> <...>
    sends the rest of the arguments <...> as input to the process with PID
    <pid> a newline is automatically appended onto the output given to the
    process.

  change-policy <pid> <policy>  
    changes the policy of process with PID <pid> to the policy given by
    <policy>. unlike the "start" command, the policy must be written as one
    string like "on-failure 3" or "always".

贡献

有许多方法可以帮助,请参阅 贡献 文档以了解如何。

构建和安装

目前,sopht仅在sourcehut上托管。但它遵循常规的cargo build过程,因此只需克隆此存储库并构建它。(请确保使用--release选项以生成优化和精简的二进制文件!)之后,目前安装sopht的最佳方式是使用内置的install程序将其复制到/usr/local/bin

install ./target/release/sopht /usr/local/bin/sopht
install ./target/release/sophtd /usr/local/bin/sophtd

之后,将sopht.service复制到/etc/systemd/user/。现在,通过systemctl --user start sophtsystemctl --user stop sopht启动和停止sophtd。有些人可能更喜欢通过systemctl --user enable sopht启用sopht,以便在系统启动时可用。

此外,如果您有cargo,sopht也可以通过crates.io安装。不过,这将阻止您通过上述服务文件运行sopht

cargo install sopht

依赖项

~4–16MB
~151K SLoC