[Linux]如何將腳本(shell script)轉換到系統管理服務器(systemd service)來運行?

news/2025/2/3 23:08:39 标签: 运维, bash, 嵌入式硬件, ubuntu, 物联网, database, 数据库

[InfluxDB]Monitor Tem. and Volt of RaspberryPi and Send Message by Line Notify

在Linux中,shell腳本(shell script)常用於運行各種自動化的流程,包含API串接,設置和啟動應用服務等等,腳本語法也相對易學易讀,因此頗受大部分使用者的喜愛。但若需要讓shell腳本能長期穩定運行,則建議將shell腳本轉換到系統管理服務器(systemd service)來運行,將有下列幾個優點,使得該服務的運作可有效被systemd管理。

1.Linux系統啟動後,可自動啟動。
2.服務異常退出後,可自動重啟。
3.透過journalctl集中管理該服務的日誌(log),可用於問題測試和偵錯。

上述影片即是一個實際案例,其利用shell腳本將樹莓派的溫度和電壓數值以固定週期傳到influxdb中,同時若溫度過高或電壓過低,則會藉由line notify發出提醒訊息,期望藉由該服務長期監控樹莓派的運作是否穩定,若有異常進程導致溫度過高或電壓過低,則可立刻查閱日誌並及時處理。話不多說,一起來看看如何將該shell腳本轉換到systemd service中。

a.利用nano新增systemd文件
bash">sudo nano /etc/systemd/system/pi_tem_vol_detec.service
b.在該文件中,寫入下列內容
[Unit]
Description=Script to monitor Raspberry Pi voltage and temperature
After=network.target

[Service]
Type=simple
ExecStart=/your_path/pi_tem_vol_detec.sh

[Install]
WantedBy=multi-user.target

其中 /your_path/pi_tem_vol_detec.sh為shell腳本置放的路徑,完成後,儲存該文件並退出。

c.設定該文件的權限,並重新載入systemd,以添加該服務
bash">sudo chmod 644 /etc/systemd/system/pi_tem_vol_detec.service
sudo systemctl daemon-reload
d.啟動該服務(pi_tem_vol_detec.service),並查看狀態
bash">sudo systemctl start pi_tem_vol_detec
sudo systemctl status pi_tem_vol_detec
e.進一步將該服務設定為,開機時自動啟動
bash">sudo systemctl enable pi_tem_vol_detec


http://www.niftyadmin.cn/n/5841105.html

相关文章

Java泛型深度解析(JDK23)

第一章 泛型革命 1.1 类型安全的进化史 前泛型时代的类型转换隐患 代码的血泪史(Java 1.4版示例): List rawList new ArrayList(); rawList.add("Java"); rawList.add(Integer.valueOf(42)); // 编译通过// 灾难在运行时爆发…

为AI聊天工具添加一个知识系统 之75 详细设计之16 正则表达式 之3 正则表达式模板

本文要点 概念图式schema:。处理“我” 立“每一个新提概念的提出都首先是语言的-含糊概念 Notion{ Yes,Unkown,No},然后才是程序的-模糊符号Notation {True,False},最后会是数据的-近似值 Approximation{Good,Fair,…

hive为什么建表,表存储什么

‌Hive建表的主要目的是为了方便管理和查询存储在Hadoop分布式文件系统(HDFS)上的大规模数据。‌ Hive作为一个构建在Hadoop之上的数据仓库工具,主要功能是提供类似SQL的查询语言HiveQL来处理和分析存储在HDFS中的数据。通过建表,…

JavaScript 中的 CSS 与页面响应式设计

JavaScript 中的 CSS 与页面响应式设计 JavaScript 中的 CSS 与页面响应式设计1. 引言2. JavaScript 与 CSS 的基本概念2.1 CSS 的作用2.2 JavaScript 的作用3. 动态控制样式:JavaScript 修改 CSS 的方法3.1 使用 `document.styleSheets` API3.2 使用 `classList` 修改类3.3 使…

Java创建对象有几种方式?

大家好,我是锋哥。今天分享关于【Java创建对象有几种方式?】面试题。希望对大家有帮助; Java创建对象有几种方式? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Java 中,创建对象有几种常见的方式,具体如下&…

JVM运行时数据区域-附面试题

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域 有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而一直存在,有些区域则是 依赖用户线程的启动和结束而建立和销毁。 1. 程序计…

Java 泛型<? extends Object>

在 Java 泛型中&#xff0c;<? extends Object> 和 <?> 都表示未知类型&#xff0c;但它们在某些情况下有细微的差异。泛型的引入是为了消除运行时错误并增强类型安全性&#xff0c;使代码更具可读性和可维护性。 在 JDK 5 中引入了泛型&#xff0c;以消除编译时…

unity免费资源2025-2-2

https://assetstore.unity.com/packages/vfx/particles/fire-explosions/fireworks-effect-2d-227132 零元购 CARTOONVFX9X