我有一个可以像普通应用程序一样毫无问题地运行的应用程序。该应用程序使用 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
可以解决问题。我不明白为什么?