0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何定期執(zhí)行某個腳本呢?

阿銘linux ? 來源:阿銘linux ? 2022-12-28 09:23 ? 次閱讀

其實大部分系統(tǒng)管理工作都是通過定期自動執(zhí)行某個腳本來完成的,那么如何定期執(zhí)行某個腳本呢?這就要借助Linux的cron功能了。這部分內(nèi)容很重要,請大家牢記!

4063b548-864d-11ed-bfe3-dac502259ad0.png

14.5.1命令crontab

Linux任務計劃功能的操作都是通過crontab命令來完成的,其常用的選項有以下幾個。

-u:表示指定某個用戶,不加-u選項則為當前用戶。

-e:表示制定計劃任務。

-l:表示列出計劃任務。

-r:表示刪除計劃任務。

下面請跟著阿銘來創(chuàng)建第一個任務計劃,如下所示:

# crontab -e
no crontab for root - using an empty one
這里使用crontab -e來編寫任務計劃,這實際上是使用vim工具打開了crontab的配置文件,我們寫下如下內(nèi)容:
01 10 05 06 3 echo "ok" > /root/cron.log
這里每個字段的數(shù)字分別表示什么呢?從左到右依次為:分、時、日、月、周和命令行。上例表示在6月5日(這一天必須是星期三)的10點01分執(zhí)行命令:
echo "ok" > /root/cron.log。
命令crontab -e實際上是打開了/var/spool/cron/username文件(如果用戶是root,則打開的是/var/spool/cron/root)。

打開這個文件使用了vim編輯器,所以保存時在命令行模式下輸入:wq即可。但是請千萬不要直接去編輯那個文件,否則會出錯,所以一定要使用命令crontab -e來編輯。

查看已經(jīng)設定的任務計劃使用crontab -l命令,如下所示:
# crontab -l
01 10 05 06 3 echo "ok" > /root/cron.log
刪除任務計劃要使用crontab -r命令,這個刪除選項最好還是少用,因為它會一下子把全部計劃都刪除掉。如果你想只刪除一條計劃,可以使用-e選項進入crontab進行編輯。-r選項用法如下所示:
# crontab -r
# crontab -l
no crontab for root
14.5.2cron練習題

Cron的內(nèi)容不算太難,但需要你牢固掌握。下面阿銘給出一些練習題,幫助你熟悉cron的應用。

每天凌晨1點20分清除/var/log/slow.log這個文件。

每周日3點執(zhí)行/bin/sh /usr/local/sbin/backup.sh。

每月14日4點10分執(zhí)行/bin/sh /usr/local/sbin/backup_month.sh。

每隔8小時執(zhí)行ntpdate time.windows.com。

每天的1點、12點和18點執(zhí)行/bin/sh /usr/local/sbin/test.sh。

每天的9點到18點執(zhí)行/bin/sh /usr/local/sbin/test2.sh。

下面是以上習題的答案,僅作參考。

201***echo"">/var/log/slow.log
03**0/bin/sh/usr/local/sbin/backup.sh
10414**/bin/sh/usr/local/sbin/backup_month.sh
0*/8***ntpdatetime.windows.com
01,12,18***/bin/sh/usr/local/sbin/test.sh
09-18***/bin/sh/usr/local/sbin/test2.sh
練習完上面的題目,你可能會有一些小疑問。這里要簡單說明一下,每隔8小時就是用全部小時(0~23)去除以8,結(jié)果算出來應該是0、8和16這3個數(shù)。

當遇到多個數(shù)(分鐘、小時、月、周)時,則需要用逗號隔開,比如第5題中的1,12,18。時間段是可以用n-m的方式表示的,比如第6題中的9-18。

設置好了所有的任務計劃后,我們需要查看一下crond服務是否已經(jīng)啟動,如下所示:
# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-06-26 1517 CST; 1h 22min ago
Main PID: 820 (crond)
Tasks: 1 (limit: 11353)
Memory: 1.9M
CGroup: /system.slice/crond.service
└─820 /usr/sbin/crond -n
6月 26 1517 aminglinux-123 systemd[1]: Started Command Scheduler.
6月 26 1517 aminglinux-123 crond[820]: (CRON) STARTUP (1.5.2)
6月 26 1517 aminglinux-123 crond[820]: (CRON) INFO (Syslog will be used instead of sendmail.)
6月 26 1517 aminglinux-123 crond[820]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 8% if used.)
6月 26 1517 aminglinux-123 crond[820]: (CRON) INFO (running with inotify support)
6月 26 1601 aminglinux-123 CROND[2042]: (root) CMD (run-parts /etc/cron.hourly)
6月 26 1701 aminglinux-123 CROND[4032]: (root) CMD (run-parts /etc/cron.hourly)
看Active那行,如果是啟動狀態(tài)顯示為active(running),未啟動則顯示為inactive (dead)。




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    587

    瀏覽量

    27181
收藏 人收藏

    評論

    相關(guān)推薦

    Linux中執(zhí)行shell腳本的兩種方式

    shell腳本,通常這個腳本通過一系列的操作編寫的腳本,這些腳本都主要用于應用的啟動停止等。那么,Linux中是如何執(zhí)行腳本
    發(fā)表于 11-18 16:49 ?1734次閱讀
    Linux中<b class='flag-5'>執(zhí)行</b>shell<b class='flag-5'>腳本</b>的兩種方式

    自研的regression腳本yrun都有哪些東西?

    yrun是處芯積律自研的regression腳本,yrun都有哪些東西
    的頭像 發(fā)表于 10-12 09:26 ?1235次閱讀
    自研的regression<b class='flag-5'>腳本</b>yrun都有哪些東西<b class='flag-5'>呢</b>?

    shell腳本編寫之本地腳本的編寫和執(zhí)行

    用來指定使用的shell應用;echo "my first shell !"為腳本中編寫的命令代碼。2、執(zhí)行執(zhí)行腳本時,腳本必須要有
    發(fā)表于 08-28 09:36

    Android開機執(zhí)行shell腳本

    Android開機執(zhí)行shell腳本 往往需要在Android啟動過程中去對系統(tǒng)做一些設置,如修改某些文件夾的屬主和文件的權(quán)限,可在init.rc中增加service執(zhí)行shell腳本
    發(fā)表于 04-30 15:24

    如何在 IIS 中執(zhí)行 Python 腳本

    如何在 IIS 中執(zhí)行 Python 腳本 Python 是一種解釋腳本語言,概念類似 Microsoft Visual Basic Scripting Edition (VBScript)、 MicrosoftJScrip
    發(fā)表于 02-23 15:13 ?1220次閱讀

    如何創(chuàng)建和執(zhí)行一個簡單的Linux shell腳本

     如果您愿意要嘗試更長的shell腳本,請將下面的shell腳本(并附加為PDF和ODT文件)復制到文本編輯器中,保存,使其可執(zhí)行并運行。當您了解更多Linux命令時,您可以創(chuàng)建更復雜的shell
    的頭像 發(fā)表于 11-06 17:28 ?1.3w次閱讀

    如何使用redis實現(xiàn)分布式鎖的lua腳本出現(xiàn)和資料說明

    Redis 使用單個 Lua 解釋器去運行所有腳本,并且, Redis 也保證腳本會以原子性(atomic)的方式執(zhí)行:當某個腳本正在運行的
    的頭像 發(fā)表于 12-01 11:00 ?3528次閱讀

    虛擬機:Bash Shell腳本打印出執(zhí)行的命令

    默認情況下,bash腳本不會打印執(zhí)行的每個命令,這個有時候不太方面。
    的頭像 發(fā)表于 06-22 14:44 ?4405次閱讀

    如何使用符號執(zhí)行的python實現(xiàn)攻擊腳本分析平臺

    傳統(tǒng)的靜態(tài)分析方法大多不能準確處理腳本與網(wǎng)絡交互的過程,且會引入不可達路徑,動態(tài)分析則需要搭建實驗環(huán)境和手工分析。針對上述問題,提出一種基于符號執(zhí)行的Python攻擊腳本分析平臺PyExZ3+。通過
    發(fā)表于 07-16 15:50 ?11次下載
    如何使用符號<b class='flag-5'>執(zhí)行</b>的python實現(xiàn)攻擊<b class='flag-5'>腳本</b>分析平臺

    為什么shell腳本執(zhí)行命令要加exec?這個exec有什么作用?

    正常情況下,如果我們想要在shell腳本執(zhí)行一個命令,我們只用將該命令原樣寫到這個shell腳本中就好了。
    的頭像 發(fā)表于 08-21 09:10 ?2596次閱讀
    為什么shell<b class='flag-5'>腳本</b>中<b class='flag-5'>執(zhí)行</b>命令要加exec?這個exec有什么作用<b class='flag-5'>呢</b>?

    shell腳本串行和并行執(zhí)行設置

    在Shell腳本中,你可以使用不同的技巧來實現(xiàn)串行和并行執(zhí)行。 串行執(zhí)行 要實現(xiàn)串行執(zhí)行,你可以簡單地按順序編寫腳本中的命令。每個命令都會在
    的頭像 發(fā)表于 11-08 10:25 ?1991次閱讀

    shell并行執(zhí)行java腳本

    Shell是一種用于解釋執(zhí)行命令的腳本語言,而Java是一種跨平臺的面向?qū)ο缶幊陶Z言。在某些情況下,我們可能需要在Shell腳本執(zhí)行Java程序。本文將介紹如何在Shell中
    的頭像 發(fā)表于 11-08 10:29 ?533次閱讀

    Oracle如何執(zhí)行sql腳本文件

    Oracle是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),可用于存儲、查詢和管理大量的數(shù)據(jù)。在Oracle中,可以通過執(zhí)行SQL腳本文件來一次性地執(zhí)行多個SQL語句或者批量處理數(shù)據(jù)。在下面的文章中,我將詳細介紹
    的頭像 發(fā)表于 12-06 10:51 ?5495次閱讀

    執(zhí)行shell腳本的方式包括什么

    執(zhí)行Shell腳本的方式有很多種,以下是一些常見的方法: 直接運行腳本文件 在命令行中,可以直接使用腳本文件的路徑來運行腳本。例如: ./s
    的頭像 發(fā)表于 08-30 15:17 ?154次閱讀

    shell腳本執(zhí)行的三種方式及區(qū)別

    在Linux系統(tǒng)中,Shell腳本是一種非常實用的工具,用于自動化執(zhí)行一系列命令。Shell腳本可以大大提高工作效率,簡化復雜的任務。在這篇文章中,我們將介紹Shell腳本
    的頭像 發(fā)表于 08-30 15:24 ?246次閱讀