GVKun编程网logo

如何使一个openwrt下的软件开机自启动(openwrt 自启动)

12

在本文中,我们将给您介绍关于如何使一个openwrt下的软件开机自启动的详细内容,并且为您解答openwrt自启动的相关问题,此外,我们还将为您提供关于Android应用如何开机自启动、自启动失败原因

在本文中,我们将给您介绍关于如何使一个openwrt下的软件开机自启动的详细内容,并且为您解答openwrt 自启动的相关问题,此外,我们还将为您提供关于Android 应用如何开机自启动、自启动失败原因、Centos6.8下设置gitlab服务开机自启动,关闭防火墙开机自启动、CentOS7如何设置开机自启动程序、开机自启动脚本?、linux下的软件开机自动启动方案的知识。

本文目录一览:

如何使一个openwrt下的软件开机自启动(openwrt 自启动)

如何使一个openwrt下的软件开机自启动(openwrt 自启动)

条件有三:

1.需要在软件包的Makefile中添加宏定义Package/$(package-name)/preinst和Package/$(package-name)/prerm

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

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

 

2.需要一个启动脚本,并且需要有执行权限(曾尝试过直接将脚本放置在target/linux/$(chip-series)/base-files/etc/init.d目录下,但是openwrt启动后不会执行这个脚本,为什么,因为没有执行权限,那么直接修改此脚本的权限呢?不可行)
如何实施?

将启动脚本制作成一个此软件包的补丁,放到软件包的patches目录下,脚本内容如下:

#!/bin/sh /etc/rc.common
# "new(er)" style init script
# Look at /lib/functions/service.sh on a running system for explanations of what other SERVICE_
# options you can use, and when you might want them.
 
START=200
APP=hello
SERVICE_WRITE_PID=1
SERVICE_DAEMONIZE=1
 
start() {
        service_start /usr/bin/$APP
}
 
stop() {
        service_stop /usr/bin/$APP
}

 

3.脚本准备好了,那么此时需要安装脚本到要制作的根文件系统中

在软件包的Makefile中的宏定义Package/$(package-name)/install里加入以下类似代码:

$(INSTALL_DIR) $(1)/etc/init.d

$(INSTALL_BIN) $(script-path) $(1)/etc/init.d

这样权限就有了

 

Android 应用如何开机自启动、自启动失败原因

Android 应用如何开机自启动、自启动失败原因

Android 应用如何开机自启动、自启动失败原因

本文主要介绍 Android 应用如何开机自启动、自启动失败的原因、adb 命令发送 BOOT_COMPLETED
1、Android 应用如何开机自启动
(1)、在 AndroidManifest.xml 中注册

AndroidManifest.xml 中注册 BOOT_COMPLETED Action

注意不仅要添加 android.intent.action.BOOT_COMPLETED 对应的 action,还需要添加对应的 uses-permission

 

(2)、Receiver 接收广播进行处理

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class BootBroadcastReceiver extends BroadcastReceiver {
 
     public static final String TAG = "BootBroadcastReceiver" ;
 
     @Override
     public void onReceive ( Context  context , Intent  intent ) {
         String action = intent . getAction ( ) . toString ( ) ;
         if ( action . equals ( Intent . ACTION_BOOT_COMPLETED ) ) {
// u can start your service here
             Toast . makeText ( context , "boot completed action has got" , Toast . LENGTH_LONG ) . show ( ) ;
             return ;
         }
     }
}

 

2、自启动失败的原因
接收不到 BOOT_COMPLETED 广播可能的原因
(1)、BOOT_COMPLETED 对应的 action 和 uses-permission 没有一起添加
(2)、应用安装到了 sd 卡内,安装在 sd 卡内的应用是收不到 BOOT_COMPLETED 广播的
(3)、系统开启了 Fast Boot 模式,这种模式下系统启动并不会发送 BOOT_COMPLETED 广播
(4)、应用程序安装后重来没有启动过,这种情况下应用程序接收不到任何广播,包括 BOOT_COMPLETED、ACTION_PACKAGE_ADDED、CONNECTIVITY_ACTION 等等。
Android3.1 之后,系统为了加强了安全性控制,应用程序安装后或是 (设置) 应用管理中被强制关闭后处于 stopped 状态,在这种状态下接收不到任何广播,除非广播带有 FLAG_INCLUDE_STOPPED_PACKAGES 标志,而默认所有系统广播都是 FLAG_EXCLUDE_STOPPED_PACKAGES 的,所以就没法通过系统广播自启动了。所以 Android3.1 之后
(1)、应用程序无法在安装后自己启动
(2)、没有 ui 的程序必须通过其他应用激活才能启动,如它的 Activity、Service、Content Provider 被其他应用调用。
存在一种例外,就是应用程序被 adb push you.apk/system/app/ 下是会自动启动的,不处于 stopped 状态。
具体说明见:
http://developer.android.com/about/versions/android-3.1.html#launchcontrols
http://commonsware.com/blog/2011/07/13/boot-completed-regression-confirmed.html

 

3、adb 发送 BOOT_COMPLETED
我们可以通过

1
adb  shell  am  broadcast - a android . intent . action . BOOT_COMPLETED

命令发送 BOOT_COMPLETED 广播,而不用重启测试机或模拟器来测试 BOOT_COMPLETED 广播,这条命令可以更精确的发送到某个 package,如下:

1
adb  shell  am  broadcast - a android . intent . action . BOOT_COMPLETED - c android . intent . category . HOME - n package_name / class_name

 

Centos6.8下设置gitlab服务开机自启动,关闭防火墙开机自启动

Centos6.8下设置gitlab服务开机自启动,关闭防火墙开机自启动

一. 本地虚拟机的缺点

本地虚拟机虽然也可以模拟服务器用,但电脑不能保证24小时都是开机的,一旦关机,服务就失去了连接,你将看到我们之前搭建的gitlab服务出现如下画面:

本地电脑7*24小时不关机是不现实的,但是可以保证,一旦虚拟机启动,服务也响应启动,而不是服务启动了,发现防火墙开机自启了,本地去访问gitlab时被拦截了,当关闭防火墙,又发现gitlab服务不是开机自动启动的,还需要手动敲一遍命令:

gitlab-ctl start

这显然是不合理的,下面我们谈谈如何开闭防火墙开机自启动和设置gitlab开机自启动

二. 关闭防火墙开机自启动

网上有很多方法来查看防火墙的状态:

service iptables status

输入上面命令,查看防火墙的状态,如看到ACCEPT、REJECT,说明防火墙服务正在运行

当然也可以使用chkconfig命令查看系统服务的运行级信息

这里需要说明一下chkconfig的6个运行级别:

0  停机,机器关闭(千万不要把initdefault设置为0)
1  单用户模式,类似windows下的安全模式
2  多用户模式,但是没有NFS支持
3  完整的多用户模式,是标准的运行级
4  一般不用,在一些特殊情况下可以用它做一些事情、例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置
5  就是X11,进入到 X Window系统了
6  重启(千万不要把initdefault设置为6)

如何永久性的关闭防火墙?使用如下命令:

chkconfig iptables off

其实这时候使用 service iptables status查看,还可以看到服务在运行

chkconfig却显示服务都是关闭状态,这是为什么?

因为chkconfig不是立即自动禁止或者启动某一个服务,它只是简单地改变了符号链接

reboot重启一下,再查看防火墙状态,发现禁止开机自启动生效了

3. 设置gitlab服务开机自启动

/etc/rc.d/rc.local,这是设置开机自启动的配置文件。这个文件会在用户登陆之前读取,这个文件中写入了什么命令,在每次系统启动时都会执行一次

那么直接写入gitlab启动命令: gitlab-ctl start行不行?建议要写全路径

当你不知道gitlab-ctl全路径的时候,用whereis命令可以查看:

这里为什么会有两个路径,可以 ls -l 查看一下

恍然大悟,原来/usr/bin开头的全路径是指向/opt开头的软连接,这时候将目标链接写入配置文件即可

 

 

 

参考文章

Centos6 设置软件开机自动启动

chkconfig命令

详解centos6和centos7防火墙的关闭

 

 

CentOS7如何设置开机自启动程序、开机自启动脚本?

CentOS7如何设置开机自启动程序、开机自启动脚本?

文章目录

    • 1、把启动程序的命令添加到/etc/rc.d/rc.local文件中
      • CentOS7.9里的`/etc/rc.local`文件
    • 2、把写好的启动脚本添加到目录`/etc/rc.d/init.d/`,然后使用命令`chkconfig`设置开机启动。
      • 示例1:设置自启动mysql
      • 示例2:设置自启动httpd
    • 3、把启动程序的命令添加到`/etc/rc.d/rc.sysinit` 文件中
      • 示例:设置自启动apache
    • 我们的prj
      • 尝试方案1

在CentOS系统下,主要有三种方法设置自己安装的程序开机启动。

1、把启动程序的命令添加到/etc/rc.d/rc.local文件中

/etc/rc.d/rc.local 用于添加开机启动命令
/etc/rc.local/etc/rc.d/rc.local的软连接

比如下面的是设置开机启动httpd。

打开rc.local文件,在文件最后添加/usr/local/apache/bin/apachectl start

#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

#该脚本将在所有其他初始化脚本之后执行。
#如果你不想做完整的 Sys V 风格的初始化东西,你可以把你自己的初始化东西放在这里。
 
touch /var/lock/subsys/local

/usr/local/apache/bin/apachectl start

CentOS7.9里的/etc/rc.local文件

[root@localhost init.d]# cat /etc/rc.local 
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to prevIoUs versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
[root@localhost init.d]# 

2、把写好的启动脚本添加到目录/etc/rc.d/init.d/,然后使用命令chkconfig设置开机启动。

chkconfig 功能说明:检查,设置系统的各种服务。


语法:chkconfig [--add][--del][--list][系统服务] 或 chkconfig [--level <等级代号>][系统服务][on/off/reset]

--add 添加服务

--del 删除服务

--list 查看各服务启动状态

示例1:设置自启动MysqL

将MysqL启动脚本放入所有脚本运行目录 /etc/rc.d/init.d

cp /lamp/MysqL-5.0.41/support-files/MysqL.server /etc/rc.d/init.d/MysqLd

改变所有者

chown root.root /etc/rc.d/init.d/MysqLd

所有用户都可以执行,但只有root可以修改

chmod 755 /etc/rc.d/init.d/MysqLd

将MysqLd 放入linux启动管理体系中

chkconfig --add MysqLd

查看全部服务在各运行级状态

chkconfig --list MysqLd

只要运行级别3启动,其他都关闭

chkconfig --levels 245 MysqLd off

示例2:设置自启动httpd

把httpd的脚本写好后放进/etc/rc.d/init.d/目录

chkconfig --add httpd
chkconfig httpd on

命令即设置好了开机启动。

3、把启动程序的命令添加到/etc/rc.d/rc.sysinit 文件中

脚本/etc/rc.d/rc.sysinit,完成系统服务程序启动,如系统环境变量设置、设置系统时钟、加载字体、检查加载文件系统、生成系统启动信息日志文件等

示例:设置自启动apache

echo "/usr/local/apache2/bin/apachectl start" >> /etc/rc.d/rc.sysinit

上述命令相当于在/etc/rc.d/rc.sysinit文件末尾追加/usr/local/apache2/bin/apachectl start,当然也可手动打开文件编辑

参考文章:CentOS设置程序开机自启动的方法

我们的prj

尝试方案1

我们要让/root/kyai/exec_container.sh这个脚本在centos7开机的时候自启动

先备份一下/etc/rc.d/rc.local

cp /etc/rc.d/rc.local /etc/rc.d/rc.local.bak

然后再执行

echo "/root/kyai/exec_container.sh" >> /etc/rc.d/rc.local

然后查看一下,已经写进去了

在这里插入图片描述

然后我们重启一下centos看看这个脚本能不能把服务拉起来

试了一下,我又给这个命令加了输出日志文件的功能,参考文章:Linux bash输出带日期时间的日志文件

发现这个脚本压根没运行。。。。。(不知道是不是我操作姿势有误,我是以root用户进来的)

linux下的软件开机自动启动方案

linux下的软件开机自动启动方案

docker安装之后,已经安装了开机启动service文件,但还需要在设置下开机启动,才能在服务器重启时自动启动

systemctl enable docker

kubelet开机自动启动

systemctl enable kubelet

今天的关于如何使一个openwrt下的软件开机自启动openwrt 自启动的分享已经结束,谢谢您的关注,如果想了解更多关于Android 应用如何开机自启动、自启动失败原因、Centos6.8下设置gitlab服务开机自启动,关闭防火墙开机自启动、CentOS7如何设置开机自启动程序、开机自启动脚本?、linux下的软件开机自动启动方案的相关知识,请在本站进行查询。

本文标签: