【shell脚本】将Shell脚本转换为Systemd服务:轻松实现自动化管理

news/2024/12/25 2:03:24/文章来源:https://www.cnblogs.com/o-O-oO/p/18521039

原创 青菜浪人

背景介绍

从 Ubuntu 17.10 开始,/etc/rc.local 文件不再默认存在于系统中,因为 systemd 已成为主要的初始化系统。如果需要在系统启动时自动执行某些命令,可以通过编写 Shell 脚本并将其封装为一个 systemd 服务来实现这一操作。

实现方法

这里以一个简单的脚本为例,将需要开机自动执行的命令写入脚本文件内,赋予可执行权限。

脚本内容如下:

#!/usr/bin/env bash
sudo ip route del default via 192.168.1.254
sudo ip route add 192.168.101.0/24 via 192.168.1.254 dev ens33

该脚本用于删除和添加路由,赋予脚本可执行权限

sudo chmod +x /usr/local/bin/routeadd.sh

创建 systemd 文件

文件存放位置:

/etc/systemd/system/xx.service

写入以下内容,在 ExecStart 中指定脚本存放位置

[Unit]
Description=routeadd
After=network.target[Service]
Type=oneshot
ExecStart=/usr/local/bin/routeadd.sh
Restart=on-failure[Install]
WantedBy=multi-user.target

修改完成后赋予自定义文件可执行权限

sudo chmod +x  /etc/systemd/system/xx.service

最后,设置为开机自启动即可

systemctl enable routeadd.service

查看开机启动项,可以看到自定义的服务已经设置成功了

PS:如果当前用户为普通用户,需要注意脚本内容中是否有需要使用 sudo 命令的部分。如果有,需提前为该用户配置免密执行 sudo 的权限,否则脚本将无法正确执行。

配置用户免密执行sudo

为了使普通用户能够免密执行自定义脚本并实现开机自启动,需要修改 /etc/sudoers 文件,添加相应的免密执行命令及其对应的用户

#配置这个是对sudo组中的所有用户生效
%sudo  ALL=(ALL:ALL) ALL
%sudo  ALL=(ALL:ALL)  NOPASSWD:/usr/sbin/ip,/usr/bin/systemctl#如只需要对单独的用户生效,则注释掉%sudo该行,添加以下内容即可,test为用户名
test  ALL=(ALL:ALL) ALL
test  ALL=(ALL:ALL)  NOPASSWD:/usr/sbin/ip,/usr/bin/systemctl

参考🔗

https://mp.weixin.qq.com/s/z84m1ESgZJyyMqG6HpaWqw

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

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

相关文章

学期2024-2025-1 学号20241424 《计算机基础与程序设计》第7周学习总结

学期2024-2025-1 学号20241424 《计算机基础与程序设计》第7周学习总结 作业信息 |这个作业属于2024-2025-1-计算机基础与程序设计)| |-- |-- | |这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01| |这个作业的目标|参考上面的学习总结模板,把学习过…

鸿蒙开发案例:直尺

【1】引言(完整代码在最后面) 本文将通过一个具体的案例——创建一个横屏显示的直尺应用,来引导读者了解鸿蒙应用开发的基本流程和技术要点。 【2】环境准备 电脑系统:windows 10 开发工具:DevEco Studio NEXT Beta1 Build Version: 5.0.3.806 工程版本:API 12 真机:Mat…

2024-三叶草安全技术小组第十五届极客大挑战 wp

Crypto 1.凯撒加密 YEI{CKRIUSK_ZU_2024_MKKQ_INGRRKTMK} 6位 SYC{WELCOME_TO_2024_GEEK_CHALLENGE} 2.RSA 原文: from Crypto.Util.number import bytes_to_long, getPrime from secret import flag p = getPrime(128) q = getPrime(128) n = p*q e = 65537 m = bytes_to_lon…

GPT 1-3 简单介绍

GPT-1 简介 2018年6月,OpenAI公司发表了论文"Improving Language Understanding by Generative Pretraining"(用生成式预训练提高模型的语言理解能力), 推出了具有 1.17亿个参数的GPT-1(Generative Pre-training,生成式预训练)模型。 GPT-1 采用 传统的语言模型方…

基于Java+SpringBoot+Mysql实现的快递柜寄取快递系统功能实现八

三、系统部分功能描述公告信息业务逻辑层Service、快递取出记录信息业务逻辑层Service、预约物品取出信息业务逻辑层Service、短信发送信息业务逻辑层Service、关于我们控制器Controller、后台用户信息控制器Controller、 快递员信息控制器Controller、物品类型控制器Controlle…

转存——Quartus II FPGA程序仿真运行时出现错误“error occurred during modelsim simulation”的解决方法

起因 使用Quartus II软件进行FPGA程序仿真,运行时出现错误“error occurred during modelsim simulation”,上网查询解决方法,找了很久都没找到,最后在一个CSDN博客的评论里找到解决方法。 现将解决方法转存如下。 错误示例解决步骤 1.依次点击simulation,option2.依次点击…

Android Studio启动安卓模拟器失败,出现The emulator process for AVD Medium_Phone_API_35 has terminated.

前言 软件版本已安装的SDK Tools包。Android Studio安装设置Proxy代理问题。可在此处设置代理,可在本窗口的左下角的Check Connection处进行检测链接的有效性。 也可以查看以下地址,设置代理的地址:阿里云Android仓库 清华大学开源软件镜像站模拟器问题如果你在这里运行安卓…

MyBatis-Spring中MyBatis概要流程

一、初始化SqlSessionFactory 核心流程 核心使用到了SqlSessionFactoryBean的afterPropertiesSet、getObject方法 afterPropertiesSet:用于初始化并封装数据 getObject:用于注入DefaultSqlSessionFactory对象到容器中 详情逻辑 一、在将SqlSessionFactoryBean放在IOC容器过程…

DP杂题专练

前言 DP 方面太菜了,要多练习,多思考,多做好题。 摘花生Hello Kitty想摘点花生送给她喜欢的米老鼠。 她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。 地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上…

基于Axure,对抖音直播,淘宝直播和b站直播的对比分析

设计思路 一、竞品分析 1.竞品选择 淘宝直播,抖音直播,b站直播 2.产品定位对比 2.1搜索指数:从2024年年初到2024年10月底,不难看出抖音直播相较于淘宝和b站直播来说,搜索指数更加的高昂,所带来的流量数据也更多。 抖音直播(绿色线)整体搜索量最高,日均值为2,694,且在…

基于Java+SpringBoot+Mysql实现的快递柜寄取快递系统功能实现七

二、主要技术: 2.1 SpringBoot技术SpringBoot是基于Spring框架的一个开发框架,旨在简化Spring应程序的搭建和开发过程以下是关于SpringBoot技术的一些主要特点和优势: SpringBoot提供了许多自动配置的功能,可以根据的依赖和需要自动配置应程序所需的环境,大大少了开发人员…

学期2024-2025-1 学号20241306 《计算机基础与程序设计》第6周学习总结

学期(如2024-2025-1) 学号(如:20241300) 《计算机基础与程序设计》第X周学习总结 作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP))这个作业要求在哪里 [2024-2025-1计算机基础与程序设计第6周作…