NodeJS child_process.spawn () ведет себя по-разному при запуске в качестве службы systemd - PullRequest
0 голосов
/ 26 января 2020

Я работаю над приложением NodeJS, которое запускает expressJS и использует twinkle для набора номера телефона.

С учетом следующей функции:

export const call = (telNr: string, res: Response|undefined = undefined) => {
    const endOfLine = require("os").EOL;
    const process = spawn("/usr/bin/twinkle", ["-c"], {shell: true});
    let registered = false;
    process.stdout.on("data", (data) => {
        if (/registration succeeded/.test(data.toString())) {
            if (!registered) {
                registered = true;
                process.stdin.write("call " + telNr + endOfLine);
                setTimeout(() => {
                    try {
                        process.stdin.write("bye" + endOfLine);
                        process.stdin.write("exit" + endOfLine);
                    } catch {
                        // War schon zu
                    }
                }, 10000);
            } // Else -> Scheint das zweite mal ausgegeben zu werden.
        }

        if (/486 Busy here/.test(data.toString())) {
            // Belegt
            process.stdin.write("exit" + endOfLine);
        }
    });

    process.on("exit", (exit) => {
        if (res !== undefined) {
            res.json({code: exit});
        }
    });
};

функция предназначена для отладки, вызывается через URL (поэтому есть необязательный параметр res.

теперь к проблеме

Когда Я запускаю приложение как root с node index.js и открываю заданный URL-адрес, по которому желаемый SIP-телефон звонит в течение 10 секунд.

Когда приложение запускается как служба через systemd, дочерний процесс немедленно закрывается с помощью код выхода 134.

systemd-unit:

[Unit]
Description=Besuchermanagement Server
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/node /srv/node/besuchermanagement/dist/index.js
Restart=on-failure

[Install]
WantedBy=multi-user.target

Я надеюсь, что это не offtopi c, так как я не уверен, связана ли эта проблема с моим кодом или неверной конфигурацией моего сервиса в systemd.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...