Linux--编写系统服务脚本

       编写一个名为myprog的系统服务脚本,通过位置变量s1指定的start、stop、restart、status控制参数,分别用来启动、停止、重启sleep进程,以及查看sleep进程的状态。其中,命令sleep用来暂停指定秒数的时间,这里仅用做测试,在实际运维工作中应将sleep改为相应后台服务的控制命令序列。

[root@node01 ~]# vim myprog
#!/bin/bash
case "$1" in
start)echo -n "正在启动sleep服务..."if sleep 7200 &then                         //在后台启动sleep进程echo "OK"fi;;
stop)echo -n "正在停止sleep服务..."pkill "sleep" &> /dev/null
echo "OK"                     //停止sleep进程;;
status)if pgrep "sleep" &>/dev/null ; then  //判断并提示sleep进程状态echo "sleep服务已经启动."elseecho "sleep服务已经停止."fi;;
restart)                     //先停止、再启动服务$0 stop$0 start;;
*)                           //默认显示用法信息echo "用法:$0 {start|stop|status|restart}"
esac

[root@node01 ~]# chmod +x myprog  //添加执行权限
[root@node01 ~]# ./myprog start

[root@node01 ~]# ./myprog status

[root@node01 ~]# ./myprog stop

[root@node01 ~]# ./myprog reload  //未提供此参数,按默认处理

       在Linux系统中,源码软件包编译安装后提供的服务控制脚本使用了 case分支语句;也有一些 源码包没有提供服务控制脚本,编译安装后可参照上例自行编写服务控制脚本,平时控制各种系统 服务时,提供的start、stop、restart等位置参数,正是由case语句结构来识别并完成相应操作的,有 兴趣的同学可自行查阅这些脚本内容。

     若要将myprog 服务交给 systemd来管理,还需要在/lib/systemd/system 目录下添加相应的 myprog.service配置文件。

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

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

相关文章

【数据结构和算法】---栈和队列的互相实现

目录 一、用栈实现队列1.1初始化队列1.2模拟入队列1.3模拟出队列1.4取模拟的队列头元素1.5判断队列是否为空 二、用队列实现栈2.1初始化栈2.2模拟出栈2.3模拟入栈2.4取模拟的栈顶元素2.5判读栈是否为空 一、用栈实现队列 具体题目可以参考LeetCode232. 用栈实现队列 首先要想到…

SpringMVC:整合 SSM 下篇

文章目录 SpringMVC - 05整合 SSM 下篇一、设计页面1. 首页:index.jsp2. 展示书页面:showBooks.jsp3. 增加书页面:addBook.jsp4. 修改书页面:updateBook.jsp5. 总结 二、控制层1. 查询全部书2. 增加书3. 修改书4. 删除书5. 搜索书…

【华为机试】2023年真题B卷(python)-单词接龙

一、题目 题目描述: 单词接龙的规则是:可用于接龙的单词首字母必须要前一个单词的尾字母相同; 当存在多个首字母相同的单词时,取长度最长的单词,如果长度也相等,则取字典序最小的单词;已经参与接…

由Hello World的世界看世界

前言 以前总是自诩一门自己比较有天赋的学科,每每看到一些文章和句子,眼前就能浮现时态、句型、词组、惯用法等一些概念,相当于重复学习,反复强化。 对于C编程语言中,看到简单的不能再简单的Hello World程序示例&…

SpringMVC系列之技术点定向爆破二

SpringMVC的运行流程 客户端发送请求 tomcat接收对应的请求 SpringMVC的核心调度器DispatcherServlet接收到所有请求 请求地址与RequestMapping注解进行匹配,定位到具体的类和具体的处理方法(封装在Handler中) 核心调度器找到Handler后交…

成功案例分享:物业管理小程序如何助力打造智慧社区

随着科技的进步和互联网的普及,数字化转型已经渗透到各个行业,包括物业管理。借助小程序这一轻量级应用,物业管理可以实现线上线下服务的无缝对接,提升服务质量,优化用户体验。本文将详细介绍如何通过乔拓云网设计小程…

vue 全局定时更新 轮询

首先需要在最外层的父组件定义一个刷新的时间 初始值为nulll, 在定义一个新时间用于监听状态的变化。 data () {return {dataTime: 0,inverterMonTimer: null, // 设置刷新时间 2 分钟一次}},然后再钩子函数中执行定义封装的方法 mounted(){this.getIn…

LeetCode刷题--- 目标和

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 http://t.csdnimg.cn/6AbpV 数据结构与算法 http://t.csdnimg.cn/hKh2l 前言:这个专栏主要讲述递归递归、搜…

ECMAScript基础入门

ECMAScript,通常简称为 ES,是标准化的JavaScript语言规范。以下是一些ECMAScript基础入门的关键概念和特性: 1. **变量**: - ECMAScript是弱类型语言,这意味着你不需要预先声明变量的类型,变量可以存储…

TOGAF—架构(Architecture)项目管理—详细指导意见

本节描述了开发企业架构时要使用的详细项目管理方法。本节的目标受众是已经熟悉 TOGAF 标准并领导架构项目的企业架构师。 本节分为几个小节,这些小节描述了以下方法: 架构 项目启动,包括 ADM 阶段 A 的项目管理活动以及项目管理方法的项目启动和“启动”活动体系结构 项目…

设计模式之-建造者模式通俗易懂理解,以及建造者模式的使用场景和示列代码

系列文章目录 设计模式之-6大设计原则简单易懂的理解以及它们的适用场景和代码示列 设计模式之-单列设计模式,5种单例设计模式使用场景以及它们的优缺点 设计模式之-3种常见的工厂模式简单工厂模式、工厂方法模式和抽象工厂模式,每一种模式的概念、使用…

基于SSM的剧本杀预约系统(有报告)。Javaee项目。ssm项目。

演示视频: 基于SSM的剧本杀预约系统(有报告)。Javaee项目。ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring Sp…

easyrecovery数据恢复软件15安装下载免注册版本下载

说起数据恢复软件,相信没有小伙伴不知道easyrecovery这个软件吧,该软件具有快捷、高效、便捷的特点,且提供的功能也非常全面,不仅可以恢复各样被删除的文件、视频、图片等,还可以支持SD卡数据恢复,TF卡等各…

系列一、MQ简介

一、MQ简介 1.1、概述 MQ(Message Queue),是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息(消息即数据,一般消息的体量不会很大)生产、存储、消费全过程的API软…

第11章 GUI Page421~422 步骤六 支持文字

运行效果: 关键代码: 新增头文件: //item_text.hpp #ifndef ITEM_TEXT_HPP_INCLUDED #define ITEM_TEXT_HPP_INCLUDED #include "item_i.hpp"class TextItem : public IItem { public:TextItem(): _startPosition(0, 0), _endPos…

shardingjdbc增加动态数据源(用于解决其不支持的SQL等)

1.配置文件 spring: #动态数据源引入dynamic:strict: truedatasource:ds:driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourceurl: ${secret.datasource.url}username: ${secret.datasource.username}password: ${secret.datasource.pa…

百马百担c语言编程

以下是一个百马百担问题的C语言编程实现&#xff1a; #include <stdio.h>int main() {int n, m, k;scanf("%d%d%d", &n, &m, &k);int a[n], b[m];for (int i 0; i < n; i) {scanf("%d", &a[i]);}for (int i 0; i < m; i) {…

记录每日LeetCode 1962.移除石子使总数最小 Java实现

题目描述&#xff1a; 给你一个整数数组 piles &#xff0c;数组 下标从 0 开始 &#xff0c;其中 piles[i] 表示第 i 堆石子中的石子数量。另给你一个整数 k &#xff0c;请你执行下述操作 恰好 k 次&#xff1a; 选出任一石子堆 piles[i] &#xff0c;并从中 移除 floor(pile…

【华为鸿蒙系统学习】- 如何利用鸿蒙系统进行App项目开发|自学篇

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 创建鸿蒙第一个App项目 项目创建 工程目录区 预览区 运行Hello World 基本工程目录 ws:工…

信号与槽QT4和QT5的区别

信号与槽QT4和QT5的区别 Qt4 connect(btn, SIGNAL(clicked()), this, SLOT(close()));在 Qt 4 中&#xff0c;信号和槽的连接使用了一种不同的语法&#xff0c;这是 Qt 框架特有的&#xff0c;利用了 Qt 的元对象系统&#xff08;Meta-Object System&#xff09;。Qt 4 中连接…