如何創建systemd定時任務

来源:https://www.cnblogs.com/Franken-Fran/archive/2018/11/23/timer_make.html
-Advertisement-
Play Games

1. 如何創建一個定時任務,通過systemd系統 <! TOC "1. 如何創建一個定時任務,通過systemd系統" "1.1. systemd中的timer" "1.2. 自定義定時任務" "1.2.1. 具體步驟" "1.2.2. [Timer]區塊屬性詳情" "1.3. 刪除定時器" <! ...


1. 如何創建一個定時任務,通過systemd系統

Linux中,可以使用crontab創建一個定時任務。

首先,創建一個crontab文件,形如

# 每天的6點42分,運行一次spmake腳本
42 6 * * * /home/luzj/bin/spmake

緊接著,執行crontab file即可安裝該文件。之後定時任務即開起

使用crontab -l列出所有在crontab管理下的定時任務,crontab -r xxx刪除定時任務

1.1. systemd中的timer

systemd通過定義一個timer單元來創建一個定時任務。實際上我們需要做兩件事,首先定義一個service單元,
這個service單元定義了我們想定時執行的任務。然後再定義一個timer單元,通過timer單元定義如何定時執行
之前的service單元,比如每1h執行一次、每天5點執行、每個月的16號6點執行等等

1.2. 自定義定時任務

我們自定義一個定時任務——每過30s就向msg.txt輸入當前時間

1.2.1. 具體步驟

首先,創建一個mail.sh腳本.

vim mail.sh

# 內容
#!/bin/bash
echo `date` >> msg.txt

#添加執行許可權
chmod +x mail.sh

我們先執行一遍,bash mail.sh,就會看到當前時間被寫入msg.txt之中了

創建Service單元.進入/etc/systemd/system目錄中,創建mytimer.service文件,

vim mytimer.service

#寫入內容
[Unit]
Description=mytimer service

[Service]
ExecStart=/bin/bash <path>/mail.sh

# 這裡可以不添加[Install]區塊,因為該Service是為Timer單元服務的

之後,啟動Service單元,systemctl start mytimer.service.然後就會看到,當前時間
被寫入到msg.txt之中了

創建Timer單元.同樣的目錄,創建mytimer.timer文件,

vim mytimer.timer

#內容如下
[Unit]
Description=run mail.sh every 10s

[Timer]
OnUnitActiveSec=10s
Unit=mytimer.service

[Install]
WantedBy=multi-user.target

啟動Timer單元.

systemctl daemon.reload
systemctl enable mytimer.timer
systemctl start mytimer.timer

#查看timer運行狀態
systemctl status mytimer.timer
tail -f msg.txt # 查看列印情況,每10s會列印一次,我的實測 時間間隔不是很精確哈
journalctl -f -u mytimer.timer # 查看定時器運行日誌

1.2.2. [Timer]區塊屬性詳情

OnActiveSec:定時器生效後,多少時間開始執行任務
OnBootSec:系統啟動後,多少時間開始執行任務
OnStartupSec:Systemd 進程啟動後,多少時間開始執行任務
OnUnitActiveSec:該單元上次執行後,等多少時間再次執行
OnUnitInactiveSec: 定時器上次關閉後多少時間,再次執行
OnCalendar:基於絕對時間,而不是相對時間執行
AccuracySec:如果因為各種原因,任務必須推遲執行,推遲的最大秒數,預設是60秒
Unit:真正要執行的任務,預設是同名的帶有.service尾碼的單元
Persistent:如果設置了該欄位,即使定時器到時沒有啟動,也會自動執行相應的單元
WakeSystem:如果系統休眠,是否自動喚醒系統

具體可以看官方文檔

1.3. 刪除定時器

systemctl disable mytimer.timer #關閉開機啟動(即刪除目錄鏈接)
systemctl stop mytimer.timer # 關閉單元
systemctl stop mytimer.service

#之後刪除timer 和Service文件

systemctl daemon-reload # 重新載入配置

參考

Systemd 定時器教程-阮一峰


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 可解決: 文本框控制項中的按鈕,DataGridColumnHeader中加入Filter控制項。。。 cs文件中的 附加屬性 + 樣式文件中的 template+控制項 -> visibility , 製作出 XAML文件中<TextBox Controls:TextBoxHelper.ClearTex ...
  • 1.什麼是Docker-Compose 上一章我們講了通過Dockerfile創建鏡像,這在一個小項目中是沒問題的,但如果在一個包含多個項目的情況下,我們每次部署都需要執行多次創建鏡像與運行容器的命令,這樣就比較麻煩,為瞭解決這種情況,Docker-Compose出現了。Docker-Compose ...
  • 1.CC為文本控制項的父類,它繼承為control,所以他是控制項, 2.CP繼承FrameworkElement,所以他是容器,相當於占位符 3.想讓控制項中能包含子控制項就需要用CP,反之用CC就行。(不太嚴謹) 在控制項的Template 屬性中 定義樣式一般會用CP 4.使用它們可以做到控制項無限擴展 ...
  • whereis 查找命令的位置,包括執行文件、源代碼、手冊文件。 此命令的適用範圍:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。 1、語法 whereis [選項] cmd whereis [-bmsu] [-BMS directory... -f] ...
  • 、什麼是運維?什麼是游戲運維? 1)運維是指大型組織已經建立好的網路軟硬體的維護,就是要保證業務的上線與運作的正常, 在他運轉的過程中,對他進行維護,他集合了網路、系統、資料庫、開發、安全、監控於一身的技術 運維又包括很多種,有DBA運維、網站運維、虛擬化運維、監控運維、游戲運維等等 2)游戲運維又 ...
  • 今天運營同事給我說在用ueditor編寫文章的時候上傳圖片報錯,錯誤信息為 , 翻譯過來就是請求實體太大,這是因為伺服器(我們的伺服器是Nginx)對上傳的文件大小是有限制的,我們修改Nginx的配置文件把允許上傳的文件大小配置大一些即可,在nginx.conf的http模塊增加 這是我把上傳文件的 ...
  • 測試 有點點激動 ...
  • ifconfig command not found 請先檢查機器是不是可以聯網,下麵的方法僅適用於可以聯網的機器 輸入ip addr確認ip地址時候設置正常,設置好的如下圖所示,如果沒有獲取到則自己進行設置 檢查sbin目錄是不是存在,直接cd就行 確認ifconfig是不是安裝, 打開 cd /... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...