ubuntu设置关机时自动执行任务

2023-05-16

背景说明

本机环境:ubuntu16.04
需求:本机关机时调用远程服务用来记录日志等操作

systemd说明

ubuntu16.04采用的是systemd作为系统管理的子系统,关于systemd的更多说明,可以参看
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html
http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html
值得注意的是systemctl命令和journalctl命令实在是太好用了

详细

我们需要的是系统关机自动启动,这个时候有两种选择,假设我们的执行脚本是/usr/local/bin/cleanup.sh

  • option1: 将执行脚本直接放在/lib/systemd/system-shutdown/目录下
  • option2: 在/lib/systemd/system/目录下添加cleanup.service这样一个systemd的配置文件,去调用cleanup.sh

根据说明 /lib/systemd/system-shutdown/目录下的脚本的执行时机会非常靠后,文件系统已经挂载只读,网络服务可能也已经关闭,仅仅在系统halt之前。所以这个时候执行很多任务都是受限的。这样的话,我们选择option2来完成我们的任务

所以我们新建 /lib/systemd/system/cleanup.service如下

[Unit]
Description=Run command at shutdown
# 假设要执行的命令依赖网络
Requires=network.target
DefaultDependencies=no
Conflicts=reboot.target
Before=shutdown.target

[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/bin/bash /usr/local/bin/cleanup.sh

[Install]
WantedBy=multi-user.target

解释一下,由于其DefaultDependencies=no,这个脚本开机就会启动(enable之后),脚本在启动的时候调用/bin/true什么也不做 ,然后在系统调用shutdown.target的时候,会执行退出操作,就是我们希望的运行脚本/bin/bash /usr/local/bin/cleanup.sh。也就达到了我们希望的效果。

然后重新加载systemd配置

sudo  systemctl daemon-reload 

链接service以使其开启启动

sudo systemctl enable cleanup.service

本次不关机手动启动service(当然如果你重启电脑了当然就不需要这一步了,会自动启动)

sudo systemctl start cleanup.service

这个时候sudo poweroff应该就能正确的执行你的叫脚本了
ps:如果有问题,可以通过journalctl命令查看哦

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu设置关机时自动执行任务 的相关文章

随机推荐

  • 登录 注册 servlet基础

    工具类 页面与数据库的交换 span class token keyword package span org span class token punctuation span lizhenhua span class token pun
  • 解决Ubuntu开机之后不显示桌面图标,只显示桌面文件的问题

    Ubuntu开机之后不显示桌面图标 xff08 指左侧那一栏 xff09 xff0c 但桌面上的文件可以使用 xff0c 鼠标可以使用 鼠标右键 gt 打开终端 xff1b xff08 如果鼠标不能使用 xff0c 按ctl 43 alt
  • yii2中登录后跳转回登录前请求的页面

    yii2中登录后跳转回登录前请求的页面 作者 php 发布时间 2017 06 16 浏览 1030次 转发请备注原文地址 xff1a www niwoxuexi com blog php article 158 html yii2中登录后
  • Gateway

    Gateway SpringCloud微服务网关组件 一 Spring Cloud Gateway简介 1 为什么要用Gateway xff1f 在微服务架构中 xff0c 通常一个系统会被拆分为多个微服务 xff0c 微服务之间的调用可以
  • Android(安卓)时间戳和日期之间的转化

    注 xff1a 转发请注明原地址 xff1a https www niwoxuexi com blog android article 170 在Android开发过程中 xff0c 经常会遇到日期的各种格式转换 xff0c 主要使用Sim
  • 如何判断Activity是否在前台显示

    转发请备注原文地址 xff1a https www niwoxuexi com blog android00 article 223 html 我们在Android开发过程中 xff0c 经常会判断Activity是否在前台显示 xff0c
  • Android 获取cache缓存的目录路径

    转发请备注原文地址 xff1a https www niwoxuexi com blog android00 article 224 html Android开发中 xff0c 有时需要知道cache缓存的路径 我写了一个静态类 xff0c
  • objc[8715]: Class JavaLaunchHelper is implemented in both...

    在Mac上 xff0c 升级IntelliJ Idea 2017 01后 xff0c 运行的时候出现了一个红色的警告 xff1a objc 8715 Class JavaLaunchHelper is implemented in both
  • mac上使用dex2jar遇到的权限问题的解决

    本文来自 xff1a https www niwoxuexi com blog android article 235 html 摘要 在dex2jar目录下执行sudo sh d2j dex2jar sh classes dex时报错如下
  • Android Studio将module变为library

    本文来源你我学习网 xff1a 地址 https www niwoxuexi com blog android article 244 html 我们在开发的时候如在在Android Studio中的module打包成library方便模块
  • Navicat Premium实现mysql数据库备份/还原

    转发请备注原文地址 xff1a https www niwoxuexi com blog php article 161 htm Navicat Premium 是一个非常好用的数据库 xff08 支持 MySQL SQLite Oracl
  • 在vue中获取dom元素

    转发请备注原文链接地址 xff1a https www niwoxuexi com blog web article 307 html 在vue中经常会通过js操作dom对象 xff0c 可以通过给标签添加ref属性实现 xff0c 下面通
  • HIVE总结

    一 xff1a hive作用 Hive是基于Hadoop的一个数据仓库工具 xff0c 可以将结构化的数据文件映射为一张表 xff0c 并提供类SQL 查询功能 Hive本质 xff1a 将HQL转化成MapReduce程序 xff08 1
  • 微软2014校园招聘笔试题

  • Seata

    Seata 微服务分布式事务组件 一 什么是分布式事务 1 什么是事务 事务指的是一个操作单元 xff0c 在这个操作单元中的所有操作最终要保持一致的行为 xff0c 要么所有操作都成功 xff0c 要么所有的操作都被撤销 2 本地事务 本
  • 测试用例优先级与三轮测试的结合

    测试用例优先级与三轮测试的结合 发布时间 2009 7 10 15 01 作者 meizhu 来源 Taobao QA Team 字体 小 中 大 上一篇 下一篇 打印 我要投稿 每周一问 xff0c 答贴有奖 测试用例优先级 三轮测试 x
  • Windows 10 家庭中文版,电脑文件夹背景、Word背景全变成黑色的解决方案

    电脑桌面空白处点击鼠标右键 gt 个性化 gt 颜色 xff1b 在 选择颜色 下拉菜单中选择 浅色 选项 这样 xff0c 电脑文件夹的背景和其他界面颜色就都回归了正常的亮白色
  • AbstractApplicationContext.refresh()方法

    refresh public void refresh throws BeansException IllegalStateException synchronized this startupShutdownMonitor 准备好刷新上下
  • HBase StoreFile原理总结

    HBase StoreFile原理总结 1 StoreFile是什么 在hbase架构设计中 xff0c 本身hbase基于hdfs进行数据存储 同时为了提升效率 xff0c 数据会有一个memstore block cache来做数据缓存
  • ubuntu设置关机时自动执行任务

    背景说明 本机环境 xff1a ubuntu16 04 需求 本机关机时调用远程服务用来记录日志等操作 systemd说明 ubuntu16 04采用的是systemd作为系统管理的子系统 xff0c 关于systemd的更多说明 xff0