Таким образом:
public static Process GetParent(this Process process)
{
try
{
using (var query = new ManagementObjectSearcher(
"SELECT * " +
"FROM Win32_Process " +
"WHERE ProcessId=" + process.Id))
{
return query
.Get()
.OfType<ManagementObject>()
.Select(p => Process.GetProcessById((int)(uint)p["ParentProcessId"]))
.FirstOrDefault();
}
}
catch
{
return null;
}
}
ОБНОВЛЕНИЕ : я обновлен, чтобы включить последние версии из pm2:
для многих случаев использования, использование службы systemd является самым простым и наиболее подходящим способом управления процессом узла. для тех, кто выполняет многочисленные процессы узлов или независимо запускает микросервисы узлов в одной среде, pm2 является более полнофункциональным инструментом.
https://github.com/unitech/pm2
pm2 monit
или списка процессов с pm2 list
pm2 logs
- Конфигурация поведения
- Поддержка карты источника
- Совместимость с PaaS
- Watch & amp; Перезагрузка
- Система модулей
- Макс. Перезагрузка памяти
- Кластерный режим
- Горячая перезагрузка
- Рабочий процесс разработки
- Сценарии запуска
- Автоматическое завершение
- Рабочий процесс развертывания
- Мониторинг ключевых показателей
- API
Если вы запускаете nodejs на сервере Linux, я думаю, что это лучший способ.
Создать сценарий службы и скопировать в /etc/init/nodejs.conf
Запустить службу: запуск узла sudo service
Остановить службу: остановка узла sudo service
Служебный скрипт
description "DManager node.js server - Last Update: 2012-08-06"
author "Pedro Muniz - pedro.muniz@geeklab.com.br"
env USER="nodejs" #you have to create this user
env APPNAME="nodejs" #you can change the service name
env WORKDIR="/home/<project-home-dir>" #set your project home folder here
env COMMAND="/usr/bin/node <server name>" #app.js ?
# used to be: start on startup
# until we found some mounts weren't ready yet while booting:
start on started mountall
stop on shutdown
# Automatically Respawn:
respawn
respawn limit 99 5
pre-start script
sudo -u $USER echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/log/$APPNAME.log
end script
script
# Not sure why $HOME is needed, but we found that it is:
export HOME="<project-home-dir>" #set your project home folder here
export NODE_PATH="<project node_path>"
#log file, grant permission to nodejs user
exec start-stop-daemon --start --make-pidfile --pidfile /var/run/$APPNAME.pid --chuid $USER --chdir $WORKDIR --exec $COMMAND >> /var/log/$APPNAME.log 2>&1
end script
post-start script
# Optionally put a script here that will notifiy you node has (re)started
# /root/bin/hoptoad.sh "node.js has started!"
end script
pre-stop script
sudo -u $USER echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/log/$APPNAME.log
end script
Чтобы завершить различные предлагаемые варианты, вот еще одна: команда daemon
в GNU / Linux, о которой вы можете прочитать здесь: http://libslack.org/daemon/manpages/daemon. 1.html . (извиняюсь, если это уже упоминалось в одном из комментариев выше).