Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >服务器开机启动,你还在用rc-local吗?大神都用服务(service)机制

服务器开机启动,你还在用rc-local吗?大神都用服务(service)机制

作者头像
用户10002156
发布于 2024-01-29 03:32:41
发布于 2024-01-29 03:32:41
1.2K00
代码可运行
举报
文章被收录于专栏:生活处处有BUG生活处处有BUG
运行总次数:0
代码可运行

在最新版本的 systemd 中,已经不再推荐使用 rc-local 来运行自定义脚本或命令。相反,建议使用 systemd 的单位(unit)和服务(service)机制来管理和运行自定义脚本或命令。

创建服务

以下是在 systemd 中运行自定义脚本的一种常用方法:

1. 先创建个人的脚本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir -p ~/shell
echo 'date >> /tmp/0825xj_tmp.txt' > ~/shell/startup_script.sh
chmod +x ~/shell/startup_script.sh

2. 到 /etc/systemd/system/ 目录下,创建一个 .service 文件,用于定义你的自定义脚本或命令的配置。创建一个类似于 startup_script.service 的文件,并将以下内容添加到文件中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
iniCopy Code[Unit]
Description=xiaojin Custom Script

[Service]
Type=forking
User=root
Group=root
ExecStart=/bin/sh /home/xj/shell/startup_script.sh

[Install]
WantedBy=default.target

/home/xj/shell/startup_script.sh 替换为实际的脚本路径。

3. 更新 systemd 配置并启用该服务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl daemon-reload
sudo systemctl start startup_script.service
sudo systemctl status startup_script.service
sudo systemctl enable startup_script.service

这将重新加载 systemd 配置,并启用并启动你的自定义脚本服务。

4. 如果服务启动成功,你可以使用以下命令检查服务状态:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl status startup_script.service

5. 如果服务不能正常运行,可以使用命令查看服务运行日志,再根据日志信息去调整配置和服务。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo journalctl -f -u startup_script.service

从输出中,你可以查看服务是否正在运行以及是否存在任何错误或警告信息。

通过以上步骤,你可以使用 systemd 来管理和运行你的自定义脚本或命令。请确保将 /home/xj/tmp/test.sh 替换为实际的脚本路径,并确保具备足够的权限执行相关操作。

延时执行

开机后10分钟再执行

要在 Ubuntu 启动后延迟一段时间再执行脚本,你可以使用 systemd 的 systemd.timer 单元。

下面是一个示例配置,展示如何在启动后等待 10 分钟后执行一个脚本。

首先,创建一个定时器单元文件 /etc/systemd/system/delayed_script.timer,并将以下内容添加到文件中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[Unit]
Description=Delayed Script Timer

[Timer]
OnBootSec=10min
Unit=delayed_script.service

[Install]
WantedBy=timers.target

然后,创建一个服务单元文件 /etc/systemd/system/delayed_script.service,并将以下内容添加到文件中:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[Unit]
Description=Delayed Script

[Service]
Type=forking
User=root
Group=root
ExecStart=/bin/sh /home/xj/shell/delayed_script.sh
ExecStop=umount /s3/vm-mars-private-cn

[Install]
WantedBy=default.target

请确保将 /path/to/your/script.sh 替换为你要延迟执行的实际脚本路径。

完成后,使用以下命令激活定时器并启用它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo systemctl daemon-reload
sudo systemctl enable delayed_script.timer
sudo systemctl start delayed_script.timer
sudo systemctl status delayed_script.timer

这样,在 Ubuntu 启动后的 10 分钟之后,指定的脚本将被执行。

crontab

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
crontab -e

将此命令添加到文件的末尾

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@reboot sh /home/xj/data/shell/boot_up.sh

测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo umount /s3/vm-mars-saas-cn

mount-s3 --endpoint-url http://s3.cn-northwest-1.amazonaws.com.cn --region cn-northwest-1 vm-mars-saas-cn /s3/vm-mars-saas-cn/  

>> /home/xj/tmp/0906_boot_output.log 2>&1
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生活处处有BUG 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
systemd 开机启动服务
eisc
2024/03/01
4020
ubuntu-18.04开机启动脚本
由于从ubuntu-16.10开始ubuntu不再使用initd管理系统,改用systemd 看了systemd的使用方法,发现改动有点大,包括包括用 systemctl 命令来替换了 service 和 chkconfig 的功能。 比如以前启动 mysql 服务用: sudo是管理权限,如果当前用户是管理员请忽略。
微醺
2020/06/18
4.1K0
CentOS 7 sytemctl 自定义服务开机启动
CentOS 7继承了RHEL 7的新的特性,例如强大的systemctl,而systemctl的使用也使得系统服务的/etc/init.d的启动脚本的方式发生重大改变,也大幅提高了系统服务的运行效率。但服务的配置和以往也发生了极大的不同,变的简单而易用了许多(仁者见仁,米扑博客)。
阳光岛主
2019/02/18
1.7K0
CentOS7/RHEL7 systemd详解
目录 1. 为什么是systemd (1) 关于Linux服务管理 (2) SysV init的优缺点 (3) UpStart的改进 (4) systemd的诞生 (5)为什么systemd能做到启动很快 2. SysV init介绍 (1) 什么是SystemV (2)SysV init的运行级别 (3)SysV init运行顺序 (4)SysV init和系统关闭 (5)SysV init的管理和控制功能 3. systemd的特性 (1)systemd解决了那些问题? (2)systemd的争议在哪里? (3)systemd能更彻底的结束服务进程 4. CentOS 7的systemd特性 (1)套接字服务保持激活功能 (2)进程间通讯保持激活功能 (3)设备保持激活功能 (4)文件路径保持激活功能 (5)系统状态快照 (6)挂载和自动挂载点管理 (7)闪电并行启动 (8)单元逻辑模拟检查 (9)和SysV init向后兼容 5. 如何分析衡量systemd启动速度 (1)查看详细的每个服务消耗的启动时间 (2)查看严重消耗时间的服务树状表 (3)打印分析图及其他命令 6. CentOS 7的systemd向后兼容 (1)systemd对运行级别支持有限。 (2)systemd不支持像init脚本那样的个性化命令。 (3)systemd不支持和没有从systemd启动的服务通讯。 (4)systemd可以只停止运行的服务 (5)不能从标准输出设备读到系统服务信息。 (6)systemd不继承任何上下文环境。 (7)SysV init脚本依赖性 (8)超时机制 7. systemd服务管理 (1) 什么是单元 (2)systemd的服务管理 (3)服务详细信息查看 8. 使用systemd target (1)怎样知道一个目标需要哪些进程服务? (2)target与运行级别 (3)target管理 9. 关闭、暂停、休眠系统 10. 通过systemd管理远程系统 11. 创建和修改systemd单元文件 (1)单元文件概述 (2)理解单元文件结构 (3)创建自定义的单元文件 (4)创建emacs.service例子: (5)创建第二个sshd服务的例子 (6)修改已经存在的单元文件 (7)扩展默认单元配置文件配置 12. 单元实例化 13. VNC SERVER配置 1.为什么是systemd
力哥聊运维与云计算
2019/06/28
1.8K0
CentOS7/RHEL7 systemd详解
CentOS 7下Tomcat 安装与配置(Tomcat开机启动)
如果系统默认的JDK版本是JDK 1.8.x,那么可以省略此步骤 如果系统中需要部署多Tomcat,例如:Tomcat 7+JDK 7,Tomcat 8 + JDK 8共存那么则需要进行以下配置:
KenTalk
2018/09/11
11.3K0
ubuntu-server-18.04 设置开机启动脚本
快速看了 systemd 的使用方法,发现改动有点大, 包括用 systemctl 命令来替换了 service 和 chkconfig 的功能。
西湖醋鱼
2020/12/30
9690
如何在Ubuntu 18.04上安装Tomcat 8.5.31
Apache Tomcat是Java Servlet,JavaServer Pages,Java表达式语言和Java WebSocket技术的开源实现。 它是当今世界上应用最广泛的应用程序和Web服务器之一。 Tomcat使用简单,并具有强大的附加组件生态系统。
星哥玩云
2022/07/13
9650
如何在Ubuntu 18.04上安装Tomcat 8.5.31
如何在Ubuntu 16.04上使用Cassandra和ElasticSearch设置Titan Graph数据库
Titan是一个高度可扩展的开源图形数据库。图形数据库是一种NoSQL数据库,其中所有数据都存储为节点(nodes)和边(edges)。图形数据库适用于高度连接数据的应用程序,其中数据之间的关系是应用程序功能的重要部分,如社交网站。Titan用于存储和查询分布在多台机器上的大量数据。它可以使用各种存储后端,如Apache Cassandra,HBase和BerkeleyDB。在本教程中,您将安装Titan 1.0,然后配置Titan以使用Cassandra和ElasticSearch。Cassandra充当保存底层数据的数据存储区,而ElasticSearch是一个自由文本搜索引擎,可用于在数据库中执行一些复杂的搜索操作。您还将使用Gremlin从数据库创建和查询数据。
水门
2018/07/27
2.7K0
使用systemd在Boot上启动Linux服务
systemd是最初由Red Hat Linux团队开发的Linux系统工具。它包括许多功能,包括用于启动和管理系统进程的引导系统。它目前是大多数Linux发行版的默认初始化系统。许多常用的软件工具(如SSH和Apache)都附带了systemd服务。
陈树丶
2018/08/15
2.3K0
Linux系统管理-crond、chkconfig、systemd、unit、target
语法: crontab [options] Options: -e:=edit 编辑用户的计时器设置 -l:=list 列出用户的计时器设置 -r:=remove 删除用户的计时器设置 -u:=user 指定设定计时器的用户
阿dai学长
2019/04/03
1.2K0
Systemd 定时器教程
Systemd 作为 Linux 的系统启动器,功能强大。 本文通过一个简单例子,介绍 Systemd 如何设置定时任务。这不仅实用,而且可以作为 Systemd 的上手教程。 一、定时任务 所谓定时
ruanyf
2018/04/12
1.2K0
Systemd 定时器教程
Linux下实现程序开机自启(rc.local 和 systemctl)
实现了一个程序,需要在ubuntu上跑起来。能开机自启,且崩溃了也能自己重启。有两种实现方式,个人推荐第二种。
xcywt
2023/07/27
4.1K0
Linux下实现程序开机自启(rc.local 和 systemctl)
如何优雅的在 Linux 下开机自动重启脚本
经常碰到机器断电之后需要重启一大堆服务,为了防止这种事情发生,设置开机自启的脚本十分的重要,我们习惯性的做法就是编写一个重启脚本,然后在 /etc/rc.local 中去完成开机执行。例如下面这样:
iMike
2021/07/23
5.2K0
systemd进程管理工具实战教程
systemd是目前Linux系统上主要的系统守护进程管理工具,由于init一方面对于进程的管理是串行化的,容易出现阻塞情况,另一方面init也仅仅是执行启动脚本,并不能对服务本身进行更多的管理。所以从CentOS 7开始也由systemd取代了init作为默认的系统进程管理工具。
子润先生
2021/06/17
7850
linux部署jar包脚本和注册开机启动
之前开发了windows部署jar包为服务的工具在实际生产环境中使用非常简单方便,公司部分项目是部署在linux系统中的,所以决定整合一个通用的jar包部署脚本,并注册为开机启动服务,为开发实施的同事提供方便,以下操作实际系统环境为centos8
code2roc
2023/07/19
5680
如何在Debian 8上设置VNC服务器
VNC(虚拟网络计算)是一种使用户能够连接远程计算机的图形桌面并与之交互的系统。它可以通过网络传输屏幕更新,键盘和鼠标事件。
谢鸢
2018/10/22
4.8K0
YashanDB 开机自启
在YashanDB数据库环境中设置开机自启,通常指的是配置数据库实例在操作系统启动时自动运行。对于备用数据库(Standby Database),即数据保护模式中的灾备节点,也需要配置成在系统重启后自动启动,以保证数据的高可用性和灾难恢复能力。
用户10349277
2025/02/25
2410
超越基础:释放 Systemd 的全部潜力【systemd 二】
在 Linux 世界中,systemd 是一个非常强大的工具,但它的深度显然超出了日常的基础用法。本文将引导您走进 systemd 的高级领域,揭示其更多的用途和潜力。通过本文文章文章,你将能够以更高效和精密的方式管理和调整 Linux 系统。
一只牛博
2025/05/31
1740
centos7系统服务管理
systemd是RH7系列操作系统开始启用新的系统和服务管理器。它被设计为与sysv init脚本向后兼容,并提供了一些功能,例如在引导时并行启动系统服务,按需激活守护程序或基于依赖关系的服务控制逻辑。
拓荒者
2019/03/16
1.4K0
systemd服务管理详解与子命令一览
描述:系统启动和服务器守护进程管理器,负责在系统启动或运行时激活系统资源,并且管理服务器进程和其它进程,可以说他是Linux的小伙伴系统启动时候最先都是运行的systemd;
全栈工程师修炼指南
2022/09/28
2.3K0
systemd服务管理详解与子命令一览
相关推荐
systemd 开机启动服务
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验