On Unix, child processes are not killed when parent dies. Each process is part of a process group (pgid). When pgid == pid, it is the process group leader. node creates child processes with the parent as the group leader (detached = false). You can send a signal to entire group using kill(-pgid), as in, negative value in argument. Systemd can be made to do this by setting the KillMode=control-group. Unrelated: Process groups reside inside session groups. Each session group has a controlling terminal. Only one process in the session group has access to the terminal. Process group is basically like a bash pipeline. A session group is the entire login session with only one process having terminal access at a time. Fixes #543
21 lines
532 B
Desktop File
21 lines
532 B
Desktop File
[Unit]
|
|
Description=Cloudron Admin
|
|
OnFailure=crashnotifier@%n.service
|
|
StopWhenUnneeded=true
|
|
|
|
[Service]
|
|
Type=idle
|
|
WorkingDirectory=/home/yellowtent/box
|
|
Restart=always
|
|
ExecStart=/usr/bin/node --max_old_space_size=150 /home/yellowtent/box/box.js
|
|
Environment="HOME=/home/yellowtent" "USER=yellowtent" "DEBUG=box*,connect-lastmile" "BOX_ENV=cloudron" "NODE_ENV=production"
|
|
; kill apptask processes as well
|
|
KillMode=control-group
|
|
User=yellowtent
|
|
Group=yellowtent
|
|
MemoryLimit=200M
|
|
TimeoutStopSec=5s
|
|
StartLimitInterval=1
|
|
StartLimitBurst=60
|
|
|