at計划任務簡介
使用at命令,可以指定某一任務(作業)在將來的特定時間運行。該作業可能是一次備份,系統檢查或者特定時間發送通知。該任務會在與shell會話斷開連接的情況下運行。
在特定時間內執行任務后,在該任務會在at的任務隊列中關閉。如果任務重沒有做輸出重定向,那么輸出的任務會以郵件的方式給用戶結果。
輸入at命令后,按回車鍵並繼續鍵入作業中不包含的其他命令。任務可以有多個命令組成,在完成鍵入要運行的命令時,在單獨出現的一行中按Ctrl+D完成任務
[root@localhost ~]# at 09:00 at> ls at> date job 1 at Tue Aug 28 09:00:00 2018 [root@localhost ~]# at -l 您在 /var/spool/mail/root 中有新郵件 [root@localhost ~]# atrm 1 Cannot find jobid 1 [root@localhost ~]#
郵件內容: anaconda-ks.cfg Desktop initial-setup-ks.cfg Python-3.5.3 Python-3.5.3.tgz test 2018年 08月 28日 星期二 09:00:01 CST
cron 計划任務簡介
相比較at的任務執行一次,crontab可以設置一個時間點,每次到了這個時間都可以自動執行任務。和at一樣,如果任務重沒有做輸出重定向,那么任務的輸出會以郵件的方式發送給用戶。
crontab [-l|-r|-e]
crontab -e命令將打開空的crontab文件(man 5 crontab)
任務中包含6個字段
分: 0-59
時: 0-23
日: 1-31
月: 1-12
周: 0-7
命令: xxx
05 * * * * 每小時整點過5分鍾 05 02 * * * 每天2:05(早上) 30 08 01 * * 每個月第一天的8:30(早上) 00 07 25 12 * 12月25日7:00(早上) 30 16 * * 5 每個星期五下午16:30 */5 * * * * 每五分鍾(0、5、10、15) */10 9-10 1,15 * * 每個月第一天和第十五天9:00到10:00之間每隔10分鍾
0 0 1 1 0 1月1日的每個周末
系統級計划任務
[root@localhost mail]# ls /etc/cron* /etc/cron.deny /etc/crontab /etc/cron.d: 0hourly raid-check sysstat /etc/cron.daily: logrotate man-db.cron mlocate /etc/cron.hourly: 0anacron /etc/cron.monthly: /etc/cron.weekly: [root@localhost mail]#
Linux日志機制
systemd-journal收集日志消息
rsylog排序並保存消息到/var/log中的日志文件
rsyslog.conf的左邊條目是“selector”,右邊是“action”
/var/log/messages 大多數系統消息都記錄在這里。除了相關驗證的消息,郵件處理,定期運行的作業,純調試相關的
/var/log/secure 該日志記錄安全和相關驗證的消息和錯誤
/var/log syslog 保存所有日志文件的目錄
/var/log/maillog保存相關郵件服務器的消息
/var/log/cron 保存相關定期執行任務的日志
查閱日志文件
tail -f命令
logger
查閱systemed日志條目
systemd日志提供了內置搜索和過濾的功能來找到有關潛在問題或系統狀態的信息
journalctl命令
journalctl -n 命令限制一定數量行的輸出
journalctl -p 命令限制一定優先級消息的輸出
journalctl -f 類似tail -f的工作
journalctl -b 命令限制輸出特定的啟動
journalctl --since 和 journal --until限制輸出的時間范圍
輸出服務器上一直運行的pid為1,源於systemd的進程
journalctl_PID = 1
顯示服務器上uid為81的用戶啟動的系統服務的systemd日志消息
journalctl_UID = 81
在服務器輸出priority為warning的日志消息
journalctl -p warning
創建journalctl查詢,顯示服務器之前10分鍾記錄的所有日志事件,假設當前時間 9:15:00
journalctl --since 9:05:00 --unitl 9:15:00
僅顯示服務器上sshd服務的事件,從早上9:00:00開始直到記錄sshd.service
journalctl --since 9600600 _SYSTEMD_UNIT="sshd.service"
保存systemd日志
配置systemd-journald存儲日志到磁盤上而不是內存中
日志在重啟之后持久保存,因此用戶可以使用journalctl的高級功能,對最后一次系統啟動之前的消息
systemd日志寫入到磁盤
配置systemd日志在重啟之后可以持久訪問
配置目錄/var/log/journal
[root@localhost mail]# mkdir /var/log/journal [root@localhost mail]# chown root:systemd-journal /var/log/journal/ [root@localhost mail]# chmod 2755 /var/log/journal/ [root@localhost mail]#
發送USR1信號給systemd-journald或者重新啟動服務
killall -USR1 systemd-journald
驗證保存到/var/log/journal下的日志文件
[root@localhost mail]# ls /var/log/journal/17864a38d41d4b6e860d389f6c75531b/ system.journal [root@localhost mail]#
日志服務:
Server:
man 5 rsyslog.conf
[root@localhost mail]# cat /etc/rsyslog.conf # rsyslog configuration file # For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html # If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html #### MODULES ####
[root@localhost mail]# tail -f /var/log/messages^C [root@localhost mail]# service rsyslog restart Redirecting to /bin/systemctl restart rsyslog.service [root@localhost mail]# cat /etc/rsyslog.conf # rsyslog configuration file # For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html # If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html #### MODULES ####
[root@localhost mail]# service rsyslog restart Redirecting to /bin/systemctl restart rsyslog.service [root@localhost mail]# logger -i -t "test" hello,this is test message [root@localhost mail]#
日志輪轉logrotate
將“輪轉”日志,以避免日志占滿包含/var/log的文件系統,輪轉日志文件時,使用擴展名對其進行重命名,擴展名中指示輪轉日期:
[root@localhost mail]# ls /var/log/ anaconda cups ntpstats tallylog audit dmesg pluto tuned boot.log firewalld ppp vmware-vgauthsvc.log.0 boot.log-20180821 gdm qemu-ga vmware-vmsvc.log boot.log-20180822 glusterfs rhsm wpa_supplicant.log boot.log-20180823 grubby_prune_debug sa wtmp boot.log-20180824 journal samba Xorg.0.log boot.log-20180827 lastlog secure Xorg.1.log boot.log-20180828 libvirt secure-20180828 Xorg.9.log btmp maillog speech-dispatcher yum.log chrony maillog-20180828 spooler cron messages spooler-20180828 cron-20180828 messages-20180828 sssd [root@localhost mail]#
cron作業每日運行一次logrotate程序,以查看是否有任何日志需要輪轉。
大多數日志文件每周輪轉一次,但是logrotate輪轉文件的速度有時候較快,有時候較慢,或者在文件達到特定大小時進行輪轉
[root@localhost mail]# cat /etc/logrotate.conf # see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file dateext # uncomment this if you want your log files compressed #compress # RPM packages drop log rotation information into this directory include /etc/logrotate.d # no packages own wtmp and btmp -- we'll rotate them here /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 } # system-specific logs may be also be configured here. [root@localhost mail]#
