如何在 Arch Linux 中调试失败的服务

如何在 Arch Linux 中调试失败的服务

我有一个可以像普通应用程序一样毫无问题地运行的应用程序。该应用程序使用 I2C 和 WiFi。我可以通过wireshark检测数据流,这样我就可以确认它实际上正在运行。当我将它实现为一项服务时,它在一段时间后崩溃,没有任何可用的错误,如下所示。有没有办法获得堆栈跟踪或任何东西来调试它?

* comi2c.service - I2C master
   Loaded: loaded (/etc/systemd/system/comi2c.service; enabled; vendor preset: disabled)
   Active: failed (Result: timeout) since Fri 2015-03-13 16:15:14 CET; 1min 4s ago
  Process: 195 ExecStart=//home/sandbox/main 192.168.0.142 (code=killed, signal=TERM)

    Mar 13 15:40:56 sandbox systemd[1]: comi2c.service start operation timed out. Terminating.
    Mar 13 15:40:56 sandbox systemd[1]: Failed to start I2C master.
    Mar 13 15:40:56 sandbox systemd[1]: Unit salto.service entered failed state.
    Mar 13 15:40:56 sandbox systemd[1]: comi2c.service failed.

服务:

[Unit]
Description=I2C master

[Service]
Type=forking
ExecStart=/root/run-i2cmaster.sh

[Install]
WantedBy=multi-user.target

以及 run-i2cmaster.sh 文件:

#!/bin/bash

export $SENDER = 192.168.0.142

/home/sandbox/main $SENDER

更新

如果我将类型更改为forking似乎simple可以解决问题。我不明白为什么?

相关内容