linux基礎(四)——任務排程cron和anacron
crontab定期執行shell指令碼
【場景】:
需要定期執行Hadoop的MapReduce
【解決辦法】:
編寫一個執行MapReduce的Shell指令碼。然後使用crontab配置定時任務。
【Shell指令碼】
#!/usr/bin/env bash
source /etc/profile
echo "TimeLimitDrawn Start"
hadoop jar $HADOOP_HOME/package/mr_post-1.0-SNAPSHOT-jar-with-dependencies.jar com.hdyh.mapreduce.TimeLimitDrawn >> /home/hadmin/hadoop/shell/mr.log
echo "TimeLimitDrawn End"
【定時任務】
* * */1 * * sh /home/hadmin/hadoop/package/TimeLimitDraw.sh
【crontab使用說明】
crontab –u //設定某個使用者的cron服務,一般root使用者在執行這個命令的時候需要此引數
crontab –l //列出某個使用者cron服務的詳細內容
crontab –r //刪除某個使用者的cron服務
crontab –e //編輯某個使用者的cron服務
crontab 檔案中的行由6個欄位組成,不同欄位間用空格或tab鍵分隔。前5個欄位指定命令要執行的時間
①分鐘(0-59)
②小時(0-23)
③日期(1-31)
④月份(1-12)
⑤星期幾(0-6,其中0代表星期日,好像7也代表星期日)
⑥一個要在適當時間執行的字串。
例子:
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
#每天早上6點10分
10 6 * * * date
#每兩個小時
0 */2 * * * date
#晚上11點到早上8點之間每兩個小時,早上8點
0 23-7/2,8 * * * date
#每個月的4號和每個禮拜一到禮拜三的早上11點
0 11 4 * 1-3 date
#1月1日早上4點
0 4 1 1 * date
讓配置檔案生效:如果讓配置檔案生效,還得重新啟動cron,切記,既然每個使用者下的cron配置檔案修改後,也要重新啟動cron伺服器。
注意:如果要定期執行某個Shell命令的時候,一定要注意以下兩點:
①、shell指令碼要有-x(可執行)的許可權
②、shell指令碼可以被正確執行,但是hadoop命令無法執行時,多數情況都是因為環境變數的原因,可以在Shell指令碼中使用source /etc/profile來使環境變數生效。
③、如果設定的是整點執行,按照下面錯誤的寫法,會在7點開始執行很多次命令。
錯誤的寫法:* 7 * * * sh /home/hadmin/hadoop/package/TimeLimitDraw.sh
正確的寫法:0 7 * * * sh /home/hadmin/hadoop/package/TimeLimitDraw.sh
④、有時因為找不到檔案或者許可權問題無法正確執行時,系統會生成一個檔案【/var/spool/mail/[使用者名稱]】、 如:/var/spool/mail/root
在這個檔案中有時可以找到一些有用的線索。
相關文章
- 『學了就忘』Linux系統定時任務 — 89、任務排程工具anacronLinux
- Linux 中怎麼設定計劃任務:cron 與 anacronLinux
- Linux 定時任務排程Linux
- Spark中資源排程和任務排程Spark
- Timer和TimerTask 任務排程
- 任務排程
- linux定時任務cron配置Linux
- 使用Node.js的Node-cron進行任務排程 - DilinaNode.js
- 關於使用 go cron 庫(任務排程)平滑關閉的實現Go
- 如何使用 cron 任務在 Linux 中計劃和自動化任務Linux
- 如何在Linux中加入cron任務Linux
- 排查linux 定時任務cron crontabLinux
- Airflow 任務排程AI
- Laravel 任務排程Laravel
- Linux 中 Laravel 任務排程不執行LinuxLaravel
- 任務排程的思考和總結
- 在linux上定期執行命令、指令碼(cron,crontab,anacron)Linux指令碼
- 一文詳解 Linux Crontab 排程任務Linux
- 分散式任務排程分散式
- Spring 指南(排程任務)Spring
- 基於Redis的任務排程設計方案Redis
- 聊聊PowerJob的任務排程
- 分散式排程任務-ElasticJob分散式AST
- LeetCode 621 任務排程器LeetCode
- 使用at和cron實現任務計劃
- 基於Azkaban的任務定時排程實踐
- laravel框架任務排程(定時執行任務)Laravel框架
- 基於Hyperf開發的任務排程系統.支援任務投遞,DAG任務編排(多個任務使用同一個事務).
- 在 Linux 中怎麼使用 cron 計劃任務Linux
- Linux基礎命令---cancel取消列印任務Linux
- Python任務排程模組APSchedulerPython
- LTS分散式任務排程部署分散式
- Golang——Cron 定時任務Golang
- Linux基礎命令---lpstat檢視列印任務Linux
- Linux基礎命令---lprm刪除列印任務Linux
- Java中的定時任務最佳化:從Cron表示式到高精度排程的實現Java
- LiteOS-任務篇-原始碼分析-任務排程函式原始碼函式
- 力扣-621. 任務排程器力扣