linux系统设置开机启动的两种方法systemd及rc.local(手工写sh脚本,手工写service服务)

文章目录

    • 知识点
    • 实验
      • 一、systemd
        • (一)自写一个sh脚本并加入开机启动
        • (二)源码安装的nginx加入开机启动
      • rc.local

知识点

在Linux系统中,有多种方法可以设置开机启动。以下是其中的一些主要方法:

systemd

  • 在较新的Linux发行版中,systemd是默认的初始化和服务管理工具。
  • 可以在/etc/systemd/system/目录中创建一个新的单元文件,用于定义自启动的服务。
  • 单元文件通常包含服务的描述、依赖关系、要执行的命令等。

rc.local

  • 打开/etc/rc.d/rc.local文件,在文件的末尾添加要执行的命令或脚本的全路径。
  • 确保为rc.local文件添加执行权限,可以使用chmod +x /etc/rc.d/rc.local

crontab

  • 编辑crontab文件,并添加一行如@reboot your_command的命令,其中your_command是要在启动时执行的命令。

/etc/init.d/

  • 在/etc/init.d/目录下创建一个新的启动脚本,并为其添加执行权限。
  • 使用update-rc.d命令(在Debian/Ubuntu系统中)或chkconfig命令(在CentOS/RedHat系统中)将脚本链接到适当的运行级别。

实验

这是主要实验前两种方式

一、systemd

(一)自写一个sh脚本并加入开机启动
vim /usr/local/WF/rebootechotime.sh

脚本内容如下:

#!/usr/bin/sh
#/usr/local/WF/rebootechotime.sh
echo "reboot time is:" >> /usr/local/WF/rebootechotime.txt
date >> /usr/local/WF/rebootechotime.txt

脚本每次开机启动一次,并将开机时间记录在rebootechotime.txt文件中
在这里插入图片描述

cd /usr/local/WF
ll

在这里插入图片描述
可以看到当前脚本没有可执行的权限

chmod a+x rebootechotime.sh

在这里插入图片描述
现在有执行权限了,执行一下:

./rebootechotime.sh
cat rebootechotime.txt

在这里插入图片描述
致此,当前脚本可以独立运行了。

接下来,写servie

vim /etc/systemd/system/rebootechotime.service
[Unit]
Description=rebootechotime
After=network.target[Service]
User=root
ExecStart=/usr/local/WF/rebootechotime.sh[Install]
WantedBy=multi-user.target

测试一下服务是否可以正常启动

cat /usr/local/WF/rebootechotime.txt
systemctl daemon-reload
systemctl start rebootechotime
cat /usr/local/WF/rebootechotime.txt

在这里插入图片描述

设置开机启动

systemctl enable rebootechotime

查看服务启动日志

journalctl -u rebootechotime
(二)源码安装的nginx加入开机启动

这里以nginx为例,因为笔者的nginx是源码安装的,使用systemctl是无法管理的

1.前提:

当前启动nginx的方法使用绝对路径和相对路径两种方式:

/usr/local/nginx/sbin/nginx

cd /usr/local/nignx/sbin && ./nginx

2.添加systemd服务

vim /etc/systemd/system/nginx.service

文件内容如下:

[Unit]
Description=nginx service
After=network.target[Service]
User=root
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecStartPre=/bin/sleep 10[Install]
WantedBy=multi-user.target

在这里插入图片描述
解析

  • User=root:这表示服务将以 root 用户的身份运行。虽然 nginx 通常可以作为一个非 root 用户运行,但在这个配置中,它被设置为以 root 用户身份运行。出于安全考虑,通常建议避免以 root 用户身份运行服务,除非有特定的理由。

  • Type=forking:这指定了服务类型。forking 类型表示服务在启动时会立即返回,而实际的进程将在后台运行。systemd 会等待进程退出,并假定子进程是服务的实际主进程。这是传统 Unix 守护进程的标准行为。

  • ExecStart=/usr/local/nginx/sbin/nginx:这定义了服务启动时应该运行的命令。在这个例子中,它指定了 nginx 的主可执行文件的路径。

  • ExecReload=/usr/local/nginx/sbin/nginx -s reload:当服务需要重新加载配置时(例如,当 systemctl reload nginx 被调用时),这个命令将被执行。在这个例子中,它发送了一个 reload 信号给 nginx 主进程,以重新加载配置。

  • ExecStop=/usr/local/nginx/sbin/nginx -s stop:当服务需要停止时(例如,当 systemctl stop nginx 被调用时),这个命令将被执行。在这个例子中,它发送了一个 stop 信号给 nginx 主进程,以优雅地停止服务。

  • ExecStartPre=/bin/sleep 10:这是一个比较少见的指令,它定义了在 ExecStart 之前的命令。在这个例子中,服务启动前会等待 10 秒。这通常不是一个好的做法,因为它会延迟服务的启动时间,除非有特定的理由(例如,等待其他服务启动或某个资源变得可用)。

3.加入开机启动

systemctl enable nginx  

rc.local

首先将前面写的开机启动取消掉

systemctl disable rebootechotime
vim /etc/rc.d/rc.local

在最后面加入

nohup /usr/local/WF/rebootechotime.sh &
exit 0

/usr/local/WF/rebootechotime.sh

在这里插入图片描述

解析:

  • 在 /etc/rc.local 文件中,你可以使用 nohup命令和 &符号将脚本放到后台执行。nohup命令用于运行一个命令,使其在你退出 shell 后继续运行。&符号则用于将命令放到后台执行。
  • 在Linux的shell脚本和初始化文件中,exit 0通常用来表示脚本或程序已成功完成。exit 命令用于结束脚本的执行,并返回一个退出状态码给父进程。退出状态码是一个整数,通常用于向调用者指示脚本的执行结果。exit 0:表示成功(没有错误)exit 1、exit 2 等非零值:表示有错误发生,不同的非零值可能表示不同类型的错误。

现在添加执行权限并重启测试一下:

chmod a+x /usr/local/WF/rebootechotime.sh
reboot

重启完后,查看一下rebootechotime.txt

cat /usr/local/WF/rebootechotime.txt

在这里插入图片描述
多了一条记录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/48871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SSM的网上选课系统

系统背景 在当今信息化高速发展的时代,随着Internet的普及和高等教育规模的不断扩大,传统的手工选课方式已难以满足高校日益增长的管理需求。传统的选课方式不仅效率低下,还容易出现人为错误,导致资源浪费和管理成本上升。因此&am…

2959.力扣每日一题7/17 Java(暴力枚举+Floyd算法)

博客主页:音符犹如代码系列专栏:算法练习关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 目录 Floyd算法 解题思路 解题过程 时间复杂度 空间复杂度 Floyd算法 …

Linux系统快速搭建轻量化网站Halo并实现无公网IP远程访问

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

AWE2025正式启动,AWE×AI 推动智慧生活的普及

7月18日,2025年中国家电及消费电子博览会(AWE2025)正式启动。主办方宣布,AWE2025的主题为“AI科技、AI生活”,展会将于2025年3月20-23日在上海新国际博览中心举办。 作为全球三大家电和消费电子领域展会之一&#xff…

一个非常好的美图展示网站整站打包源码,集成了wordpress和开源版ripro主题,可以完美运营。

一个非常好的美图展示网站整站打包源码,集成了wordpress和开源版ripro主题,可以完美运营。 自带了5个多g的美图资源,让网站内容看起来非常大气丰富,可以快速投入运营。 这个代码包,原网站已经稳定运营多年&#xff0…

Linux_生产消费者模型

目录 1、生产消费者模型示意图 2、生产者消费者之间的关系 3、定义交易场所 4、实现生产消费者模型 5、伪唤醒 6、多生产多消费者的实际运用 7、POSIX信号量 7.1 初始化信号量 7.2 销毁信号量 7.3 等待信号量 7.4 发布信号量 8、生产消费的环形队列模型 8.1…

Codeforces Round 942 (Div. 2)

比赛链接:Dashboard - Codeforces Round 942 (Div. 2) - Codeforces A题 翻译中文题面: 一场比赛包含 n 个问题,第 i 个问题的难度预期最多为 bi。已经有 n 个问题的提议,第 i 个问题的难度是 ai。最初,数组 a1,a2,……

安全与便捷并行,打造高效易用的用户支付体验

在当今数字时代,快捷、安全的支付方式已经成为用户日常生活中不可或缺的一部分。不论是在线购物、订阅服务,还是线下消费,用户都期望享受流畅且安全的支付体验。作为开发者,选择适合的支付服务不仅关乎用户体验,更直接…

漏洞预警:Nacos 0day漏洞触发远程代码执行

Nacos即Dynamic Naming and Configuration Service(动态命名与配置服务),是开源的一款服务发现、配置和管理微服务的中间件。 在Nacos中新发现的0day漏洞可以触发远程代码执行,开源网安RASP团队检测并分析出三种类型的攻击&#x…

MySQL学习(13):SQL优化:查看SQL语句性能的方法

1.查看SOL执行频率 MySQL客户端连接成功后,通过如下指令,可以查看当前数据库的insert、update、delete、select的访问频次: show global status like Com_______; #查看全局。后面是7个下划线 使用效果如下: 可以看到各条命令的使用次数。…

android13读取cpu频率,并调整频率

总纲 android13 rom 开发总纲说明 目录 1.前言 2.频率类型 3.获取cpu可以调节的频率 4.获取当前频率 5.设置频率 6.最后我们写个脚本,来实现,可以通过参数获取所有cpu的频率,以及设置最大最小频率 6.1 获取cpu频率 6.2 设置最大cpu频率 6.3 设置最小 7.彩蛋 1.前…

Spring完整知识点汇总一

Spring简介 额外知识点 在之前的学习中我们在Service业务层创建Dao/Mapper数据访问层(持久层)的对象是通过工具类来获取对应Dao/Mapper数据访问层(持久层)的接口代理对象在此处我们不用工具类来获取对应Dao/Mapper数据访问层&…

图论模型-迪杰斯特拉算法和贝尔曼福特算法★★★★

该博客为个人学习清风建模的学习笔记,部分课程可以在B站:【强烈推荐】清风:数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilibili 目录 ​1图论基础 1.1概念 1.2在线绘图 1.2.1网站 1.2.2MATLAB 1.3无向图的…

15现代循环神经网络—GRU与LSTM

目录 1.门控循环单元 GRU关注一个序列门候选隐状态(candidate hidden state)隐状态总结从零开始代码实现代码简洁实现2.长短期记忆网络 LSTM门候选记忆单元(candidate memory cell)记忆单元隐状态代码1.门控循环单元 GRU GRU 是最近几年提出来的,在 LSTM 之后,是一个稍微简…

关于 windows系统中双精度double除法编译优化导商变量不变化(代码调整+volatile) 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/140592209 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软…

Python爬虫(2) --爬取网页页面

文章目录 爬虫URL发送请求UA伪装requests 获取想要的数据打开网页 总结完整代码 爬虫 Python 爬虫是一种自动化工具,用于从互联网上抓取网页数据并提取有用的信息。Python 因其简洁的语法和丰富的库支持(如 requests、BeautifulSoup、Scrapy 等&#xf…

基于IEKF迭代扩展卡尔曼滤波算法的数据跟踪matlab仿真,对比EKF和UKF

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于IEKF迭代扩展卡尔曼滤波算法的数据跟踪matlab仿真,对比EKF和UKF.仿真输出误差收敛曲线和误差协方差收敛曲线。 2.测试软件版本以及运行结果展示 MATLAB2022…

springboot 配置 spring data redis

1、在pom.xml引入父依赖spring-boot-starter-parent&#xff0c;其中2.7.18是最后一版支持java8的spring <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.18</…

助燃新质生产力,魔珐科技亮相IMC2024制造业数字科技大会展示有言AIGC视频工具价值

2024年7月19日&#xff0c;IMC2024第八届制造业数字科技大会在上海盛大开幕&#xff0c;本次大会以《向“智”而行》为主题&#xff0c;250智能制造行业数字化转型企业、行业领军者及实践者共聚一堂&#xff0c;共同助力企业增强技术“硬核力”&#xff0c;为新质生产力蓄势赋能…

buuctf web 第五到八题

[ACTF2020 新生赛]Exec 这里属实有点没想到了&#xff0c;以为要弹shell&#xff0c;结果不用 127.0.0.1;ls /PING 127.0.0.1 (127.0.0.1): 56 data bytes bin dev etc flag home lib media mnt opt proc root run sbin srv sys tmp usr var127.0.0.1;tac /f*[GXYCTF2019]Pin…