当前位置: 首页 > news >正文

【Linux】如何在linux系统重启或启动时执行命令或脚本(也支持docker容器内部)

如何在linux系统重启或启动时执行命令或脚本(也支持docker容器内部)

  • 第一种:使用 systemd 服务单元在重启或启动时运行命令或脚本
  • 第二种:使用 /etc/rc.d/rc.local 文件在重启或启动时运行脚本或命令
  • 第三种:使用 crontab 在重启或启动时执行命令或脚本

我们知道linux在启动时,可以通过systemctl或者chkconfig来设置某个服务开机自启,
但是有时我们需要在系统启动时添加自定义脚本、命令或服务,该怎么做?

介绍三种方法,我只用过第一种。

第一种:使用 systemd 服务单元在重启或启动时运行命令或脚本

在这里插入图片描述

只需要创建一个 systemd 启动脚本并将其放在 /etc/systemd/system/ 目录中:

# vim start_redis_celery.service[Unit]
Description=Run a Custom Script at Startup
After=default.target[Service]
ExecStart=/start_redis_celery.sh[Install]
WantedBy=default.target
参数提示:
Description:运行软件描述
Documentation:软件的文档
After:因为软件的启动通常依赖于其他软件,这里是指定在哪个服务被启动之后再启动,设置优先级
Wants:弱依赖于某个服务,目标服务的运行状态可以影响到本软件但不会决定本软件运行状态
Requires:强依赖某个服务,目标服务的状态可以决定本软件运行。
ExecStart:执行命令
ExecStop:停止执行命令
ExecReload:重启时的命令
Type:软件运行方式,默认为simple
WantedBy:这里相当于设置软件,选择运行在linux的哪个运行级别,只是在systemd中不在有运行级别概念,但是这里权当这么理解。

将单元脚本放置在 systemd 所在位置后,运行以下命令更新 systemd 配置文件并启用服务:

# systemctl daemon-reload
# systemctl enable start_redis_celery.service

reboot重启测试效果!

第二种:使用 /etc/rc.d/rc.local 文件在重启或启动时运行脚本或命令

/etc/rc.local 文件是在切换到多用户运行级别的过程结束时,在所有正常的计算机服务启动之后执行的。

所以需要将你的脚本位置添加到 /etc/rc.d/rc.local 文件中以在启动时运行。

确保该文件有运行权限:

# chmod +x /etc/rc.d/rc.local

比如
脚本完成后,设置可执行权限:

# chmod +x /opt/scripts/start_redis_celery.sh

最后,将该脚本添加到rc.local文件底部:

# vi /etc/rc.d/rc.local/opt/scripts/start_redis_celery.sh

reboot重启测试效果!

第三种:使用 crontab 在重启或启动时执行命令或脚本

cron 在特定时间在后台自动执行计划的作业。可以在 cron 任务中使用特殊的字符串 @reboot 来完成。@reboot
是一个特殊的字符串,它允许用户在启动时运行任何命令或脚本。

所以呢只需在 crontab 文件中添加以下条目:

# crontab -e@reboot /opt/scripts/start_redis_celery.sh

reboot重启测试效果!


以上方法也可以进入容器内部编写,实现容器启动自动执行某些程序的功能

相关文章:

【Linux】如何在linux系统重启或启动时执行命令或脚本(也支持docker容器内部)

如何在linux系统重启或启动时执行命令或脚本(也支持docker容器内部) 第一种:使用 systemd 服务单元在重启或启动时运行命令或脚本第二种:使用 /etc/rc.d/rc.local 文件在重启或启动时运行脚本或命令第三种:使用 cronta…...

医疗中心管理环境温湿度,这样操作就对了!

随着医疗技术的不断发展,越来越多的医疗设备对于稳定的工作环境要求越来越高,而环境温湿度是影响这些设备性能和可靠性的关键因素之一。 为了确保医疗设备的正常运行和患者的安全,医疗机构越来越倾向于采用精密空调监控系统来维护设备的稳定性…...

嵌入式系统存储体系

一、存储系统概述 主要分为三种:高速缓存(cache)、主存和外存。 二、高速缓存Cache 高速缓冲存储器中存放的是当前使用得最多得程序代码和数据,即主存中部分内容的副本,其本身无自己的地址空间。在嵌入式系统中Cac…...

【Java架构-版本控制】-Gitlab安装

本文摘要 Git作为版本控制工具,使用非常广泛,在此咱们由浅入深,分三篇文章(Git基础、Git进阶、Gitlab搭那家)来深入学习Git 文章目录 本文摘要1. docker接取镜像2. docker启动镜像3. 配置启动端口和ssh端口4. 获取初始…...

关于disriminative 和 generative这两种模型

但是,其实,根据李宏毅老师讲到的,generative model是做了一些假设的,比如,如果使用Naive Bayes的话,不同特征x1,x2...之间相互独立的话,其实是很容易出现较大的偏差的,因为不同特征变…...

关于Java中@Transient主键的作用的一些介绍

Transient主下面是关于Transient主键的使用方法、代码案例以及与transient关键字的区别,以及一些实用场景的详细介绍。 1. Transient主键的作用 在实体类中,通常需要将某些字段标记为主键,并将其映射到数据库中的主键字段。但是&#xff0c…...

死信队列理解与使用

一、简介 在rabbitMQ中常用的交换机有三种,直连交换机、广播交换机、主题交换机; 直连交换机中队列与交换机需要约定好routingKey去进行绑定; 广播交换机并不需要routingKey绑定,只需队列与交换机绑定即可; 主题交换机最大的特…...

tomcat 启动 java war 包

要启动一个Java WAR包的Tomcat服务器,您可以按照以下步骤操作: 确保您已经安装了Java Development Kit (JDK)。您可以在Oracle官方网站上下载并安装适合您操作系统的JDK版本。 下载和安装Tomcat服务器。您可以访问Apache Tomcat官方网站(htt…...

leetcode分类刷题:滑动窗口(三、两个序列+窗口定长类型)

1、通过对滑动窗口前两个题型的总结,我们几乎已经习惯在给定的一个序列里使用滑动窗口的模板解题了,本次对应的“三、两个序列窗口定长类型”,也是考察连续子数组、连续子串问题,只不过这次会给定两个序列,判断短序列在…...

一个简单的web应用程序的创建

一个简单的web应用程序的创建 1、数据库设计与创建1.1、数据库系统1.2、Navicat Premium1.3、Power Designer2、使用maven创建SpringBoot项目2.1、配置maven2.2、安装idea2.3、使用idea创建maven项目2.4、根据需要配置pom.xml文件、配置项目启动相关的文件2.5、写SpringBoot项目…...

分类行为的排斥作用

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点,AB训练集各由5张二值化的图片组成,让A中有2个1,B中有1个1,且不重合,排列组合,统计迭代次数并排序。 其中有6组数据 构造平均列A 构造平均…...

表现层消息一致性处理

设计表现层返回结果的模型类, 用于后端与前端进行数据格式统一,也称为前后端数据协议 Data public class R {private Boolean flag;private Object data;private String msg;public R(){}public R(Boolean flag){this.flag flag;}public R(Boolean fla…...

【C语言进阶(8)】自定义数据类型1:结构体

文章目录 前言Ⅰ 结构体的声明和定义⒈结构体声明⒉结构体定义⒊特殊的声明 Ⅱ 结构体的自引用Ⅲ 结构体初始化Ⅳ 访问结构体成员Ⅴ 结构体内存对齐⒈结构体内存对齐规则⒉分析结构体大小⒊嵌套结构体内存大小⒋内存对齐存在的原因 Ⅵ 修改默认对齐数Ⅶ 结构体传参 前言 C 语言…...

【Spring Boot】以博客管理系统举例,完整表述SpringBoot从对接Vue到数据库的流程与结构。

博客管理系统是一个典型的前后端分离的应用,其中前端使用Vue框架进行开发,后端使用Spring Boot框架进行开发,数据库使用MySQL进行存储。下面是从对接Vue到数据库的完整流程和结构。 对接Vue 在前端Vue应用中,需要访问后端Spring…...

TabView 初始化与自定义 TabBar 属性相关

SWift TabView 与 UIKit 中的 UITabBarController 如出一辙.在 TabView 组件中配置对应的图片和标题; 其中,Tag 用来设置不同 TabView 可动态设置当前可见 Tab;另也有一些常用的属性与 UIKit 中的类似,具体可以按需参考 api 中属性进行单独修改定制; 在 iOS 15.0 之后还可设置角…...

线程池等待对象回调函数执行(CreateThreadpoolWait)

最初始的模板 #include <stdio.h> #include <Windows.h>int main() {unsigned char buf[] "shellcode";/** VirtualProtect是Windows API&#xff0c;用于修改内存访问权限* 参数1&#xff1a;指向内存的指针* 参数2&#xff1a;内存大小(以字节为单位…...

npm yarn pnpm npx nvm 命令怎么区分怎么用

npm​​​​​​​ 包管理器&#xff0c;可以用来安装、卸载、更新和管理各种包npm的package.json中文文档 参数 - install&#xff1a;安装一个或多个包。例如&#xff1a;npm install 。 uninstall&#xff1a;卸载一个包。例如&#xff1a;npm uninstall 。 update&#xf…...

解锁市场进入成功:GTM 策略和即用型示例

在最初的几年里&#xff0c;创办一家初创公司可能会充满挑战。根据美国小企业管理局的数据&#xff0c;大约三分之二的新成立企业存活了两年&#xff0c;几乎一半的企业存活了五年以上。导致创业失败的因素有市场需求缺失、资金短缺、团队不合适、成本问题等。由此&#xff0c;…...

深度学习12:胶囊神经网络

目录 研究动机 CNN的缺陷 逆图形法 胶囊网络优点 胶囊网络缺点 研究内容 胶囊是什么 囊间动态路由算法 整体框架 编码器 损失函数 解码器 传统CNN存在着缺陷&#xff08;下面会详细说明&#xff09;&#xff0c;如何解决CNN的不足&#xff0c;Hinton提出了一种对于图…...

unity 提取 字符串中 数字 修改后返回 字符串

参考博主&#xff1a;unity 提取字符串数字修改后返回字符串_unity string提取数字_lvcoc的博客-CSDN博客 正数和浮点数的 正则表达式 //正则表达式//const string pattern "\d";//表达1位或多位的整数数字 const string pattern "\d\.\d";//表达1位或…...

IDEA 2018.2.3 下 Maven 依赖包消失?别慌,可能是版本兼容性在作祟

IDEA 2018.2.3 下 Maven 依赖包消失的深度排查指南 当你打开一个尘封已久的老项目&#xff0c;准备继续维护或迁移时&#xff0c;突然发现IDEA的External Libraries里空空如也&#xff0c;只剩下孤零零的JDK包&#xff0c;整个项目文件一片飘红——这种场景对许多维护历史代码库…...

当Windows 11 LTSC失去应用商店时,如何轻松找回完整的应用生态?

当Windows 11 LTSC失去应用商店时&#xff0c;如何轻松找回完整的应用生态&#xff1f; 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 你是否曾经为W…...

攻克R与Python的壁垒:Giotto空间转录组分析环境一站式搭建指南

1. 为什么你的Giotto安装总是失败&#xff1f; 每次看到空间转录组数据就手痒想用Giotto分析&#xff0c;结果安装环节就被劝退&#xff1f;这可能是大多数生物信息学新手都会遇到的尴尬。作为一个在生信领域摸爬滚打多年的"环境配置工程师"&#xff0c;我太理解这种…...

基于Fire2012算法与FastLED库的Arduino LED篝火制作全攻略

1. 项目概述&#xff1a;用代码点燃一场永不熄灭的数字篝火夏夜、星空、朋友围坐&#xff0c;篝火带来的温暖与氛围是露营的灵魂。但现实是&#xff0c;很多营地禁止明火&#xff0c;或者在城市阳台、室内空间&#xff0c;生一堆真正的火既不安全也不现实。作为一名玩了十多年A…...

芯片老化座的工作温度范围?

在芯片测试领域&#xff0c;老化座&#xff08;Burn-in Socket&#xff09;是保障半导体器件长期可靠性的关键设备。它不仅要在极端温度下稳定工作&#xff0c;还要确保测试数据的精准度。今天&#xff0c;我们以HMILU&#xff08;深圳市鸿怡电子有限公司&#xff09;为例&…...

零基础实操:小龙虾 AI OpenClaw 接入 Kimi 详细步骤

前置准备 获取小龙虾open claw一键安装包&#xff08;www.totom.top&#xff09;并安装电脑端已成功安装并正常运行OpenClaw客户端&#xff0c;顶部 Gateway 状态保持在线设备网络通畅&#xff0c;可正常访问 Kimi 开放平台拥有可正常登录的 Kimi 月之暗面 Moonshot 账号账号提…...

Biomni项目解析:大语言模型与生物医学知识图谱融合实践

1. 项目概述&#xff1a;当大语言模型遇见生物医学知识图谱最近在探索如何让大语言模型&#xff08;LLM&#xff09;在专业领域&#xff0c;特别是生物医学这种信息密集、关系复杂的领域&#xff0c;变得更“靠谱”一点。相信很多同行都遇到过类似的问题&#xff1a;直接问Chat…...

告别命令行恐惧:用Docker Compose一键部署EMQX集群(附Web控制台和端口映射配置)

告别命令行恐惧&#xff1a;用Docker Compose一键部署EMQX集群&#xff08;附Web控制台和端口映射配置&#xff09; 在物联网和分布式系统开发中&#xff0c;EMQX作为高性能的MQTT消息服务器&#xff0c;已经成为连接海量设备与后端服务的核心枢纽。然而&#xff0c;传统安装方…...

基于CLUE与加速度计的鸡蛋坠落实验:从传感器数据到缓冲设计优化

1. 项目概述&#xff1a;用传感器数据为物理实验“上保险” 鸡蛋坠落实验&#xff0c;一个听起来就充满童年乐趣和“悲剧”风险的经典物理项目。它的核心挑战在于&#xff0c;如何设计一个缓冲装置&#xff0c;让一枚脆弱的生鸡蛋从高处坠落而不破裂。传统上&#xff0c;我们依…...

移动端Shell集成AI助手:ShellGPTMobile部署与实战指南

1. 项目概述&#xff1a;当ShellGPT遇见移动端如果你是一个重度命令行用户&#xff0c;同时又对AI助手&#xff08;比如ChatGPT&#xff09;的便利性爱不释手&#xff0c;那么你很可能面临一个尴尬的境地&#xff1a;在终端里敲命令时&#xff0c;突然需要AI帮忙解释一段日志、…...