我想在崩溃时可靠地重新启动我的应用程序和 Web 服务器进程。
如果我理解正确,runit 将每个服务作为子进程启动。如果子进程崩溃,它会向父进程发送一个信号,父进程又将服务重新生成为子进程。
这在新贵的情况下如何工作。它是否也会产生像 runit 这样的子进程?
我正在考虑为此使用 runit。这是需要的,还是暴发户对此足够好?
我在我的 Web 服务器上使用 nginx,在我的应用服务器上使用 gunicorn (python)。
我需要了解一些 ksh 细节,但我不想永久地从 bash 更改为 ksh。
我该怎么办?
是否可以仅为特定的控制台会话更改 shell?
我正面临一个脚本问题,我已经开始/etc/service
并正在使用runit
.
我的脚本/etc/service/myApp/run
看起来像:
#!/bin/bash
cd /src
forever -l forever.log -o out.log -e err.log -a start bin/www
Run Code Online (Sandbox Code Playgroud)
什么永远不会是我的运行脚本作为一个守护进程。但是这样做似乎让runit认为我的服务已经结束并/etc/service/myApp/run
一次又一次地运行......
我也试过不将它作为守护进程运行,它在前台运行良好,但我仍然有问题。我有一个干净的关闭命令在某个时候发送到我的服务器,这最终会关闭前台进程,我不希望它重新启动。但令我沮丧的是,/etc/service/myApp/run
立即被调用以重新启动我的服务器:(
我不是系统管理员,所以这方面的大部分内容对我来说都是新的。我想要的只是我的脚本在启动时运行而不是自动重启。谢谢你的帮助。
编辑:我更新了我的问题以包括runit
此处使用的事实。我看到 runit 监视进程以保持服务正常运行。我的问题仍然存在。
从使用 Linux 的第一天起,我们就被告知以 root 身份运行是极其危险的。在这里,我们在通过在 Windows 10 中启用它向更广泛的受众介绍 Linux 的第一天,我们为用户提供了 root 访问权限。我意识到它是从 Windows 10 环境中沙箱化的,但是为所有用户(甚至是标准用户)提供默认的 root 环境对任何系统都有潜在的危险。为什么我们会认为这是该软件的正确行动方案?
command-line application-development windows-subsystem-for-linux