我正在尝试编写一个可以作为客户端和服务器运行的应用程序,客户端和服务器通过 ssh/sockets 进行通信。当客户端向服务器发送请求时,服务器应根据客户端的请求启动一些子进程,并在此子进程终止时通知客户端。
我不想从头开始,而是想知道是否有任何开源应用程序已经可以做到这一点。
答案1
鉴于您已在使用 ssh 进行远程连接,我的看法是,使用专用应用程序用户,执行ssh -i ~/key.file user@remove_server "/path/to/application stop"
或调用 systemd unit 执行此操作。ssh -i ~/key.file user@remove_server "systemctl stop application"
其中 systemd unit 文件内部是 User=dedicated user
请允许我进一步阐述。
- SSH 允许通过安全外壳进行远程通信,这非常好,因为应用程序流量是加密的。
- 使用专用应用程序用户可以限制应用程序用户可以执行的操作。启动和停止服务是处理资源和进程隔离的好方法
- 使用 /etc/init.d 文件不是一个好主意,因为这些文件通常需要 root 权限才能访问或运行。其中 systemD 单元文件可以有一个 User=,这将允许启动/停止应用程序,同样,这也是第 2 点。
- 本讨论围绕“启动”脚本的概念展开。例如,启动任何服务器并读取 /etc/init.d/ 中的一些 bash 脚本。它们不是应用程序,而是小型 bash 代码,每次都会以您想要的方式以相同的方式启动和停止应用程序。
希望这可以帮助。