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

news2024/11/25 11:00:42

文章目录

    • 知识点
    • 实验
      • 一、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.coloradmin.cn/o/1938983.html

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

相关文章

本地部署 mistralai/Mistral-Nemo-Instruct-2407

本地部署 mistralai/Mistral-Nemo-Instruct-2407 1. 创建虚拟环境2. 安装 fschat3. 安装 transformers4. 安装 flash-attn5. 安装 pytorch6. 启动 controller7. 启动 mistralai/Mistral-Nemo-Instruct-24078. 启动 api9. 访问 mistralai/Mistral-Nemo-Instruct-2407 1. 创建虚拟…

[图解]《分析模式》漫谈16-“我用的”不能变成“我的”

1 00:00:00,720 --> 00:00:02,160 今天,我们来说一下 2 00:00:02,170 --> 00:00:04,850 “我用的”不能变成“我的” 3 00:00:04,860 --> 00:00:11,390 《分析模式》的前言 4 00:00:12,260 --> 00:00:13,410 有这么一句话 5 00:00:14,840 --> 0…

postman接口测试实战篇

击杀小游戏接口测试 接口测试简单介绍击杀小游戏代码下载单接口测试(postman)接口关联并参数化接口测试简单介绍 首先思考两个问题:1.接口是什么?2.接口测试是什么? 1.我们总是把接口想的很复杂,其实呢,它就是一个有特定输入和输出参数的交互逻辑处理单元,它不需要知…

学并发编程前需要明确的一些基础知识

线程和进程的区别 在计算机科学中,线程和进程是两个非常重要的概念。虽然它们常常被一起提到,但它们实际上有很大的不同。作为一个开发者,我在日常工作中经常需要区分这两者,以便更好地进行资源管理和优化。 进程与线程的基本定…

如何解决微服务下引起的 分布式事务问题

一、什么是分布式事务? 虽然叫分布式事务,但不是一定是分布式部署的服务之间才会产生分布式事务。不是在同一个服务或同一个数据库架构下,产生的事务,也就是分布式事务。 跨数据源的分布式事务 跨服务的分布式事务 二、解决方…

华为机试HJ60查找组成一个偶数最接近的两个素数

华为机试HJ60查找组成一个偶数最接近的两个素数 题目: 想法: 构建一个判断是否为素数的函数,再构建一个函数输出构成输入数值相差最小的两个素数。为了保证两个素数相差最小,从输入数值的二分之一处开始判断,遍历得到…

用Python写一个视频采集脚本,对某网站进行批量采集

最近某牙上又出现一批高质量视频&#xff0c;听说删的很快&#xff0c;还好我会Python&#xff0c;赶紧采集下来保存&#xff01; 准备工作 环境使用 Python 3.10 解释器 Pycharm 编辑器 模块使用 requests >>> 数据请求模块 re <正则表达式模块> os <文…

HW行动在即,邮件系统该怎么防守?

1. 什么是HW行动&#xff1f; HW行动是一项由公安部牵头&#xff0c;旨在评估企事业单位网络安全防护能力的活动&#xff0c;是国家应对网络安全问题所做的重要布局之一。 具体实践中&#xff0c;公安部组织攻防红、蓝两队&#xff08;红队为攻击队&#xff0c;主要由“国家队…

【漏洞复现】Netgear WN604 downloadFile.php 信息泄露漏洞(CVE-2024-6646)

0x01 产品简介 NETGEAR WN604是一款由NETGEAR&#xff08;网件&#xff09;公司生产的无线接入器&#xff08;或无线路由器&#xff09;提供Wi-Fi保护协议&#xff08;WPA2-PSK, WPA-PSK&#xff09;&#xff0c;以及有线等效加密&#xff08;WEP&#xff09;64位、128位和152…

面向初学者和专家的 40 大机器学习问答(2024 年更新)

面向初学者和专家的 40 大机器学习问答(2024 年更新) 一、介绍 机器学习是人工智能的重要组成部分,目前是数据科学中最受欢迎的技能之一。如果你是一名数据科学家,你需要擅长 python、SQL 和机器学习——没有两种方法。作为 DataFest 2017 的一部分,我们组织了各种技能测…

正则表达式(Ⅰ)——基本匹配

学习练习建议 正则表达式用途非常广泛&#xff0c;各种语言中都能见到它的身影&#xff08;js&#xff0c;java&#xff0c;mysql等&#xff09; 正则表达式可以快读校验/生成/替换符合要求的模式的字符串&#xff0c;而且语法通俗易懂&#xff0c;所以应用广泛 学习链接&am…

php随机海量高清壁纸系统源码,数据采集于网络,使用很方便

2022 多个分类随机海量高清壁纸系统源码&#xff0c;核心文件就两个&#xff0c;php文件负责采集&#xff0c;html负责显示&#xff0c;很简单。做流量工具还是不错的。 非第三方接口&#xff0c;图片数据采集壁纸多多官方所有数据&#xff01; 大家拿去自行研究哈&#xff0…

WEB前端09-前端服务器搭建(Node.js/nvm/npm)

前端服务器的搭建 在本文中&#xff0c;我们将介绍如何安装和配置 nvm&#xff08;Node Version Manager&#xff09;以方便切换不同版本的 Node.js&#xff0c;以及如何设置 npm&#xff08;Node Package Manager&#xff09;使用国内镜像&#xff0c;并搭建一个简单的前端服…

Merge-On-Read

基本介绍 Iceberg的Merge-On-Read Merge-On-Read&#xff0c;顾名思义&#xff0c;就是在读取的时候进行合并&#xff0c;是与Copy-On-Write相反的一种模式 在Iceberg中&#xff0c;Merge-On-Read同样用于行级更新&#xff0c;整体过程如下 当更新数据时&#xff0c;Iceber…

巴黎奥运会倒计时 一个非常不错的倒计时提醒

巴黎奥运会还有几天就要开幕了&#xff0c;大家应该到处都可以看到巴黎奥运会的倒计时&#xff0c;不管是电视上&#xff0c;还是网络里&#xff0c;一搜索奥运会&#xff0c;就会看到。倒计时其实是一个我们在生活中很常用的一个方法&#xff0c;用来做事情的提醒&#xff0c;…

【学习笔记】无人机系统(UAS)的连接、识别和跟踪(九)-无人机区域地面探测与避让(DAA)

引言 3GPP TS 23.256 技术规范&#xff0c;主要定义了3GPP系统对无人机&#xff08;UAV&#xff09;的连接性、身份识别、跟踪及A2X&#xff08;Aircraft-to-Everything&#xff09;服务的支持。 3GPP TS 23.256 技术规范&#xff1a; 【免费】3GPPTS23.256技术报告-无人机系…

【CSS in Depth 2 精译_020】3.3 元素的高度

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…

Linux:Linux进程概念

目录 前言 1. 冯诺依曼体系结构 2. 操作系统 2.1 什么是操作系统 3. 进程 3.1 基本概念 3.2 描述进程——PCB 3.3 进程和程序的区别 3.4 task_struct-PCB的一种 3.5 task_struct的内容分类 4. 查看进程 4.1 通过系统文件查看进程 4.2 通过ps指令查看进程 4.3 …

Redis7(二)Redis持久化双雄

持久化之RDB RDB的持久化方式是在指定时间间隔&#xff0c;执行数据集的时间点快照。也就是在指定的时间间隔将内存中的数据集快照写入磁盘&#xff0c;也就是Snapshot内存快照&#xff0c;它恢复时再将硬盘快照文件直接读回到内存里面。 RDB保存的是dump.rdb文件。 自动触发…

记录些Spring+题集(3)

百万QPS下热点数据的收集方案 在高并发场景下&#xff0c;如京东、淘宝的秒杀活动开始时候&#xff0c;会有很多的用户同时抢购秒杀商品&#xff0c;由于同一个场次成百上千种商品参与秒杀活动&#xff0c;但是热点的商品往往就只有那么几十个左右&#xff0c;此时系统的90%的…