我创建了一个在Olinuxino Maxi板上运行的应用程序,该板目前运行Arch Linux ARM发行版。我的一些简单的应用程序可以被认为分为两部分:
在RS232和TCP / IP之间执行通信,并通过Linphone库启动/接受VOIP呼叫的程序。该程序的行为方式是通过.conf
文件配置的。该程序在启动时启动。我通过为其创建.service
文件然后使用systemctl
/ systemd
启用它来实现启动启动。
通过Lighttpd访问的简单网页。 CGI页面用C语言编写。该页面为用户提供了通过简单形式编辑.conf
文件的方法,从而配置主程序的操作。
以上所有现在都有效。我遇到的具体问题涉及当用户通过网页提交新设置时,如何使我的服务程序重新启动(以便它再次从.conf
文件配置)。我坚持这个领域是因为,虽然我是一位经验丰富的C程序员,但在Linux上进行开发和一般的Linux管理对我来说是一个相当新的领域。
如果它是相关的,我会讨论一下我如何设置它,包括我如何设置用户等等:
/home/application-name/
中。 .conf
文件也位于此处。systemd
在启动时启动程序。我知道该程序是以root身份运行的。/home/application-name/web/
。我在Lighttpd配置中设置了一个别名,/cgi-bin/
指向此处,这是有效的。 ../.conf
文件。为了允许Web服务器编辑.conf
文件,我必须chmod
该文件允许对其他人进行写访问,但我猜测更好的方法是将用户放入application-name
1}}和http
成为一个新的用户组(虽然我也很欣赏这方面的建议)。system()
来调用bash脚本restart_application.sh
。 restart_application.sh
内,我正在拨打systemctl
来重启我的主程序。但它不起作用,我收集它不起作用,因为除root
之外的任何用户都不能调用systemctl
。 所以主要的问题是:
还有:
编辑1 :除非有人有更好的方法,否则我正在考虑尝试建议here这个在bash文件中基本上是'sudo'的想法。