我正在运行几个 Node 实例,它们都在不同的端口上运行。
我需要一种能够根据它正在运行的端口杀死特定节点实例的方法(杀死绑定到端口 n 的节点实例)。
在我的终端上,我可以轻松地将“fuser -k xxxx/tcp”xxxx 作为端口。
问题是,那是因为我有权这样做。我的问题是:我希望能够有一个 PHP 文件来关闭在端口 n 上运行的节点实例,并且任何人都可以打开它。如何在不打开巨大安全漏洞的情况下做到这一点?
谢谢!
您可以考虑向您的服务器再添加一个端点,例如/shutdown
调用process.exit()
;
结果是立竿见影的,比使用一堆 shell 命令、跟踪 pid 等更容易实现......
也很容易通过密码、签名请求等来保护。
最好的方法是让 php 将端口号写入文件,然后让 cron 脚本以 root(或任何需要的用户)身份运行,并从该文件中读取端口号。cron 脚本也应该有一些安全措施,比如不停止端口 80 上运行的任何东西,或者根本不停止节点进程。
编辑:为了更加安全,您可以要求端口号以需要您输入的“密码”为前缀。然后 cron 脚本将验证它是否以该密码为前缀(或对其进行散列并比较散列会更好)