成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在Linux上使用systemd設置定時器

系統 Linux 系統運維
學習使用 systemd 創建啟動你的游戲服務器的定時器。定時器增加了另一種啟動服務的方式,基于……時間。盡管與定時任務很相似,但 systemd 定時器稍微地靈活一些。讓我們看看它是怎么工作的。

[[248426]]

學習使用 systemd 創建啟動你的游戲服務器的定時器。

之前,我們看到了如何手動的在開機與關機時在啟用某個設備時在文件系統發生改變時 啟用與禁用 systemd 服務。

定時器增加了另一種啟動服務的方式,基于……時間。盡管與定時任務很相似,但 systemd 定時器稍微地靈活一些。讓我們看看它是怎么工作的。

“定時運行”

讓我們展開本系列前兩篇文章你所設置的 Minetest 服務器作為如何使用定時器單元的***個例子。如果你還沒有讀過那幾篇文章,可以現在去看看。

你將通過創建一個定時器來“改進” Minetest 服務器,使得在服務器啟動 1 分鐘后運行游戲服務器而不是立即運行。這樣做的原因可能是,在啟動之前可能會用到其他的服務,例如發郵件給其他玩家告訴他們游戲已經準備就緒,你要確保其他的服務(例如網絡)在開始前完全啟動并運行。

最終,你的 minetest.timer 單元看起來就像這樣:

  1. # minetest.timer
  2. [Unit]
  3. Description=Runs the minetest.service 1 minute after boot up
  4.  
  5. [Timer]
  6. OnBootSec=1 m
  7. Unit=minetest.service
  8.  
  9. [Install]
  10. WantedBy=basic.target

一點也不難吧。

如以往一般,開頭是 [Unit] 和一段描述單元作用的信息,這兒沒什么新東西。[Timer] 這一節是新出現的,但它的作用不言自明:它包含了何時啟動服務,啟動哪個服務的信息。在這個例子當中,OnBootSec 是告訴 systemd 在系統啟動后運行服務的指令。

其他的指令有:

  • OnActiveSec=,告訴 systemd 在定時器啟動后多長時間運行服務。
  • OnStartupSec=,同樣的,它告訴 systemd 在 systemd 進程啟動后多長時間運行服務。
  • OnUnitActiveSec=,告訴 systemd 在上次由定時器激活的服務啟動后多長時間運行服務。
  • OnUnitInactiveSec=,告訴 systemd 在上次由定時器激活的服務停用后多長時間運行服務。

繼續 minetest.timer 單元,basic.target 通常用作后期引導服務late boot services同步點synchronization point。這就意味著它可以讓 minetest.timer 單元運行在安裝完本地掛載點local mount points或交換設備,套接字、定時器、路徑單元和其他基本的初始化進程之后。就像在第二篇文章中 systemd 單元里解釋的那樣,targets 就像舊的運行等級old run levels一樣,可以將你的計算機置于某個狀態,或像這樣告訴你的服務在達到某個狀態后開始運行。

在前兩篇文章中你配置的 minetest.service 文件最終看起來就像這樣:

  1. # minetest.service
  2. [Unit]
  3. Description= Minetest server
  4. Documentation= https://wiki.minetest.net/Main_Page
  5.  
  6. [Service]
  7. Type= simple
  8. User=
  9.  
  10. ExecStart= /usr/games/minetest --server
  11. ExecStartPost= /home//bin/mtsendmail.sh "Ready to rumble?" "Minetest Starting up"
  12.  
  13. TimeoutStopSec= 180
  14. ExecStop= /home//bin/mtsendmail.sh "Off to bed. Nightie night!" "Minetest Stopping in 2 minutes"
  15. ExecStop= /bin/sleep 120
  16. ExecStop= /bin/kill -2 $MAINPID
  17.  
  18. [Install]
  19. WantedBy= multi-user.target

這兒沒什么需要修改的。但是你需要將 mtsendmail.sh(發送你的 email 的腳本)從:

  1. #!/bin/bash
  2. # mtsendmail
  3. sleep 20
  4. echo $1 | mutt -F /home/<username>/.muttrc -s "$2" my_minetest@mailing_list.com
  5. sleep 10

改成:

  1. #!/bin/bash
  2. # mtsendmail.sh
  3. echo $1 | mutt -F /home/paul/.muttrc -s "$2" pbrown@mykolab.com

你做的事是去除掉 Bash 腳本中那些蹩腳的停頓。Systemd 現在來做等待。

讓它運行起來

確保一切運作正常,禁用 minetest.service

  1. sudo systemctl disable minetest

這使得系統啟動時它不會一同啟動;然后,相反地,啟用 minetest.timer

  1. sudo systemctl enable minetest.timer

現在你就可以重啟服務器了,當運行 sudo journalctl -u minetest.* 后,你就會看到 minetest.timer 單元執行后大約一分鐘,minetest.service 單元開始運行。

圖 1:minetest.timer 運行大約 1 分鐘后 minetest.service 開始運行

圖 1:minetest.timer 運行大約 1 分鐘后 minetest.service 開始運行

時間的問題

minetest.timer 在 systemd 的日志里顯示的啟動時間為 09:08:33 而 minetest.service 啟動時間是 09:09:18,它們之間少于 1 分鐘,關于這件事有幾點需要說明一下:首先,請記住我們說過 OnBootSec= 指令是從引導完成后開始計算服務啟動的時間。當 minetest.timer 的時間到來時,引導已經在幾秒之前完成了。

另一件事情是 systemd 給自己設置了一個誤差幅度margin of error(默認是 1 分鐘)來運行東西。這有助于在多個資源密集型進程resource-intensive processes同時運行時分配負載:通過分配 1 分鐘的時間,systemd 可以等待某些進程關閉。這也意味著 minetest.service 會在引導完成后的 1~2 分鐘之間啟動。但精確的時間誰也不知道。

順便一提,你可以用 AccuracySec= 指令修改誤差幅度

你也可以檢查系統上所有的定時器何時運行或是上次運行的時間:

  1. systemctl list-timers --all

圖 2:檢查定時器何時運行或上次運行的時間

圖 2:檢查定時器何時運行或上次運行的時間

***一件值得思考的事就是你應該用怎樣的格式去表示一段時間。Systemd 在這方面非常靈活:2 h2 hours2hr 都可以用來表示 2 個小時。對于“秒”,你可以用 secondssecondsecs。“分”也是同樣的方式:minutesminuteminm。你可以檢查 man systemd.time 來查看 systemd 能夠理解的所有時間單元。

下一次

下次你會看到如何使用日歷中的日期和時間來定期運行服務,以及如何通過組合定時器與設備單元在插入某些硬件時運行服務。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2021-04-18 12:12:29

systemd定時器系統運維

2021-08-03 14:33:53

cron定時器Linux命令

2018-12-03 12:20:52

Systemd定時器Linux

2009-11-11 10:14:10

linux定時器操作系統

2023-01-10 13:53:21

Linux定時器

2021-06-28 06:00:11

systemd定時器系統運維

2023-12-11 09:50:35

Linux定時器

2020-10-26 12:30:23

LinuxyumZFS

2021-08-11 10:10:26

Linux定時器數組

2010-07-28 15:56:22

FlexTimer定時

2024-11-12 14:48:10

2009-08-03 12:15:29

linux at命令linux at命令詳定時啟動程序

2019-12-05 10:30:17

LinuxMultitail

2011-03-22 10:06:27

LinuxZFS

2022-11-02 11:40:16

Flowable定時器流程

2011-04-21 10:49:28

Linux時間定時器

2009-04-12 08:51:50

Symbian諾基亞移動OS

2011-02-23 10:20:45

2013-07-29 10:10:40

TCP協議TCP定時器TCP

2021-03-31 08:33:17

SysTick定時器SysTick定時器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲综合天堂网 | 亚洲人成人一区二区在线观看 | 国产精品夜色一区二区三区 | 日韩一区二区三区av | 日韩精品一区二区三区在线播放 | 亚洲精品久久久一区二区三区 | 91中文 | 国产精品久久久久久久免费观看 | 国产精品久久久久久亚洲调教 | 日韩欧美一区二区在线播放 | 高清国产一区二区 | 黄色毛片在线观看 | 久久伊人免费视频 | 国产黄色一级电影 | 欧美一区二区三区在线播放 | 一级看片免费视频 | 欧美一区二区视频 | 亚洲精品91 | 精品久久一区 | 免费在线观看成年人视频 | 国产精品大片 | 日本精品一区二区三区视频 | 黄毛片| 黄a在线播放 | 国产一级在线 | 欧美日韩在线一区二区 | 国产亚洲成av人片在线观看桃 | 中文字幕免费在线 | 日韩中文电影 | 日韩视频在线免费观看 | 精品久久一区 | 欧美激情一区二区 | 中文成人在线 | 91短视频网址 | 欧美11一13sex性hd| 99在线观看视频 | 国产乱码精品一区二区三区中文 | 欧美一区二区三区四区五区无卡码 | 欧美精品成人一区二区三区四区 | 老司机久久 | 青青草社区 |