-
2022-03-25 11:56:50
一、 docker 服务启动启动
# 开启 docker 自启动 systemctl enable docker.service # 关闭 docker 自启动 systemctl disable docker.service
二、docker 容器自动启动
# 开启容器自启动 docker update --restart=always 【容器名】 例如:docker update --restart=always tracker # 关闭容器自启动 docker update --restart=no【容器名】 例如:docker update --restart=no tracker ##### 相关配置解析 no: 不要自动重启容器。(默认) on-failure: 如果容器由于错误而退出,则重新启动容器,该错误表现为非零退出代码。 always: 如果容器停止,请务必重启容器。如果手动停止,则仅在Docker守护程序重新启动或手动重新启动容器本身时才重新启动。(参见重启政策详情中列出的第二个项目) unless-stopped: 类似于always,除了当容器停止(手动或其他方式)时,即使在Docker守护程序重新启动后也不会重新启动容器。
更多相关内容 -
Windows开机自启动三种方式
2017-04-09 13:48:34Windows设置开机启动的三种方法,开始菜单启动,注册表启动项,计划任务。代码示例 -
Android 开机自启动应用
2012-11-29 20:37:48Android 开机自启动应用, BOOT_COMPLETED -
Android App开机自启动
2022-03-09 10:22:00最近项目中,有用到开机自启动的功能,这里做一下总结,供大家学习探讨! 实战演练 测试手机:红米手机 Redmi 6A 安卓version 9 &...最近项目中,有用到开机自启动的功能,这里做一下总结,供大家学习探讨!
Android 开机启动延迟问题
Android 开机自启动被拦截问题实战演练
测试手机:红米手机 Redmi 6A 安卓version 9
华为手机 DUA-AL00 安卓version 8.1.0
华为手机 Honor 9i 安卓version 9.1.0
VIVO手机 vivo iQOO 安卓version 11
小米平板 MI PAD 4 安卓version 8.1.0经测试以上机型测试成功
对于开机自启的基本思路:
- 想要实现app开机自启动,我们用广播的方式来实现这种需求。app首先需要去注册一个关于接收发送开机启动的广播(android.intent.action.BOOT_COMPLETED);而且必须要注意的一点是:这个广播必须的静态注册的,不能是动态注册的广播(这种接收开机广播的,一定要静态注册,这样应用还没运行起来时也照样能够接收到开机广播
,动态广播就不行了)。 - 静态注册好了广播之后,在onReceive方法里面做处理就可以了
- 重点注意项
(1)在安装完应用后,要先运行一次,然后关机,再启动。
(2)针对Andorid4.0之后需先启动一次APP才可收到开机完成的广播,主要目的是防止恶意程序
(3)同设备尽可能只允许一个APP实现开机自启动的功能,否则俩者应该会有冲突
具体实现
//加入权限 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
这里关于onReceive方法里面的处理,有些机型不起作用,这里总结了两种实现方式:
1.根据包名启动应用
2.指定class类,跳转到相应的Activity/** * @author Martin-harry * @date 2022/3/4 * @address * @Desc 定义自启动BroadcastReceiver */ public class AutoStartBroadReceiver extends BroadcastReceiver { private static final String ACTION = "android.intent.action.BOOT_COMPLETED"; @Override public void onReceive(Context context, Intent intent) { Log.e("接收广播", "onReceive: "); Log.e("接收广播", "onReceive: " + intent.getAction()); //开机启动 if (ACTION.equals(intent.getAction())) { Log.e("接收广播", "onReceive: 启动了。。。"); //第一种方式:根据包名 // PackageManager packageManager = context.getPackageManager(); // Intent mainIntent = packageManager.getLaunchIntentForPackage("com.harry.martin"); // mainIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // context.startActivity(mainIntent); // context.startService(mainIntent); //第二种方式:指定class类,跳转到相应的Acitivity Intent mainIntent = new Intent(context, LoginActivity.class); /** * Intent.FLAG_ACTIVITY_NEW_TASK * Intent.FLAG_ACTIVITY_CLEAR_TOP */ mainIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(mainIntent); // context.startService(mainIntent); } } }
注册广播
<receiver android:name=".receiver.AutoStartBroadReceiver" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.HOME" /> </intent-filter> </receiver> <activity android:name=".mvp.view.Activity.LoginActivity" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
场景测试
做完上面的工作后,这里就针对部分手机应用的权限管理操作了
ComponentName localComponentName = new ComponentName(MyApp.getInstance(), MyInstalledReceiver.class); int i = MyApp.getInstance().getPackageManager().getComponentEnabledSetting(localComponentName); // Log.e("自启动 >>>>", "onCreate: " + i); getAutostartSettingIntent(this);
/** * 获取自启动管理页面的Intent * * @param context context * @return 返回自启动管理页面的Intent */ public static Intent getAutostartSettingIntent(Context context) { ComponentName componentName = null; String brand = Build.MANUFACTURER; Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); switch (brand.toLowerCase()) { case "samsung"://三星 componentName = new ComponentName("com.samsung.android.sm", "com.samsung.android.sm.app.dashboard.SmartManagerDashBoardActivity"); break; case "huawei"://华为 Log.e("自启动管理 >>>>", "getAutostartSettingIntent: 华为"); componentName = new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.appcontrol.activity.StartupAppControlActivity"); // componentName = new ComponentName("com.huawei.systemmanager", "com.huawei.systemmanager.startupmgr.ui.StartupNormalAppListActivity");//目前看是通用的 break; case "xiaomi"://小米 // componentName = new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"); componentName = new ComponentName("com.android.settings","com.android.settings.BackgroundApplicationsManager"); break; case "vivo"://VIVO // componentName = new ComponentName("com.iqoo.secure", "com.iqoo.secure.safaguard.PurviewTabActivity"); componentName = new ComponentName("com.iqoo.secure", "com.iqoo.secure.ui.phoneoptimize.AddWhiteListActivity"); break; case "oppo"://OPPO // componentName = new ComponentName("com.oppo.safe", "com.oppo.safe.permission.startup.StartupAppListActivity"); componentName = new ComponentName("com.coloros.oppoguardelf", "com.coloros.powermanager.fuelgaue.PowerUsageModelActivity"); break; case "yulong": case "360"://360 componentName = new ComponentName("com.yulong.android.coolsafe", "com.yulong.android.coolsafe.ui.activity.autorun.AutoRunListActivity"); break; case "meizu"://魅族 componentName = new ComponentName("com.meizu.safe", "com.meizu.safe.permission.SmartBGActivity"); break; case "oneplus"://一加 componentName = new ComponentName("com.oneplus.security", "com.oneplus.security.chainlaunch.view.ChainLaunchAppListActivity"); break; case "letv"://乐视 intent.setAction("com.letv.android.permissionautoboot"); default://其他 intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS"); intent.setData(Uri.fromParts("package", context.getPackageName(), null)); break; } intent.setComponent(componentName); return intent; }
关于红米手机授权操作:
找到红米手机里面的手机管家应用,并打开里面的应用管理
打开授权管理,给自己的应用设置自启动权限,并允许应用在后台弹出界面
关于华为手机授权操作:
总结
本人在测试的时候,红米手机开机自启时间需要等待一段时间,如果有大佬知道怎么解决的,可以下方评论一下,谢谢啦
项目下载地址:AutoBroadCastReceiver_HandlerOOM
题外话:
另外一种实现方式的话,最好就是让系统桌面应用启动你,Launcher
PackageName:comp.xxx.launcher
launcher就是java写的一个app,只不过它是系统应用,但是拿这个代码的话,好像得fw的人帮忙,或者你自己搞出来
具体的也是在Launcher这个的MainActivity里面加个intent 跳转你app的包名 - 想要实现app开机自启动,我们用广播的方式来实现这种需求。app首先需要去注册一个关于接收发送开机启动的广播(android.intent.action.BOOT_COMPLETED);而且必须要注意的一点是:这个广播必须的静态注册的,不能是动态注册的广播(这种接收开机广播的,一定要静态注册,这样应用还没运行起来时也照样能够接收到开机广播
-
Linux配置开机自启动
2021-05-16 13:45:00自定义脚本通过系统提供的自启动脚本(这种方式适合添加需要开机自启的应用程序,比如 redis、nginx 等等)Linux 系统提供了一个开机启动的脚本( /etc/rc.local 或 /etc/rc.d/rc.local 这两个文件实际上是一个文件)1...先了解一下Linux一些脚本启动的顺序
/etc/rc.local -> /etc/profile -> 自定义脚本
通过系统提供的自启动脚本
(这种方式适合添加需要开机自启的应用程序,比如 redis、nginx 等等)
Linux 系统提供了一个开机启动的脚本( /etc/rc.local 或 /etc/rc.d/rc.local 这两个文件实际上是一个文件)
1、编辑 /etc/rc.local
vi /etc/rc.local
2、添加要执行的命令
注意:这里的执行命令都必须是全路径的,就算你添加到了 PATH 路径,自启动的时候,也是识别不到的(因为启动顺序是 /etc/rc.local -> /etc/profile )
例如,我这里添加的 redis 自启动:
#!/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 thisfile.
#
# 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
# redis 启动命令/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.conf
TIPS:如何你是第一次使用该脚本文件,需要给脚本文件授权可执行,命令如下:
chmod +x /etc/rc.local
chmod 说明:
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限
r 表示可读取,w 表示可写入,x 表示可执行
通过 chkconfig 添加自定义的启动脚本
(推荐用于linux开机自启动 java 程序)
1、切换到 init.d 目录
cd /etc/rc.d/init.d/
2、创建一个自启动脚本,这里就创建一个名为 autostart.sh 的脚本吧(名字自取)
touch autostart.sh //创建 autostart.sh 脚本文件
3、编辑脚本
vi autostart.sh //打开autostart.sh,进行编辑
4、编写脚本内容
(注意:为了防止脚本执行时,/etc/profile 里 export 的路径未生效,需要手动 source 一下,使配置立即生效)
#!/bin/sh#chkconfig:2345 80 90#description:开机自动启动的脚本程序
# 防止在脚本运行的时候,没有加载 JDK 在/etc/profile 的PATH添加的路径配置if [ ${JAVA_HOME} == '']; then
echo "source /etc/profile,使环境变量加载"source/etc/profilefi# 以下是脚本内容(自己根据需要进行编写)
# 待启动的application 路径
app_path_array=("/opt/eureka/"
"/opt/admin/")for app_path in ${app_path_array[*]}; do# 这里,很重要,如果不切换到 jar 包的文件夹,那么下面脚本执行的路径就是根路径(/),这会导致 springboot 读取不到 jar包下的 ./config/ 文件夹,而去读取根目录下的配置 /config 文件夹
cd ${app_path}
# 找到以后缀 .jar 结尾的文件
APP_NAME=`find -name *.jar `
# 启动
nohup java-jar ${APP_NAME} &
done
脚本文件内容说明:
第一行 “#!/bin/sh” 告诉系统使用的shell
第二行 “#chkconfig: 2345 80 90” 表示在2/3/4/5运行级别启动,启动序号(S80),关闭序号(K90);
第三行 “#description” 表示的是服务的描述信息
(注意:第一行和第二行必须写,否则后面使用 chkconfig 命令注册脚本到开机启动项时会报错 “服务 autostart.sh 不支持 chkconfig”)
扩展资料
Linux启动级别:
0 关机
1 单用户
2-5 多用户图形界面
6 重启
5、给脚本赋可执行权限
chmod +x autostart.sh
6、将脚本添加到开机启动项中,并启动脚本
chkconfig --add autostart.shchkconfig autostart.sh on
另:如果启动的脚本未达到想要的效果,可以查看脚本执行的日志来分析
查看脚本执行日志的方式(以脚本 autostart.sh为例):
1)journalctl -u autostart
2) systemctl status autostart
通过自定义service服务
(很少用到这种方式,不做评价)
以下是对上述博客的补充:
service脚本分为3个部分:[Unit] [Service] [Install]
1、Unit
Unit表明该服务的描述。最常用的场景就是定义该脚本执行的顺序,比如:
After=dbus.service
表示该service 在 dbus.service 之后再执行
2、Service
Service是脚本的关键部分,这一部分用于设置一些关键参数:
Type=forking: 后台运行模式
PIDFile: 存放PID文件的位置
ExecStart=xxx: 服务运行的具体执行命令
ExecReload=xxx: 服务重启的执行命令
EexcStop=xxx: 服务停止的执行命令
注:
该服务执行后,会有服务系统的日志
-
Android 开机自启动示例程序
2015-10-31 20:25:25Android 开机自启动示例程序。使用广播方式接受,采用Android自带存储shareference存储开机自启动的设置。 -
【PC】如何让程序开机自启动/如何打开开机自启动文件夹
2021-05-31 14:06:35另外附上加入自启动的方法: 1. 按住 win+R 打开“运行”对话框,输入 shell:startup ,回车或点击“确定”即可打开“用户启动文件夹” 2.右击“TranslucentTB.exe”,选择“创建快捷方式” 3.将快捷方式移入第一...加入自启动的方法:
1. 按住 win+R 打开“运行”对话框,输入 shell:startup ,回车或点击“确定”即可打开“用户启动文件夹”
2.右击你想要开机启动的软件,选择“创建快捷方式”
3.将快捷方式移入第一步打开的文件夹即可实现自启动
---
启动文件夹路径(**是自己的用户名)
C:\Users\**\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
-
linux设置服务开机自启动的三种方式
2021-05-13 03:27:40linux设置服务开机自启动的三种方式这里介绍一下linux开机自动启动的几种方法,共计3种,大家可以借鉴一下!经验里面以centos 5.3系统为例!方法1:.利用ntsysv命令进行设置,利用root登陆终端命令下输入ntsysv 回车... -
易语言开机自动启动源码
2011-04-28 13:27:06易语言开机自动启动源码,要的来下下下要的来下下下要的来下下下要的来下要的来下下下下下要的来下下下 -
Linux设置开机自启动脚本
2021-07-15 09:56:02这里介绍两种Linux开机自启动脚本的方式 也可用于开机自启动软件(把软件的启动写成脚本,然后再让脚本开机自启动即可) 方式1:/etc/profile.d/ 把自启动脚本放在/etc/profile.d/下 为了保证一定能执行,最好再加个... -
docker设置开机自启动,并且设置容器实例mysql等自启动
2022-04-26 12:52:401、设置docker开机自启动 [root@qlguo ~]# systemctl enable docker 2、设置容器mysql自动启动 1)先找出该软件的CONTAINER ID [root@qlguo ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STAT -
设置virtualbox开机自启动,并启动虚拟机
2021-10-26 22:06:19-type headless F:\program\Oracle\VirtualBox\VBoxManage.exe startvm ES2 --type headless F:\program\Oracle\VirtualBox\VBoxManage.exe startvm ES3 --type headless EXIT 上面脚本是启动了3个虚拟机,根据自己... -
android最好的开机自启动项管理软件
2012-02-20 08:34:08android最好的开机自启动项管理软件,软件暂用资源小,功能强大,绿色无广告~~极力推荐 -
如何使APP开机自启动
2021-05-26 16:28:43添加权限,缺少这步则无法在Android 3.0及其之前版本上自启动 注意 1.由于Android系统在外置SD卡加载前广播ACTION_BOOT_COMPLETED,于是如果应用安装在外置SD卡上,它无法接收到此广播 2.FLAG_INCLUDE_STOPPED_... -
安卓开机自启动app
2021-11-10 13:41:34工作需要搞一个工业平板的开机自启动实现,最终搞定,记录在此。 初次探索 在安卓中,想要实现app开机自动启动,需要实现拦截广播android.permission.RECEIVE_BOOT_COMPLETED,并且需要使用静态注册广播的方法(即... -
如何关闭开机自动启动的软件?
2021-06-29 12:04:20电脑开机时总会自动启动一些软件,然后造成电脑开机卡、慢的现象,那么针对这些开机自动启动的软件我们如何去关闭呢?今天就和大家一起聊一聊如何取消开机软件的自启。一、关闭开机自启软件步骤1.使用键盘组合键... -
Linux设置程序开机自启动
2021-05-15 19:47:46Linux设置程序开机自启动大致有三种方法。一、通过rc.local设置自启动通过在/etc/rc.local的文件夹下添加shell指令即可在开机时自动启动指令。其内容的格式举例如下:#!/bin/shsudo mkdir /test该例子便是在开机时在... -
ROS节点开机自启动
2020-08-28 08:46:57在开发ROS项目中我们常常想实现电脑开机以后自动运行一些节点,这里就涉及到了Ubuntu中的一些开机自启动问题,ROS节点的启动与其他脚本的自动运行不一样,不能只写使用rc.local的方式写入,这是因为在那个时候,bash... -
Linux sshd服务自动启动
2020-12-30 18:00:54ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh 此处sshd是具体服务的脚本文件,S100ssh是其软链接,S开头代表加载时自启动 如果需要在多个运行级别下设置自启动,则需建立多个软链接 这种方式比较繁琐,适用于... -
如何设置Windows服务开机自启动——服务器重启后服务自启动
2021-06-10 13:59:20将服务设置为开机自启动 很多时候因为某些主观或客观原因我们需要将服务器重启,一旦服务器重启那么上面的所有程序都被强制关闭了,我们就需要一个服务一个服务去手动启动它,有什么好的解决办法呢?接下来就教大家... -
Android 应用自动启动的两种方法(开机自启动 与 另一个应用广播通知启动)
2019-02-14 16:16:49在一个移动设备中安装了多个应用程序,其中自己开发的应用需要实现开机自启动这么个功能; 为了实现自己应用能够实现自动启动,最初的思路是监控设备的开机完成这类的广播信号; 思路一(开机自启动): 注册... -
Redis设置开机自启动
2022-01-28 17:02:27redis设置开机自启动 -
android如何实现开机自动启动Service或app
2021-05-26 10:08:551.今天我们主要来探讨android怎么让一个service开机自动启动功能的实现。Android手机在启动的过程中会触发一个Standard Broadcast Action,名字叫android.intent.action.BOOT_COMPLETED(记得只会触发一次呀),在这里... -
NVIDIA TX2 设置开机自启动
2022-04-10 18:51:21NVIDIA TX2 设置开机自启动 实验室的板子。记录一下设置开机自启动python脚本的过程。 教程 1.创建一个shell脚本 touch start.sh # 新建一个shell脚本 2.编辑这个shell脚本: gedit start.sh # 编辑shell脚本 3.... -
linux下添加简单的开机自启动脚本
2021-08-16 15:00:48一、在rc.local脚本中添加开机自启动程序 1、添加 ubuntu在开机过程之后,会执行/etc/rc.local(注意/etc/init.d中也有个rc.local,不要弄混了)文件中的脚本程序,初始情况下,这个文件内容是这样的: downey@... -
ubuntu18.04设置开机自动启动脚本
2020-09-26 16:32:18ubuntu作为服务器使用时,常常需要在机器重启时能自动启动我们开发的服务。 Ubuntu 16.10开始不再使用initd管理系统,改用systemd,包括用systemctl命令来替换了service和chkconfig的功能。 systemd 默认读取 /etc/... -
Windows设置程序开机自启动_设置程序开机自启动的几种方法_添加启动项
2022-01-22 15:35:23方法一 Win + R 打开运行,输入:shell:startup 把要开机自启的程序文件...双击‘新值’,在打开的窗口中输入要将自启动的程序路径即可 以上方法添加的启动项 Win10系统可在任务管理器>启动/Win7系统可在msconfig& -
Android进阶之路 - 开机自启动
2020-05-20 15:39:28android实现程序开机自启动 在安卓中,想要实现app开机自动启动,需要实现拦截广播android.permission.RECEIVE_BOOT_COMPLETED,并且需要使用静态注册广播的方法(即在AndroidManifest.xml文件中定义广播) 1、先在... -
ROS机器人开机自启动设置
2020-07-19 00:42:48调试过ROS机器人的同学都知道,反复调试、反复启动launch文件,调试还算方便,但是要是做产品的话,肯定不行,不可能让客户,手动的启动程序吧,所以有了下面一个比较简单实用方法。 TX2上电立即开机 网上写了一大堆...