我在我的服务器(ubuntu)上安装了loopback,然后创建了一个应用程序并使用命令slc run来运行...一切正常。 现在我有1个问题,也有1个问题我正面临:
问题:我需要使用slc run命令,但在关闭终端后也要保持应用程序“活着”。为此,我使用了--detach选项并且它有效,我想知道--detach选项是最佳实践还是我需要以不同的方式进行。
问题:在我使用--detach后,我真的不知道如何阻止它。是否有可用于阻止进程运行的命令?
答案 0 :(得分:7)
要停止--detach
ed进程,请转到运行它的同一目录并执行slc runctl stop
。有许多runctl
命令,但stop
可能是您最感兴趣的命令。
最佳做法是一个更长的答案。简短版本是:不要使用--detach
永远并使用init脚本来运行您的应用并使其保持运行(可能是Upstart,因为您使用的是Ubuntu)。
slc run
如果您希望将slc run
作为Upstart作业运行,则可以使用npm install -g strong-service-install
安装强服务安装。这将为您提供sl-svc-install
,一个用于创建Upstart和systemd服务的实用程序。
您最终会运行类似sudo sl-svc-install --name my-app --user youruser --cwd /path/to/app/root -- slc run .
的内容,这应该会创建一个名为my-app
的Upstart作业,该作业将从应用的根目录运行您的应用作为您的uid。您的应用程序的stdout / stderr将被发送到/var/log/upstart/my-app.log。如果您使用的是早于12.04的Ubuntu版本,则需要指定--upstart 0.6
,而您的日志最终将转到syslog。
slc pm
另一种可能更简单的方法是使用slc pm
,其运行级别高于slc run
,并且更容易安装为OS服务。对于这条路线,您已经安装了所有东西。将安装sudo slc pm-install
和strong-pm
Upstart服务以及strong-pm
用户运行它与/ var / lib / strong-pm的$ HOME一样。
如果PM方法稍微复杂一点,那就是必须将应用程序部署到它。很可能这只是转到您的应用根并运行slc deploy http://localhost:8701/
,但具体情况取决于您的应用。您可以为应用配置环境变量,部署新版本,日志将显示在/var/log/upstart/strong-pm.log中。
对于上述任一选项,我建议不在服务器上执行npm install -g strongloop
,因为它包含yeoman生成器和其他在工作站上比服务器更有用的工具。
如果您想使用slc run
路线,则可以npm install -g strong-supervisor strong-service-install
并将slc run
替换为sl-run
。
如果您想使用slc pm
路线,您可以npm install -g strong-pm
并将slc pm-install
替换为sl-pm-install
。
我在StrongLoop工作,主要从事这些工具。
答案 1 :(得分:2)
使用以下方式查看正在运行的应用的状态:
Service ID: 1
Service Name: app
Environment variables:
No environment variables defined
Instances:
Version Agent version Debugger version Cluster size Driver metadata
5.2.1 2.0.3 n/a 1 N/A
Processes:
ID PID WID Listening Ports Tracking objects? CPU profiling? Tracing? Debugging?
1.1.2708 2708 0
1.1.5836 5836 1 0.0.0.0:3001
Service ID: 2
Service Name: default
Environment variables:
No environment variables defined
Instances:
Version Agent version Debugger version Cluster size Driver metadata
5.2.1 2.0.3 n/a 1 N/A
Processes:
ID PID WID Listening Ports Tracking objects? CPU profiling? Tracing? Debugging?
2.1.2760 2760 0
2.1.1676 1676 1 0.0.0.0:3002
示例输出:
slc ctrl stop
要杀死第一个应用,请使用slc ctl stop app
Service "app" hard stopped
stubs
答案 2 :(得分:0)
如果我必须将应用程序作为群集运行,该怎么办?我还可以通过创建的新贵来做到这一点。 喜欢 sudo sl-svc-install --name my-app --user youruser --cwd / path / to / app / root - slc run --cluster 4.
我尝试过这样做,但/etc/init/my-app.conf没有显示有关群集的任何信息。