1. 程式人生 > >openwrt 為軟件包添加服務

openwrt 為軟件包添加服務

top service cal star 軟件 重啟 介紹 ffffff removing

手動修改 rc.local 加入也可以實現自啟動,缺點手動修改太麻煩,停止只能用 kill 。

配置成服務最方便了,可以啟用或禁用,啟動,停止,重啟非常方便。

在openwrt 中使用服務 service 是非常方便的。

define Package/gmediarender/postinst
#!/bin/sh
if [ -z "$${IPKG_INSTROOT}" ]; then
    echo "Enabling rc.d symlink for gmediarender"
    /etc/init.d/gmediarender enable
fi
exit 0
endef

define Package
/gmediarender/prerm #!/bin/sh if [ -z "$${IPKG_INSTROOT}" ]; then echo "Removing rc.d symlink for gmediarender" /etc/init.d/gmediarender disable fi exit 0 endef

在 gmediarender 的 Makefile 中添加2個項目。 okpg 基於 Debian 的軟件包管理方式。postinst 安裝以後執行,prerm 移除時執行,還有別的,這裏用不到, 不介紹。

define Package/gmediarender/install
    $(INSTALL_DIR) $(
1)/usr/bin $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/gmediarender $(1)/usr/bin $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) ./files/gmediarender.init $(1)/etc/init.d/gmediarender #添加服務腳本 $(INSTALL_DIR) $(1)/usr/share/gmediarender/ $(INSTALL_DATA) ./files/*.png $(1)/usr/share/gmediarender/ endef

gmediarender.init

#!/bin/sh /etc/rc.common
# Copyright (C) 2008-2012 OpenWrt.org

START=99
APP=gmediarender
SERVICE_WRITE_PID=1
SERVICE_DAEMONIZE=1
 
start() {
        service_start /usr/bin/$APP
}
 
stop() {
        service_stop /usr/bin/$APP
}

的確非常簡單。

/etc/init.d/gmediarender enable

/etc/init.d/gmediarender disable

/etc/init.d/gmediarender start
/etc/init.d/gmediarender stop

/etc/init.d/gmediarender restart

openwrt 為軟件包添加服務