Linux 服务service(一)

目录

  • 一、服务入门
    • 1.1 概述
    • 1.2 创建及管理Systemd服务
      • 1.2.1 创建service文件
      • 1.2.2 创建脚本文件
      • 1.2.3 管理Systemd服务
      • 1.2.4 服务输出
    • 1.3 服务文件常用参数
      • 1.3.1 UNIT单元
      • 1.3.2 service单元
      • 1.3.3 install单元
    • 1.4 target文件常用参数
    • 1.5 周期性任务timer
      • 1.5.1 创建timer文件
      • 1.5.2 管理timer文件
      • 1.5.3 timer单元配置选项
  • 二、周期性执行服务crond
    • 2.1 定义
    • 2.2 文件及命令
    • 2.3 格式
    • 2.4 /etc/crontab任务举例

一、服务入门

1.1 概述

  • 服务定义:服务(Service)是指在后台运行的程序或进程,它们通常用于执行特定的任务,如网络服务、日志记录、定时任务等。服务可以由系统在启动时自动运行,也可以根据需要手动启动或停止。
  • 服务文件:Systemd服务单元由.service文件定义,这些文件通常位于/etc/systemd/system/目录下。一个.service文件包含了启动、停止和维护服务所需的指令和配置。
  • 服务文件内容:
    • [Unit]部分:包含服务的元数据和依赖关系。
    • [Service]部分:定义服务的运行参数,如启动命令、工作目录、环境变量等。
    • [Install]部分:定义服务安装时的行为,如服务应该被哪个目标启动。
  • 服务状态
    • 启动(Started):服务正在运行。
    • 停止(Stopped):服务已停止运行。
    • 激活(Active):服务处于活动状态,可能是启动或停止状态

1.2 创建及管理Systemd服务

1.2.1 创建service文件

/etc/systemd/system/目录下创建

  • recordTime.service
    [Unit]
    # 任务描述:任务管理,status中会显示
    Description=记录时间[Service]
    # 服务类型:常规类型
    # 执行命令后系统则认为任务running中,直到用户显式关闭
    Type=simple
    # 服务启动后执行的命令(以下二选一),多语句分号分隔
    # 1、服务执行用户脚本:脚本可用shell,python,C++等编写
    # 2、服务执行系统命令:如 /usr/bin/date > /home/date_receive.txt
    ExecStart=/bin/bash /root/shellFolder/recordTime.sh[Install]
    # 启动后挂载在哪个目标之下
    WantedBy=multi-user.target
    
  • 增加读写权限chmod 644 /etc/systemd/system/recordTime.service

1.2.2 创建脚本文件

/root/shellFolder/目录下

  • recordTime.sh
    #!/bin/bash
    /usr/bin/date >> /home/shellFolder/date_receive.txt
    
  • 修改权限:chmod 700 recordTime.sh

1.2.3 管理Systemd服务

  • 重新加载Systemd配置:systemctl daemon-reload

    在创建或修改服务文件后需要执行

  • 日常操作
    功能命令
    查看已定义的所有服务systemctl list-units --type=target
    启动服务systemctl start recordTime.service
    重启服务systemctl restart recordTime.service
    停止服务systemctl stop recordTime.service
    查看服务状态systemctl status recordTime.service
    设置开机自启systemctl enable recordTime.service
    禁用服务开机自启systemctl disable recordTime.service
    查看服务日志journalctl -u recordTime.service

1.2.4 服务输出

  • 命令行交互
    -># systemctl daemon-reload
    -># systemctl start recordTime.service 
    -># cat date_receive.txt 
    ->Sun Mar 31 19:39:27 CST 2024
    -># systemctl enable recordTime.service 
    ->Created symlink /etc/systemd/system/multi-user.target.wants/recordTime.service → /etc/systemd/system/recordTime.service.
    -># systemctl status recordTime.service 
    ● recordTime.service - 记录时间Loaded: loaded (/etc/systemd/system/recordTime.service; enabled; vendor preset: disabled)Active: inactive (dead)331 19:39:27 systemd[1]: Started 记录时间.331 19:39:27 systemd[1]: recordTime.service: Succeeded.	
    

    重点输出:enable是开机启动,active因为只有一句,执行完就结束了,要是持续的服务,这里就会是active(running),再下面就是执行日志

  • 功能小记:因为开机启动,所以可以用来记录上次开机时间

1.3 服务文件常用参数

1.3.1 UNIT单元

  • 总括
    名称解释
    Description服务描述,说明服务的功能、目的
    Documentation提供服务文档的URL或路径,以便用户和管理员了解如何使用和维护服务
    After指定服务启动的顺序,服务将在列出的单元之后启动。例如,After=network.target表示服务将在网络服务启动后启动。
    Before参After
    Requires指定服务启动所需的其他服务单元。如果这些服务未运行,Systemd将尝试启动它们
    Wants指定服务希望启动的其他服务单元,但不强制要求。这是软依赖,即使这些服务未运行,也不会阻止当前服务的启动
    Refuses指定服务不希望启动的其他服务单元。这是用于防止某些服务启动的软策略
    BindsTo指定服务绑定到的其他服务单元。如果绑定的服务未运行,当前服务不会启动
    PartOf指定服务所属的更大的服务单元组。这通常用于表示服务是某个更大系统的一部分

    以上可接service文件如:recordTime.service或target见1.4

1.3.2 service单元

  • 总括(标记为必选项)
    名称功能
    Type定义服务的类型,例如simple、forking、oneshot、notify或dbus,Type指定了Systemd如何管理服务进程
    ExecStart指定启动服务时执行的命令或脚本。这是服务启动时运行的主要命令
    ExecStop指定停止服务时执行的命令或脚本。这个命令通常用于清理资源或正常关闭服务
    ExecReload指定重新加载服务配置时执行的命令。这通常用于应用服务配置的更改而不停止服务
    Restart定义服务失败时的重启策略,例如on-failure、always、never等
    RestartSec定义服务重启前的等待时间,单位是秒
    TimeoutStartSec定义服务启动超时的时间,单位是秒
    TimeoutStopSec定义服务停止超时的时间,单位是秒
    PIDFile指定服务进程ID文件的路径。Systemd将使用这个文件来跟踪服务的进程ID
    User指定运行服务的用户名称
    Group指定运行服务的用户组
    Environment设置服务运行时的环境变量
    EnvironmentFile指定一个文件,其中的键值对将被设置为服务的环境变量
    WorkingDirectory指定服务进程的工作目录
    StandardInput指定服务的标准输入源,例如tty或null
    StandardOutput指定服务的标准输出目标,例如journal、console或file
    StandardError指定服务的标准错误输出目标,通常与StandardOutput相同
    SuccessExitStatus定义服务进程退出时被认为是成功的退出状态码
    RemainAfterExit如果设置为yes,即使服务的主进程退出,Systemd也会认为服务仍在运行
  • Type详解
    名称解释
    simple这是默认的服务类型,适用于大多数服务。simple 类型的服务通常启动一个单一的进程,并且这个进程会一直运行直到被停止。Systemd会根据ExecStart指令启动服务,并在ExecStop指令指定的命令被执行时停止服务
    oneshot这种类型的服务执行一次性任务,启动后立即退出。Systemd会等待服务进程退出,然后自动认为服务已经启动并完成。oneshot 类型的服务通常用于不需要长时间运行的任务
    idle这种类型的服务在系统空闲时运行。它们通常用于执行不需要实时响应的任务,如系统维护或日志分析
    forking适用于传统的Unix守护进程,这些守护进程在启动时会fork一个子进程,然后父进程立即退出。Systemd会等待父进程退出,然后继续启动其他服务。如果父进程没有退出,Systemd会认为服务启动失败
    notify类似于simple,但服务进程会在完成初始化并准备好接收请求时发送一个通知。这允许Systemd更好地并行化服务的启动过程。如果服务没有发送通知,Systemd会认为服务启动失败

1.3.3 install单元

  • WantedBy
    • 这个指令指定了服务单元文件应该被安装到哪个或哪些.target文件的.wants目录下。当Systemd启动到达指定的.target时,它会查看该.target的.wants目录下的所有服务单元文件,并启动它们。
    • 例如,如果你想让服务在系统进入多用户文本模式时启动,你可以设置WantedBy=multi-user.target

1.4 target文件常用参数

  • .target文件的作用
    • 定义系统状态:.target文件定义了系统启动或运行时应该达到的状态,例如多用户模式、图形界面模式或维护模式。
    • 管理服务依赖:通过Requires和Wants指令,.target文件可以指定一组服务的启动顺序和依赖关系。
    • 控制服务的激活:通过WantedBy指令,.target文件可以控制服务是否应该在系统启动时自动激活
  • 常用总括
    名称解释
    graphical.target代表图形用户界面(GUI)的目标状态。在这个状态下,系统会启动X窗口系统和桌面环境,提供图形界面供用户操作。
    multi-user.target代表多用户文本模式的状态。在这个状态下,系统允许多个用户通过文本终端登录,但不启动图形界面。
    rescue.target用于系统恢复的目标状态。在这个状态下,系统会启动一个最小化的环境,通常用于修复系统问题或恢复丢失的数据。
    emergency.target用于紧急恢复的目标状态。当系统无法正常启动时,可以进入这个状态进行故障排除。在这个状态下,系统通常只提供基本的命令行界面。
    network.target网络服务已完成启动
  • 格式及位置:同service,只是没有[service]项,位置在/etc/systemd/system
  • 操作
    # 列出系统中所有已定义的目标单元
    systemctl list-units --type=target
    # 获取系统当前默认target
    systemctl get-default
    # 设置系统启动默认进入的target
    systemctl set-default multi-user.target
    

1.5 周期性任务timer

1.5.1 创建timer文件

/etc/systemd/system/目录下创建

  • recordTime.timer
    [Unit]
    Description=每五秒触发一次[Timer]
    OnUnitActiveSec=1m[Install]
    WantedBy=timers.target
    

    权限:不需添加权限,systemctl status recordTime.timer,可以直接查看

  • recordTime.service—同1.2.1

    timer\service同名:使用同名是一种方便的方法来管理和调度 systemd 服务
    timer\service异名:需在timer文件的Unit指定service,Unit=recordTime.service

1.5.2 管理timer文件

  • 生效:任务会在系统空闲时执行,不一定是上面写的就准时执行
  • 常规管理操作
    # 查看定时器状态
    systemctl start|stop|restart|status recordTime.timer
    # 查看所有定时器
    systemctl list-timers --all
    # 查看定时器的下一个激活时间
    systemctl show --property=NextElapse recordTime.timer
    

1.5.3 timer单元配置选项

  • 常用选项
    名称解释
    OnBootSec在系统启动后多少秒后执行任务(秒s,分m,时h,天d)
    OnUnitActiveSec在Service单元上次变为active状态后多久后再次执行任务(秒s,分m,时h,天d)
    OnCalendar基于日历时间执行任务,可以是绝对时间或相对时间(如*-*-* 12:00:00表示每天中午12点执行或daily 12:00:00、weekly Mon 03:00:00)
    Persistent如果设置为yes,如果错过启动,会在下次重启时尽快执行任务
    AccuracySec任务执行的最大误差时间,如果任务在这个时间内没有执行,systemd会尽快执行它
    Unit如果timer和service异名,则需要在这里指定,如Unit=recordTime.service

二、周期性执行服务crond

2.1 定义

  • 什么是crond服务?

    crond服务是一个守护进程,它会在后台持续运行,并定期检查是否有需要执行的任务。如果有,它会根据预定的时间规则来执行这些任务。这就像是一个内置的闹钟,到了设定的时间就会触发相应的操作。

  • 特点
    • 最小周期:crond服务会每分钟检索一遍任务列表,修改完配置文件要重载一下
    • 生效:任务会在系统空闲时执行,不一定是写几点几分就准时执行

2.2 文件及命令

  • 文件位置

    • 系统级的crontab文件通常位于/etc/crontab
    • 用户级可指定
  • crontab命令

    crontab -l(list):查看当前用户的crontab文件内容
    crontab -e(edit):编辑当前用户的crontab文件
    crontab -i:删除crontab文件内容,在删除前会提示确认
    crontab -r:删除当前用户的crontab文件
    crontab -u usr:指定用户usr的crontab文件
    
  • systemctl命令

    systemctl start|stop|restart|status cron.service
    # 重新载入配置
    systemctl daemon-reload
    

2.3 格式

  • 格式说明
    # 任务定义:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name  command-to-be-executed
    # command:命令需绝对路径,可以用whereis 命令名 来确定
    
  • 符号说明
    *:代表所有可能的值。
    ,:可以用逗号隔开的值指定一个列表范围。
    -:可以用整数之间的中杠表示一个整数范围。
    /:可以用正斜线指定时间的间隔频率。

2.4 /etc/crontab任务举例

  • 基本格式
    # 固定间隔时间:每1分钟执行一次command	
    * * * * * command
    # 每小时的第3和第15分钟执行
    3,15 * * * * command
    # 在上午8点到11点的第3和第15分钟执行
    3,15 8-11 * * * command
    # 每两天(即每隔一天)的上午8点到11点的第3和第15分钟执行
    3,15 8-11 */2 * * command
    # 每个星期一的上午8点到11点的第3和第15分钟执行
    3,15 8-11 * * 1 command
    
  • 举例
    # 每晚的21:30关机
    30 21 * * * /usr/sbin/shutdown -h now
    # 每月1、10、22日的4:45重启
    45 4 1,10,22 * * /usr/sbin/reboot
    # 每周六、周日的1:10重启
    10 1 * * 6,0 /usr/sbin/reboot
    # 每天18:00至23:00之间第0、30分各记录一次时间
    0,30 18-23 * * * /usr/bin/date > /home/date_receive.txt
    # 每星期六的晚上11 : 00 pm重启
    0 23 * * 6 /usr/sbin/reboot
    # 每两小时(隔一小时)记录一次时间
    * */2 * * * /usr/bin/date > /home/date_receive.txt
    # 晚上11点到早上7点之间,每隔一小时重启一次
    * 23-7/2 * * * /usr/sbin/reboot
    # 每月的4号与每周一到周三的11点重启一次
    0 11 4 * mon-wed /usr/sbin/reboot
    # 一月一号的4点重启一次
    0 4 1 jan * /usr/sbin/reboot
    # 每小时执行一次以下脚本
    0 1 * * * /usr/local/bin/check_server_status.sh
    

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

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

相关文章

第十八章 算法

一、介绍 1.1 什么是算法 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获…

注意力机制篇 | YOLOv8改进之在C2f模块添加级联群体注意力机制CGAttention | CVPR 2023

前言:Hello大家好,我是小哥谈。级联群体注意力机制(Cascading Group Attention)是一种注意力机制,它通过对输入序列进行逐级处理来捕捉不同层次的语义结构。该机制主要由两个关键部分组成:群体注意力和级联过程。在具体实现上,级联群体注意力机制通过构建一个层次结构,…

YOLOv9改进策略 :IoU优化| Inner-IoU基于辅助边框的IoU损失,高效结合 GIoU, DIoU, CIoU,SIoU 等 | 2023.11

💡💡💡本文独家改进:Inner-IoU引入尺度因子 ratio 控制辅助边框的尺度大小用于计算损失,并与现有的基于 IoU ( GIoU, DIoU, CIoU,SIoU )损失进行有效结合,实现高效涨点 💡💡💡适用场景:小目标数据集,涨点近两个点,强烈推荐 《YOLOv9魔术师专栏》将从以下…

第十七章 Kafka

一、特性 - 高吞吐、低延迟 - 高伸缩性 - 持久性、可靠性 - 容错性 - 高并发 通过 O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以 TB 的消息存储也能够保持长时间的稳定性能。 高吞吐量:即使是非常普通的硬件 Kafka 也可以支持每秒数百…

内网靶机~~dc-2

一、信息收集 1.端口扫描: nmap -sV -p 1-10000 10.1.1.4 2.CMS识别 3.目录扫描: dirsearch http://10.1.1.4/ 4.FLAG1 似乎让我们用cewl生成密码字典,并爆破登录。 cewl -w rewl_passwd.txt http://dc-2/index.php/flag/ 总结&#xff…

跑腿小程序|基于微信小程序的跑腿平台小程序设计与实现(源码+数据库+文档)

跑腿平台小程序目录 目录 基于微信小程序的跑腿平台小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2、跑腿任务管理 3、任务类型管理 4、公告信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、…

蓝桥杯算法题——暴力枚举法

先估算这个数小于3的50次方 cnt0 for i in range(50):for j in range(50):for k in range(50):a3**ib5**jc7**kif a*b*c<59084709587505:cnt1 print(cnt-1)#当ijk都为0时&#xff0c;a*b*c1不是幸运数字所以要减去

设计模式(13):模板方法模式

场景&#xff1a; 实现一个功能时&#xff0c;整体步骤很固定&#xff0c;但是&#xff0c;某些部分易变。易变部分可以抽象出来&#xff0c;供子类实现。 开发中常见的场景 非常繁琐&#xff0c;各个框架&#xff0c;类库中都有它的影子&#xff0c;比如常见的有&#xff1…

freeRTOS-day2

使用PWMADC光敏电阻完成光控灯的实验 int adc_val 0; //用于保存ADC采样得到的数值 float volt 0; //用于保存电压值while (1){HAL_ADC_Start(&hadc); //开启ADC采样adc_val HAL_ADC_GetValue(&hadc); //获取ADC采样的值volt adc_val / 4095.0f * 3.3f;…

【通信原理笔记】【三】模拟信号调制——3.2 双边带抑制载波调制(DSB-SC)

文章目录 前言一、DSB-SC的数学表示二、DSB-SC的相干解调三、DSB-SC的性能评价总结 前言 从这一篇开始我们依次介绍几种模拟信号调制的方法&#xff0c;包括其数学表达式&#xff0c;系统框图、解调方式、性能评价等。 一、DSB-SC的数学表示 将 m ( t ) m(t) m(t)作为已调信号…

保研机试算法训练个人记录笔记(六)——模拟

卡拉兹(Cal1atz) 猜想&#xff1a; 对任何一个自然数n, 如果它是偶数&#xff0c;那么把它砍掉一半&#xff1b;如果它是奇数&#xff0c;那么把C3nl) 砍掉一半。&#xff0e; 这样一直反复砍下去&#xff0c;最后一定在某一步得到nl 。卡拉兹在1950 年的世界数学 家大会上公布…

王道c语言-选择排序

选择排序的基本实现步骤&#xff1a; 从待排序序列中找到最小&#xff08;或最大&#xff09;的元素。将找到的最小元素与待排序序列的第一个元素交换位置&#xff0c;即将其放置到已排序序列的末尾。在剩余未排序元素中继续找到最小&#xff08;或最大&#xff09;元素&#…

布隆过滤器:基于哈希函数的原理、应用解析

文章目录 一、引言1、布隆过滤器的概念简介2、布隆过滤器是基于哈希函数的强大工具 二、布隆过滤器基础知识1、布隆过滤器的工作原理2、布隆过滤器的空间效率分析3、布隆过滤器的性能特点 三、布隆过滤器的应用场景1、数据库查询优化2、例子 四、布隆过滤器的实现与优化1、常见…

NFG技术引领电商新潮流:普通商品的高端奢侈品化之路

随着网络技术、移动互联网等科技领域的迅猛进步&#xff0c;电子商务在众多新兴行业中逐渐崭露头角。然而&#xff0c;电子商务的蓬勃发展也带来了产品同质化现象加剧、市场竞争日趋激烈的问题&#xff0c;这使得商品在海量产品中脱颖而出变得愈发困难。值得注意的是&#xff0…

ASTM C629/C629M-22 板岩检测

板岩具有板状构造&#xff0c;由粘土质、粉砂质沉积岩或中酸性凝灰质岩石、沉凝灰岩经轻微变质作用形成&#xff0c;是一种变质岩&#xff0c;主要产于河北一带 板岩具有美观&#xff0c;持久耐用&#xff0c;防滑等优点&#xff0c;是浴室材料的不二选择。 ASTM C629/C629M-…

AI在行业大模型中的机会及爆发赚钱的行业有哪些?

人工智能(AI)正逐渐成为驱动各行业发展的核心力量,尤其是在应用层,AI结合具体细分领域所带来的生产力提升是巨大的。随着技术的不断进步和人口老龄化趋势的加剧,AI将在多个行业中发挥关键作用,为这些行业带来爆发式增长和丰厚的利润。 一、医疗行业:AI辅助诊断的崛起…

Linux:查询类型的命令type

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 type命令是Linux中一个查询类型的命令&#xff0c;它可以查询name是alias别名、keyword关键字、function函数名、builtin内建命令名&#xff08;这很有用&#xff09;或…

Open CASCADE学习|将双曲线转换为B样条曲线

圆锥曲线&#xff08;Conic Section&#xff09;&#xff0c;又称圆锥截线&#xff0c;是二次曲线的一种&#xff0c;它是通过一个平面与一个双圆锥相交而生成的曲线。根据平面与圆锥的相交方式&#xff0c;圆锥曲线可以分为四种基本类型&#xff1a;椭圆、抛物线、双曲线和退化…

redis -Set

一 &#xff0c;Set(集合)介绍 Redis的Set是string类型的无序集合。集合成员是唯一的&#xff0c;这就意味着集合中不能出现重复的数据。Redis 中 集合是通过哈希表实现的&#xff0c;所以添加&#xff0c;删除&#xff0c;查找的复杂度都是O(1)。集合中最大的成员数为 232 - 1…

【粉丝福利社】鸿蒙App开发全流程实战(文末送书-进行中)

&#x1f3c6; 作者简介&#xff0c;愚公搬代码 &#x1f3c6;《头衔》&#xff1a;华为云特约编辑&#xff0c;华为云云享专家&#xff0c;华为开发者专家&#xff0c;华为产品云测专家&#xff0c;CSDN博客专家&#xff0c;CSDN商业化专家&#xff0c;阿里云专家博主&#xf…