Ответ 1
EDIT:
Мне удалось определить ваши приложения в
forever
с помощью UID, а затем не использоватьforever stopall
. Это более чистый способ и навсегда будет убивать все процессы в зависимости от script.Вам просто нужно добавить параметр
--uid "scriptID"
, а затем все процессы, зависящие от него, будут контролироваться вместе.Чтобы запустить новый демон:
forever start --uid "demo" --sourceDir /home/procdir -l /home/log/logfile -o /home/log/outputfile -a -d -v taskName
Остановить демон:
forever stop -uid "demo"
-bash-4.1$ forever list
info: Forever processes running
data: uid command script forever pid id logfile uptime
data: [1] Test /usr/bin/node grunt serve:test 18217 18224 /home/admin/logs/test/forever.log 59:20:21:10.512
data: [2] Dev /usr/bin/node grunt serve:dev 18347 18354 /home/admin/logs/dev/forever.log 59:20:19:56.87
data: [3] Prod /usr/bin/node grunt serve:prod 20411 20418 /home/admin/logs/prod/forever.log 59:18:58:28.697
В любом случае, вы также можете запустить (руками) эту команду, чтобы убить процессы: во-первых, убейте все навсегда задачи (это предотвратит навсегда повторное выполнение задачи при ее убийстве):
forever list | grep your_app | `awk '/\[0\]/{print "forever stop "$8}'`
После этого, когда навсегда убивается, теперь настало время убить ваш node_app
ps -efa | grep node | grep your_app | `awk '{ print "kill "$2}'`
Я настоятельно рекомендую вам не использовать
kill
.forever --uid
, безусловно, будет лучшим решением.
Надеемся, что это решение поможет вам!
EDIT:
Поскольку
forever --uid
устарел, я попытался найти способ управления несколькими приложениями по имени (без использования метода устаревшего метода --uid). Кажется, использование конфигурационных файлов - это решение. Как указано в навсегда docsuid
иid
параметры все еще используются в файлах конфигурации. После некоторых тестов я понял, чтоid
является правильным параметром:
Пример:
-bash-4.1$ pwd
/jome/myuser/app
-bash-4.1$ forever list
info: No forever processes running
-bash-4.1$ forever start ./forever/development.json
warn: --minUptime not set. Defaulting to: 1000ms
warn: --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
info: Forever processing file: index.js
-bash-4.1$ forever stop app4U
info: Forever stopped process:
uid command script forever pid id logfile uptime
[0] BaoO /usr/local/bin/node index.js 41196 41197 app4U /Users/me/.forever/BaoO.log 0:0:0:5.995
навсегда/development.json
{
// Comments are supported
"id": "app4U",
"append": true,
"watch": true,
"script": "index.js",
"sourceDir": "/jome/myuser/app"
}
index.js
a=0;
while (a<10) {
a+=1
a-=1
}