Linux作業管理,并行運行,任務計劃(at任務和cron任務)

本文主要介紹:1、Linux作業管理 2、并行運行 3、任務計劃(at 一次性任務和 cron 周期性任務)

本文涉及到的命令主要有:

1、作業管理:? ?jobs、??ctrl+Z(按鍵)、 fg 、 bg、 kill、 killall、 nohup、 screen

2、任務計劃:? ?at、 crontab、? sleep

一、Linux作業管理

  • ? ? Linux的作業控制

前臺作業:通過終端啟動,且啟動后一直占據終端;

后臺作業:可通過終端啟動,但啟動后即轉入后臺運行(釋放終端)

  • ? 讓作業運行于后臺

運行中的作業: Ctrl+z (會自動轉為休眠模式)

尚未啟動的作業: COMMAND &

  • ? 查看當前終端所有作業:jobs

查看到的后臺作業中,顯示有+ –的,如果用 fg 命令后面不指定作業號時,+為默認調用的第一個作業,為第二個作業,越早送到后臺的作業,默認越晚被調回

  • ? 作業控制:

fg? ?[JOB_NUM]? ? ?把指定的后臺作業調回前臺

bg? [JOB_NUM]? ? ?讓送往后臺的作業在后臺繼續運行

kill [%JOB_NUM]? ???終止指定的作業(這里作業號前面一定要加%,否則會與 kill 的命令沖突)

killall -19?COMMAND? 將后臺作業轉入休眠模式

killall -18 COMMAND? 將后臺作業轉入運行模式

  • 后臺作業雖然被送往后臺運行,但其依然與終端相關;退出終端,將關閉后臺作業。如果希望送往后臺后,剝離與終端的關系

nohup COMMAND? [&>/dev/null]? &? ?(如果不加中括號里的重定向,則執行命令后的標準輸出及錯誤會追加至nohup.out)

screen? ;? ?COMMAND? ? ? (開啟分屏會話,然后執行任務,screen -r 恢復回話)

二、并行運行

同時運行多個進程,提高效率

  • ?方法1 :編輯腳本,將要執行的任務寫入腳本

? ?vi all.sh

f1.sh?&

f2.sh?&

f3.sh?&

  • ?方法2? :小括號

(f1.sh &);(f2.sh &);(f3.sh &)

  • ?方法3? : 大括號

{? f1.sh &? f2.sh &? f3.sh &? }

三、任務計劃

定時執行一次任務:at

周期性運行任務:cron

(共同點:沒有被重定向的輸出和錯誤以郵件通知給相關用戶;根用戶能夠修改其它用戶的作業)

  • 共同點:運行結果的標準輸出和錯誤以郵件通知給相關用戶

COMMAND > /dev/null? ?則執行正確之后,不發送執行結果;但執行錯誤還是會發送郵件

COMMAND &> /dev/null? ?則執行結果無論對錯都不發送郵件

at一次性任務

  • 包:at

? ? ? ? 需要啟動atd服務,才能實現at任務。

centos6啟用:service atd start

centos7啟用:systemctl start atd

  • ?at命令:at [option] TIME

?常用選項:

-V? ? 顯示版本信息

-l? ? ? 列出指定隊列中等待運行的作業;相當于atq at隊列存放在/var/spool/at/目錄中

-d #? ? 刪除指定的作業;相當于atrm

-c #? ? ?查看具體作業任務

-f /path/from/somefile? ? ? 從指定的文件中讀取任務

-m? ? ?當任務被完成之后,將給用戶發送郵件,即使沒有標準輸出

  • ?TIME? ? 定義出什么時候進行 at 這項任務的時間

HH:MM [YYYY-mm-dd]? (如14:00 [2018-05-06] )

noon(中午12點), midnight(晚上12點), teatime(下午4點)

tomorrow

now+#{minutes,hours,days, OR weeks}? ?(如 now + 3 minutes)

  • 執行方式:
1)交互式? ?(如 :輸入 at now + 1 minutes 回車后系統會等待輸入任務,輸入完成后 ctrl + d提交)

2)輸入重定向? (如:echo ping 8.8.8.8 | at now + 1 minutes,或 at now + 1 minutes <?/path/from/somefile? )

3)at –f? /path/from/somefile
  • at任務的用戶控制功能

/etc/at.{allow,deny}控制用戶是否能執行at任務

白名單:/etc/at.allow 默認不存在;如果建立白名單,只有該文件中的用戶才能執行at命令

黑名單:/etc/at.deny 默認存在,拒絕該文件中用戶執行at命令,而沒有在at.deny 文件中的使用者則可執行

如果兩個文件中有同一個用戶,則白名單優先;

如果兩個文件都不存在,只有 root 可以執行 at 命令。

cron周期性任務

  • 相關的程序包:

cronie: 主程序包,提供crond守護進程及相關輔助工具

cronie-anacron:cronie的補充程序,用于監控cronie任務執行狀況,如cronie中的任務在過去該運行的時間點未能正常運行,則anacron會隨后啟動一次此任務。(家用電腦由于關機會有這方面問題,生產中服務器不關機一般不會影響周期任務執行,了解即可)

crontabs:包含CentOS提供系統維護任務

  • 確保crond守護處于運行狀態:

CentOS 7:? ?systemctl status crond

CentOS 6:? ?service crond status

  • 1)系統cron任務:系統維護作業? ???/etc/crontab
  • 2)用戶cron任務:crontab命令

日志:/var/log/cron? (追蹤周期任務,誤刪任務時可根據日志找回)

  • 對于cron任務來講,%有特殊用途,如果在命令中要使用%,則需要轉義,或放置于單引號,或寫入腳本中然后調用此腳本。

1)系統cron任務:系統維護作業? ???/etc/crontab

  • 直接編輯?/etc/crontab 文件 ,格式如下圖所示:

QQ截圖20180506195404

例:30 21 * * *? ?root? ?/bin/echo “nihao”? ? 每天晚上9點30分執行echo命令

  • 時間表示法:
  1. ?特定值:給定時間點有效取值范圍內的值
  2. *? ? 給定時間點上有效取值范圍內的所有值,表示“每…”? ? (如:*? 02? *? *? *? 表示每天2點每分鐘執行任務)
  3. #,#,#? ?離散取值? ? (如:0? 2? 1,3,5? *? *? ?表示每個月1號3號5號的2點00分執行任務)
  4. #-#? ??連續取值? ? (如:0? 2? 1-5? *? *? ?表示每個月1號到5號的2點00分執行任務)
  5. /#? ?在指定時間范圍上,定義步長??(如:0? */3 *? *? *? ?表示每天每3個小時執行任務)
  • 特定的時間格式:

? ? ? ? ? ? ? ? @reboot ? ? 表示每次重啟之后運行一次
@yearly ? ? 表示每年運行一次,功能相當于 0 0 1 1 *
@annually ??表示每年運行一次,功能相當于0 0 1 1 *
@monthly ? ?表示每月運行一次,功能相當于0 0 1 * *
@weekly ? ??表示每周運行一次,功能相當于0 0 * * 0
@daily ? ? ?表示每天運行一次,功能相當于0 0 * * *
@hourly ? ??表示每小時運行一次,功能相當于0 * * * *

  • 在秒級別運行任務:結合 sleep 命令

sleep NUMBER[SUFFIX]…
SUFFIX:
s: 秒, 默認
m: 分
h: 小時
d: 天

如:* * * * * wall 1 ; sleep 20; wall 2 ; sleep 20 ; wall 3 表示每個廣播任務之間間隔20秒。

  • 系統的計劃任務:

/etc/crontab

/etc/cron.d/ 配置文件

/etc/cron.hourly/ 腳本

/etc/cron.daily/ 腳本

/etc/cron.weekly/ 腳本

/etc/cron.monthly/ 腳本

  • 管理臨時文件:

CentOS6使用/etc/cron.daily/tmpwatch定時清除臨時文件

CentOS7使用systemd-tmpfiles-setup服務實現

2)用戶cron任務:crontab命令

crontab命令定義:每個用戶都有專用的cron任務文件: /var/spool/cron/USERNAME

  • crontab命令: crontab [-u user] [-l | -r | -e] [-i]

-l? ? 列出所有任務

-e? ? 編輯任務

-r? ? 移除所有任務

-i? ? 同-r一同使用,以交互式模式移除指定任務

-u user? ? 僅root可運行,指定用戶管理cron任務

  • 控制用戶執行計劃任務:

/etc/cron.{allow,deny}? ?(性質同 at 任務的黑白名單,如果一個用戶之前不在黑名單,后來加入黑名單,那他之前所創建的周期任務依然會定期執行)

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/97658

(1)
bican813bican813
上一篇 2018-05-06
下一篇 2018-05-06

相關推薦

  • 課堂實驗

    實驗:實現Gelera cluster 三臺主機1 yum安裝[mariadb]name = MariaDBbaseurl = https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-5.5.60/yum/centos7-amd64/gpgcheck=0 httpd2.2 order deny,allow a…

    2018-06-24
  • shell打印選擇菜單shell

    每天一練小腳本

    Linux筆記 2018-05-19
  • RHCE考試筆記

    (2)下午RHCE部分

    Linux筆記 2018-07-14
  • DNS服務

    1、相關原理概念
    2、配置主DNS服務器
    3、配置從DNS服務器

    2018-06-03
  • Homework_week2

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 目錄管理類的命令 cd:變換目錄 pwd:顯示目前的目錄 選項: -P:顯示正確的完整路徑,而非鏈接路徑 mkdir:創建新目錄 選項: -m:設置文件權限 -p:遞歸創建 rmdir:刪除空目錄 選項: -p:遞歸刪除 文件與目錄管理類的命令 ls:文件與目錄的檢視命令 常用選項…

    Linux筆記 2018-06-25
欧美性久久久久