作業管理:
Linux的作業控制(job ) 前臺作業:通過終端啟動,且啟動后一直占據終端; 后臺作業:可通過終端啟動,但啟動后即轉入后臺運行(釋放終端) 如何讓作業運行于后臺? (1) 運行中的作業: Ctrl+z 注意:運送到后臺,作業會成休眠狀態 (2) 尚未啟動的作業: # COMMAND & 后臺作業雖然被送往后臺運行,但其依然與終端相關;退出終端,將關閉后臺作業。如果希望送往后臺后,剝離與終端的關系 # nohup COMMAND & 或 screen;COMMAND 查看所有作業: # jobs 作業控制: # fg [[%]JOB_NUM]:把指定的后臺作業調回前臺;(front ground) # bg [[%]JOB_NUM]:讓送往后臺的作業在后臺繼續運行;() #kill -18 [% JOB_NUM] 繼續執行某命令 #kill -19 [% JOB_NUM] 把某命令放到后臺休眠 注意:使用kill命令刪除作業,作業號前必須加%號
并行運行: 同時運行多個進程,提高效率 (1) 寫腳本.調寫其他我那文件名實時 (2) (f1.sh&);(f2.sh&);(f3.sh&) (3) { f1.sh& f2.sh& f3.sh& }
郵件:
本地的郵件服務,支持不同本地主機用戶傳遞信息工具 用戶郵件保存位置:/var/spool/mail/usernema dsfdds (1)查看(郵件服務自動開啟) #netstat -tnlp 查看郵件的服務地址和端口 127.0.0.1:25 #ss -tnl (2)協議: smtp:slmple mail transmlssion protocol pop3:Post Office Procotol lmap4:Internet Mail Access Procotol (3)命令管理 mail命令:(MUV:Mail User Agent 用戶收發郵件的工具程序) mailx -send and receive Internet mail 使用方式: 發郵件: (1)交互式輸入: mailx [options] "主題" 用戶名 郵件正文 點號單獨一行結束 [root@wen-7 ~]# mailx -s "help" wen sdfjdf dfdasadsfdsa . EOT (2)重定向正文 mailx -s "help" wen << "dkljfkldasfjkldkfljd" (3)通過管道;命令的執行結果 [root@wen-7 ~]# cat /etc/fstab | mail -s "fdsf" wen 收郵件: mailx 命令 輸入郵件編號 按q退出 郵件重定向: mail
Linux計劃任務
企業最重要的是數據,要求運維人員定期備份數據,大量的備份工具不可能手工完成,只能借助周期計劃任務工具. 未來的某時間點執行一次任務:at batch 周期性運行某任務 :crontab 執行結果:會通過郵件發送給用戶
at命令:
語法: at [Options] ...TIME (自動回車,輸入執行命令;Ctrl+d結束輸出,完成任務) 選項:options -M:執行任務后,主動發郵件,即使沒有標準輸出tions: (at的作業有隊列,用單個字母表示,默認為a) -v:顯示at的版本號 -l:查看當前任務列表 (等待執行的作業) -f /PATH/FROM/SOMEFILE:從指定文件中服務作業任務,不用在交互確認 -d #:刪除執行編號的作業 -c:查看指定組而已的具體內容 -q QUEUE:指明隊列 注意: 計劃任務中的標準輸出,會給用戶發郵件.大量的垃圾郵件會占用磁盤空間.作業執行結果是有郵件發送給提交作業的用戶 時間格式: Time: HH:MM[YYYY-mm-dd] 規定在某年某月的某一天的特殊時刻進行該項任務 none,mignight,teatime,tomorrow now+#{ minutes,hours,days,OR weeks} 在某個時間點再加幾個時間后才進行該項任務 [root@Wencx ~]# at -V at version 3.1.10 [root@Wencx ~]# at 9:08 at> bash z.sh at> <EOT> job 2 at 2016-09-09 09:08 [root@Wencx ~]# at -l 2 2016-09-09 09:08 a root [root@Wencx ~]# at -c 2 #!/bin/sh # atrun uid=0 gid=0 # mail root 0 ${SHELL:-/bin/sh} << 'marcinDELIMITER035951f0' bash z.sh [root@Wencx ~]# at -l 2 2016-09-09 09:08 a root [root@Wencx ~]# at -d 2 [root@Wencx ~]# at -l [root@Wencx ~]# at -m 20:35 at> ls /etc at> <EOT> job 4 at 2016-09-08 20:35 [root@Wencx ~]# mail Heirloom Mail version 12.4 7/29/08. Type ? for help. "/var/spool/mail/root": 1 message 1 new >N 1 root Thu Sep 8 20:35 208/2258 "Output from your job 4" & 1 Date: Thu, 8 Sep 2016 20:35:01 +0800 (CST) From: root@Wencx.localdomain (root) Status: R DIR_COLORS DIR_COLORS.256color 執行方式: 1)交互式 2)輸入重定向 3) at –f 文件 at服務: 依賴與atd服務,需要啟動才能實現at任務 管理服務腳本: 6./etc/rc.d/init.d/atd 7./usr/lib/systemd/system/atd.service 使用此命令,要開啟atd服務 命令:service atd start 桌面:setup,ntsysv
開機自啟動: chkconfig --level atd on at隊列: at隊列存放在/var/spool/at目錄中,每個文件名都對應隊列任務的序號
at配置文件 通過/etc/at.{allow,deny}控制用戶是否能執行at任務,尋找/etc/at.allow文件,文件中的使用者才能使用at,沒有在這個文件中的使用者則不能使用 at (即使沒有寫在at.deny 當中) 如果/etc/at.allow 不存在,就尋找 /etc/at.deny 這個文件,若寫在這個 at.deny 的使用者則不能使用 at,而沒有在這個 at.deny 文件中的使用者則可使用 at 命令。 如果兩個文件都不存在,只有 root 可以使用 at 這個命令。
batch命令:
batch會讓系統自行選擇在空閑時間去執行指定的任務; 指明任務的細節與at一樣
run-parts命令:執行一個目錄下的所有腳本
readlink 命令 查看文件軟連接的文件名
crontab:周期性任務計劃
機制:cron 服務程序: cronie:主程序包,提供了crond守護進程和相關輔助工具 確保crond守護進程處于正常運行狀態: centos6: /etc/rc.d/init.d/crond 服務腳本 service crond status centso7: /usr/lib/systemd/system/crond.service服務腳本 systemctl status crond.service cronie-anacron: cronie的補充程序;用于監控cronie任務執行狀況;如cronie中的任務在過去該運行的時間點未能正常運行,則anacron會隨后啟動一次此任務 crontabs:包含CentOS提供系統維護任務 cron文件: 日志文件:/var/log/cron 管理員配置文件:/etc/crontab 用戶配置文件:/etc/cron.d/ 小時腳本目錄: /etc/cron.hourly/ 每天腳本目錄: /etc/cron.daily/ 每周腳本目錄: /etc/cron.weekly/ 每月腳本目錄: /etc/cron.monthly/ (用戶可把要執行的任務寫入文件中,放入對應的目錄中,完成執行周期) 向crond提交作業的方式不同于at,他需要使用專門的配置文件,此文件有固定格式,不建議使用文本編輯器直接編輯此文件 ,要使用crontab命令 cron任務分為兩類: 系統cron任務:主要用于實現系統自身的維護; 手動編輯:/etc/crontab文件 用戶cron任務: 用戶自己的周期任務 使用命令:crontab 系統cron的配置方式: 系統cron任務:/etc/crontab 注釋行以 # 開頭 詳情參見 man 5 crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # 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) ORsun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed 注意: (1)每一行定義一個周期性任務; 共7個字段 * * * * * : 定義周期性時間 user-name :運行任務的用戶身份 command to be executed: 任務(執行命令一定要加絕對路徑) (2)此處的環境變量不同于用戶登錄后獲得的環境,因此,建議命令使用絕對路徑,或自定義PATH環境變量 (3)執行結果郵件發送給MAILTO指定的用戶 用戶cron的配置方式: 文件存放于/var/spool/cron/USERNAME * * * * * command to be executed 注意: (1)每一行定義一個周期性任務; 共6個字段 * * * * * : 定義周期性時 command to be executed: 任務 (2)此處的環境變量不同于用戶登錄后獲得的環境,因此,建議命令使用絕對路徑 (3)執行結果郵件發送給的當前用戶 時間表示法: (1)特定值: 給定時間點有效取值范圍內的值(日期范圍) 注意:days of week和day of month一般不同時使用; (2)* 給定時間點上有效取值范圍內的所有值;表示"每" 之意 例:* * * * *:表示每分鐘執行 * 1 * * *:表示每小時執行 (3)離散取值:, 在時間點上使用逗號分隔的多個值; #,#,# 1,2,3 例: 2,5,8月執行 0 * * 2,5,8 * centos /bin/echo "howdy!" (4)連續值: #-# 1-3 例:每月前3周 0 * * * 1-3 centos /bin/echo "howdy!" (5)在指定范圍內,指定范圍 #/M 例:每3小時echo命令; 0 */3 * * * centos /bin/echo "howdy!" (6)范圍值 @reboot Run once after reboot. 每次重啟時執行定時任務 @yearly 0 0 1 1 * 每一年的第一分鐘執行定時任務 @annually 0 0 1 1 * 每月每天 @monthly 0 0 1 * * 每月執行定時任務 @weekly 0 0 * * 0 每周每天 @daily 0 0 * * * 每天執行定時任務 @hourly 0 * * * * 每分鐘 注意:在有日期的情況下,還加上星期范圍,這兩種時間將是或的執行關系 實例: (1)3 * ***: 每小時執行一次:每小時的第3分鐘執行一次 (2)3 4 * * 5:每周執行一次.每周5的四點三分 (3)5 6 7 **:每月執行一次.每月的7號的6點5分 (4)7 8 9 10 *:每年執行一次,每年的10月9號8點7分 (5)8 8 * *?。?,7:,每周三和周日的8點9分 (6)0 8,20 * * 3,7: 每周三周日的20點和8點 (7)0 9-18 *?。。保?; 每周一到周五的9-18點 (8)*/5 * * * * * 每5分鐘執行一次 (9)*/7 每7分鐘執行一次 crontab命令: crontab [-u user] [-l][-r][-e][-s] 選項: -e:打開文件,編寫計劃 -l:查看任務列表 -r:移除所有任務,即刪除/var/spool/cron/USERNAME文件; -i:與-r配合使用,交互式刪除計劃任務 -u user:root用戶可為指定用戶管理cron任務 查看當前用戶定時任務 ramesh@dev-db$ crontab -l 查看 ROOT 用戶定時任務,用 root 登入 su-root,再執行 crontab -l root@dev-db# crontab -l no crontab for root 查看其它用戶定時任務 root@dev-db# crontab -u sathiya -l @monthly /home/sathiya/monthly-backup 00 09-18 * * * /home/sathiya/check-db-status 注意:運行結果以郵件方式通知給當前用戶,如果拒絕接受郵件; (1) COMMAND > /dev/null (2)COMMAND &> /dev/null (有風險) 注意:定義COMMAND時,如果命令中需要用到%號 ,需要對其轉義;但放置于單引號中的%號不用轉義 思考:某任務在指定時間因關機未能執行,下次開機會不會自動執行? 不會! 課外作業:anacron及其應用 練習: 1.每12小時備份一次/etc/目錄至/backups目錄中,保存文件 名稱格式為"etc-yyyy-mm-dd-hh.tar.xz" 2.每周2,4,7備份/var/log/secure文件至/logs目錄中,文件格式為:"secure-yyyymmdd" 3.每兩小時取出當前系統/proc/meminfo文件中以s或m開頭的行信息追加至/tmp/meminfo.txt文件中 4.每天4點打包/etc/目錄 * 4 * * * /bin/tar Jvf /backup/etc-`date +%F-%H-%M`.tar.xz /etc 1、每天6:00執行 0 6 * * * root /home/www.osyunwei.com/osyunwei.sh 2、每周六凌晨4:00執行 0 4 * * 6 root /home/www.osyunwei.com/osyunwei.sh 3、每周六凌晨4:05執行 5 4 * * 6 root /home/www.osyunwei.com/osyunwei.sh 4、每周六凌晨4:15執行 15 4 * * 6 root /home/www.osyunwei.com/osyunwei.sh 5、每周六凌晨4:25執行 25 4 * * 6 root /home/www.osyunwei.com/osyunwei.sh 6、每周六凌晨4:35執行 35 4 * * 6 root /home/www.osyunwei.com/osyunwei.sh 7、每周六凌晨5:00執行 5 * * 6 root /home/www.osyunwei.com/osyunwei.sh 8、每天8:40執行 40 8 * * * root /home/www.osyunwei.com/osyunwei.sh 9、每天8:30執行 30 8 * * * root /home/www.osyunwei.com/osyunwei.sh 10、每周一到周五的11:41開始,每隔10分鐘執行一次 41,51 11 * * 1-5 root /home/www.osyunwei.com/osyunwei.sh 1-59/10 12-23 * * 1-5 root /home/www.osyunwei.com/osyunwei.sh 11、在每天的10:31開始,每隔2小時重復一次 31 10-23/2 * * * root /home/www.osyunwei.com/osyunwei.sh 12、每天15:00執行 0 15 * * * root /home/www.osyunwei.com/osyunwei.sh 13、每天的10:30開始,每隔2小時重復一次 30 10-23/2 * * * root /home/www.osyunwei.com/osyunwei.sh 14、每天15:30執行 30 15 * * * root /home/www.osyunwei.com/osyunwei.sh 15、每天17:50執行 50 17 * * * root /home/www.osyunwei.com/osyunwei.sh 16、每天8:00執行 0 8 * * * root /home/www.osyunwei.com/osyunwei.sh 17、每天18:00執行 0 18 * * * root /home/www.osyunwei.com/osyunwei.sh 18、每天8:30執行 系統運維 www.osyunwei.com 溫馨提醒:qihang01原創內容版權所有,轉載請注明出處及原文鏈接 30 8 * * * root /home/www.osyunwei.com/osyunwei.sh 19、每天20:30 30 20 * * * root /home/www.osyunwei.com/osyunwei.sh 20、每周一到周五2:00 0 2 * * 1-5 root /home/www.osyunwei.com/osyunwei.sh 21、每周一到周五9:30 30 9 * * 1-5 root /home/www.osyunwei.com/osyunwei.sh 22、每周一到周五8:00,每周一到周五9:00 0 8,9 * * 1-5 root /home/www.osyunwei.com/osyunwei.sh 23、每天23:59 59 23 * * * root /home/www.osyunwei.com/osyunwei.sh 24、每周六23:59 59 23 * * 6 root /home/www.osyunwei.com/osyunwei.sh 25、每天0:30 30 0 * * * root /home/www.osyunwei.com/osyunwei.sh 26、每周一到周五9:25到11:35之間、13:00到15:00之間,每隔10分鐘運行一次 25,35,45,55 9 * * 1-5 root /home/www.osyunwei.com/osyunwei.sh 5-59/10 10 * * 1-5 root /home/www.osyunwei.com/osyunwei.sh 5,15,25,35 11 * * 1-5 root /home/www.osyunwei.com/osyunwei.sh */10 13-15 * * 1-5 root /home/www.osyunwei.com/osyunwei.sh 27、每周一到周五8:30、8:50、9:30、10:00、10:30、11:00、11:30、13:30、14:00、14:30、5:00分別執行一次 30,50 8 * * 1-5 root /home/www.osyunwei.com/osyunwei.sh 30 9 * * 1-5 root /home/www.osyunwei.com/osyunwei.sh */30 10-11 * * 1-5 root /home/www.osyunwei.com/osyunwei.sh 30 13 * * 1-5 root /home/www.osyunwei.com/osyunwei.sh 0,30 14-15 * * 1-5 root /home/www.osyunwei.com/osyunwei.sh 28、每天23:50執行 50 23 * * * root /home/www.osyunwei.com/osyunwei.sh 29、每天10:00、16:00執行 0 10,16 * * * root /home/www.osyunwei.com/osyunwei.sh 30、每天5:30執行 30 5 * * * root /home/www.osyunwei.com/osyunwei.sh 31、每周一到周五9:30執行 30 9 * * 1-5 root /home/www.osyunwei.com/osyunwei.sh 32、每周一到周五13:00執行 0 13 * * 1-5 root /home/www.osyunwei.com/osyunwei.sh 33、每天7:51執行 51 7 * * * root /home/www.osyunwei.com/osyunwei.sh 34、每天7:53、12:40分別執行一次 53 7 * * * root /home/www.osyunwei.com/osyunwei.sh 40 12 * * * root /home/www.osyunwei.com/osyunwei.sh 35、每天7:55執行 55 7 * * * root /home/www.osyunwei.com/osyunwei.sh 36、每天8:10、16:00、20:00分別執行一次 10 8 * * * root /home/www.osyunwei.com/osyunwei.sh 0 16 * * * root /home/www.osyunwei.com/osyunwei.sh 0 20 * * * root /home/www.osyunwei.com/osyunwei.sh 37、每天7:57、8:00分別執行一次 57 7 * * * root /home/www.osyunwei.com/osyunwei.sh 0 8 * * * root /home/www.osyunwei.com/osyunwei.sh
原創文章,作者:wencx,如若轉載,請注明出處:http://www.www58058.com/46003