久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      讓Crontab每秒鐘執(zhí)行一次任務(wù)的方法

      讓Crontab每秒鐘執(zhí)行一次任務(wù)的方法

      讓Crontab每秒鐘執(zhí)行一次任務(wù)的方法

      Crontab是linux下定時(shí)調(diào)度配置文件,通過它,我們可以讓系統(tǒng)的程序、腳本、命令、任務(wù)按設(shè)定的時(shí)間、間隔、周期循環(huán)的運(yùn)行。 在Crontab里時(shí)間粒度最小的是分鐘。也就是說,通過Crontab配置,我們最多可以讓目標(biāo)任務(wù)每分鐘執(zhí)行一次,更頻繁的執(zhí)行是不行的,只能借助其它方法。

      相關(guān)學(xué)習(xí)推薦:linux視頻教程

      比如說,如果希望一個(gè)程序每30秒執(zhí)行一次,該怎么辦呢?

      變通的方法還是有的。 一種思路是,在Crontab里添加兩條配置,一條是正常調(diào)度,每分鐘執(zhí)行一次,另一條是等待30秒后才執(zhí)行。

      # Need these to run on 30-sec boundaries, keep commands in sync. * * * * *              /path/to/executable param1 param2 * * * * * ( sleep 30 ; /path/to/executable param1 param2 )

      這種方法感覺有點(diǎn)生硬,怪怪的,但的確可行。這種方法實(shí)際是可以簡寫成一行:

      * * * * * /bin/bash -l -c "/path/to/executable; sleep 30 ; /path/to/executable"

      還有一種方法是使用watch命令:

      $ watch --interval .30 script_to_run_every_30_sec.sh

      但watch是命令行工具,我們可以使用nohup命令讓它在后臺(tái)運(yùn)行。

      SystemD定時(shí)器

      如果我們使用的linux系統(tǒng)里有SystemD,可以使用SystemD定時(shí)器在任何時(shí)間粒度上調(diào)度程序,理論上可以小到納秒級(jí)別——當(dāng)然,這樣做有點(diǎn)瘋狂。總之,它在任務(wù)調(diào)度上的靈活性遠(yuǎn)比Cron要高——無需使用sleep這種蹩腳的方案。

      比起一行完成配置的crontab來說,建立一個(gè)SystemD定時(shí)器會(huì)顯得稍微復(fù)雜一些,但為了更好的實(shí)現(xiàn)小于‘每分鐘’粒度的調(diào)度任務(wù),這種方法值得嘗試。

      SystemD定時(shí)器實(shí)現(xiàn)原理簡單說就是兩部分:一個(gè)系統(tǒng)service,一個(gè)SystemD定時(shí)器。SystemD定時(shí)器執(zhí)行調(diào)度,而任務(wù)是寫在service里。

      下面有個(gè)簡單的例子,目標(biāo)是讓系統(tǒng)logger每十秒鐘輸出一次“Hello World”;

      /etc/systemd/system/helloworld.service

      [Unit] Description=Say Hello [Service] ExecStart=/usr/bin/logger -i Hello World

      /etc/systemd/system/helloworld.timer

      [Unit] Description=Say Hello every 10 seconds [Timer] OnBootSec=10 OnUnitActiveSec=10 AccuracySec=1ms [Install] WantedBy=timers.targethelloworld.timer里并沒有聲明service的名稱,那它和service是如何關(guān)聯(lián)的呢?沒錯(cuò),因?yàn)樗鼈兊拿Q相同,都是helloworld。

      如果想讓整個(gè)系統(tǒng)使用這個(gè)定時(shí)器,這兩個(gè)文件就需要放置在/etc/systemd/system下。如果想給某個(gè)用戶使用,則放置在~/.config/systemd/user。想讓這個(gè)定時(shí)器立即運(yùn)行,需要執(zhí)行下面的命令:

      systemctl enable --now helloworld.timer

      里面的–now標(biāo)記是讓定時(shí)器立即執(zhí)行。否則,只有等系統(tǒng)重啟后,或者用戶登錄是才會(huì)觸發(fā)運(yùn)行。

      [Timer]部分里的各個(gè)字段的作用如下:

      • OnBootSec – 系統(tǒng)啟動(dòng)多少秒后開始執(zhí)行調(diào)度
      • OnUnitActiveSec – 重復(fù)調(diào)度相關(guān)service的時(shí)間間隔。就是這行配置決定了跟cron job一樣定時(shí)調(diào)度的動(dòng)作。
      • AccuracySec – 定時(shí)器精度。 默認(rèn)是一分鐘,跟cron很相似??梢砸蟮母?,但精度增加會(huì)帶來
      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)