Я работаю над приложением 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.
Заранее спасибо!