一.crond簡介
1、基本介紹
? ??? ??crond是linux下用來周期性的執行某種任務或等待處理某些事件的一個守護進程,與windows下的計劃任務類似,當安裝完成操作系統后,默認會安裝此服務工具,并且會自動啟動crond進程,crond進程每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。Linux下的任務調度分為兩類,系統任務調度和用戶任務調度。
系統任務調度:
[root@localhost ~]# cat /etc/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) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
注意:該文件下的“*”從左往右代表分、時、日、月、周。所以最小周期是分鐘
示例:進入/etc/crontab? 寫入以最小周期刪除/opt/下的所有內容,需等待一分鐘。
[root@localhost ~]# vim /etc/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) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
* * * * * root rm -rf /opt/*
[root@localhost ~]# mkdir /opt/dir1
[root@localhost ~]# systemctl restart crond.service
[root@localhost opt]# ls
dir1
[root@localhost opt]# ls
[root@localhost opt]#
寫入/etc/crontab文件的內容必須要systemctl restart crond.service重啟一下才能生效。
用sed命令注釋最后一行
[root@localhost ~]# sed -i 's/.*root rm -rf.*/#&/' /etc/crontab
[root@localhost ~]# cat /etc/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) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
#* * * * * root rm -rf /opt/*
刪除最后一行
[root@localhost ~]# sed -i '/.*root rm -rf.*/d' /etc/crontab
[root@localhost ~]# !cat
cat /etc/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) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
用戶任務調度:
用戶定期要執行的工作,比如用戶數據備份、定時郵件提醒等。用戶可以使用 crontab 工具來定制自己的計劃任務。所有用戶定義的crontab 文件都被保存在 /var/spool/cron目錄中。其文件名與用戶名一致。下面是幾個特殊的文件介紹:
文件:/etc/cron.deny ? ? ? ? ? ? ? ?該文件中所列用戶不允許使用crontab命令
文件:/etc/cron.allow ? ? ? ? ? ? ? ?該文件中所列用戶允許使用crontab命令
文件:/var/spool/cron/ ? ? ? ? ? ? ?所有用戶crontab文件存放的目錄,以用戶名命名
[root@localhost ~]# crontab -e -u root
crontab: installing new crontab
[root@localhost ~]# crontab -l -u root
* * * * * rm -rf /opt/*
注意:crontab -l -u僅限于查看用crontab -e -u 寫入的內容
二、crond服務
安裝crontab
[root@localhost ~]# yum install crontabs
服務操作說明
systemctl start crond??#啟動服務
systemctl stop crond???#關閉服務
systemctl restart crond #重啟服務
systemctl reload crond?#重新載入配置
查看crontab服務狀態
[root@localhost ~]# systemctl status crond
○ crond.service - Command Scheduler
加入開機自啟動
[root@localhost ~]# systemctl enable crond
三、crontab命令詳解
命令參數
-u user:用來設定某個用戶的crontab服務,例如,“-u ixdba”表示設定ixdba用戶的crontab服務,此參數一般有root用戶來運行。
file:file是命令文件的名字,表示將file做為crontab的任務列表文件并載入crontab。如果在命令行中沒有指定這個文件,crontab命令將接受標準輸入(鍵盤)上鍵入的命令,并將它們載入crontab。
-e:編輯某個用戶的crontab文件內容。如果不指定用戶,則表示編輯當前用戶的crontab文件。
-l:顯示某個用戶的crontab文件內容,如果不指定用戶,則表示顯示當前用戶的crontab文件內容。
-r:從/var/spool/cron目錄中刪除某個用戶的crontab文件,如果不指定用戶,則默認刪除當前用戶的crontab文件。
-i:在刪除用戶的crontab文件時給確認提示。
四、使用注意事項
1.注意環境變量
2、注意清理系統用戶的郵件日志
3、系統級任務調度與用戶級任務調度
4、其他注意事項
新創建的cron job,不會馬上執行,至少要過2分鐘才執行。
如果重啟cron則馬上執行。當crontab突然失效時,可以嘗試/etc/init.d/crond restart解決問題。或者查看日志看某個job有沒有執行/報錯tail -f /var/log/cron。
千萬別亂運行crontab -r。它從Crontab目錄(/var/spool/cron)中刪除用戶的Crontab文件。刪除了該用戶的所有crontab都沒了。
在crontab中%是有特殊含義的,表示換行的意思。如果要用的話必須進行轉義\%,如經常用的date ‘+%Y%m%d’在crontab里是不會執行的,應該換成date ‘+\%Y\%m\%d
Syslog日志服務(了解一下)
日志級別(英文) | 級別值 | 含義描述 | 典型應用場景 | 示例信息 |
---|---|---|---|---|
DEBUG(調試) | 7 | 最詳細的調試信息,用于開發和問題排查,記錄程序內部運行細節 | 應用程序開發調試、復雜問題診斷 | "用戶登錄函數被調用,參數:username=admin" |
INFO(信息) | 6 | 正常運行狀態信息,確認系統按預期工作,無錯誤 | 服務啟動 / 停止、用戶正常操作、定時任務執行成功 | "Nginx 服務已啟動,監聽端口 80" |
NOTICE(注意) | 5 | 需要注意的非嚴重異常,不影響系統正常運行 | 用戶密碼錯誤次數較少、非預期但輕微的事件 | "用戶 admin 輸入密碼錯誤 1 次" |
WARNING(警告) | 4 | 潛在問題或異常,不處理可能導致錯誤,但當前系統仍可運行 | 磁盤空間不足(未達閾值)、網絡連接波動、配置參數不優 | "根目錄磁盤使用率達到 85%(閾值 90%)" |
ERROR2(錯誤) | 3 | 錯誤事件,導致部分功能失效,但不影響系統整體運行 | 程序模塊崩潰、文件讀取失敗、服務子進程異常退出 | "MySQL 備份失敗:無法訪問 /data/backup 目錄" |
CRITICAL(嚴重) | 2 | 嚴重錯誤,可能導致系統核心功能失效,需立即關注 | 數據庫連接失敗、關鍵服務崩潰、權限配置錯誤導致核心功能不可用 | "Nginx 服務崩潰,已自動重啟(第 3 次)" |
ALERT(警報) | 1 | 緊急情況,必須立即手動干預,否則將產生嚴重后果 | 磁盤空間耗盡、root 用戶登錄失敗多次、關鍵配置文件被篡改 | "根目錄磁盤使用率 100%,系統無法寫入數據" |
EMERGENCY(緊急) | 0 | 最高級別,系統處于不可用狀態(災難級故障),需立即處理 | 系統內核崩潰、文件系統損壞、服務器斷電前的最后日志 | "系統內存耗盡,觸發 OOM killer,終止了 10 個進程" |
Linux Journalctl命令
Journalctl基礎使用
查看所有日志(分頁輸出)
journalctl或者journalctl --no-pager
[root@localhost ~]# journalctl -xe
9月 13 06:40:43 localhost.localdomain sshd[232927]: Close session: user root from 192.168.60.1 p>
查看最新的n條日志
[root@localhost ~]# journalctl -n 6
9月 13 06:51:54 localhost.localdomain sshd[232927]: Starting sessi>
9月 13 06:51:55 localhost.localdomain sshd[232927]: Close session:>
9月 13 06:52:05 localhost.localdomain sshd[232927]: Starting sessi>
9月 13 06:52:05 localhost.localdomain sshd[232927]: Close session:>
9月 13 06:52:16 localhost.localdomain sshd[232927]: Starting sessi>
9月 13 06:52:16 localhost.localdomain sshd[232927]: Close session:
實時查看新添加的日志條目
[root@localhost ~]# journalctl -f
9月 13 06:42:41 localhost.localdomain sshd[232927]: Starting session: command for root from 192.168.60.1 port 65315 id 2
根據服務名稱過濾
[root@localhost ~]# journalctl -u atd.service
9月 12 14:08:15 localhost.localdomain systemd[1]: Started Deferred>
9月 12 14:08:15 localhost.localdomain (atd)[1096]: atd.service: Re>
DHCP協議(動態主機配置協議)
一、 概述
作用:動態的進行IP地址分配
服務端的監聽端口 67/udp
客戶端監聽端口 68/udp
網絡架構 C/S:client/server
DHCP的優勢
提高配置效率
減少配置錯誤
DHCP的分配方式
手動分配:固定不變,工程師進行地址綁定
自動分配:但是不進行地址回收
動態分配:進行地址回收
注意
? 同一個網絡環境下不允許存在多個DHCP服務器
課后實驗
實驗拓撲:
實驗要求
1. DHCP服務器能夠為兩個網絡分別分配IP地址。
2. 內部客戶機設置為固定獲得某一個IP地址。
(1)DHCP服務器的配置(單一網段)
安裝:yum install -y dhcp
安裝完了以后一定要把net模式換成vmnet1模式
進入目錄:cd /etc/sysconfig/network-scripts
配置網關:修改BOOTPRTO=static
在最下方加入IPADDR=192.168.100.253
PREFIX=24
GATEWAY=192.168.100.254
重啟網絡:systemctl restart NetworkManager
查看一下IP是否配置成功:ip a
關閉防火墻且設置防火墻的工作模式為完全關閉狀態
systemctl restart firewalld && systemctl disable firewalld
進入selinux安全上下文里修改其工作模式為disabled狀態
vim /etc/selinux/config
將selinux=enforcing改為selinux=disabled
重啟:reboot
查看selinux工作模式
getenforce ——>disabled
確定關閉防火墻后,進入/etc/dhcp
cd /etc/dhcp
復制該文件到./dhcpd.conf內
cp /usr/share/doc/dhcp-server/dhcpd.conf.example ./dhcpd.conf
詢問是否覆蓋
yes
編譯DHCP配置文件dhcpd.conf
vim dhcpd.conf
先刪除# A slightly different ......這一行上面三塊部分的所有內容
然后進行編譯此行下的內容
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.1 192.168.100.199;
option domain-name-servers 8.8.8.8;
option domain-name "jx.com";
option routers 192.168.100.254;
option broadcast-addrass 192.168.100.255;
default-lease-time 600;
max-lease-time 7200;
}
subnet 192.168.200.0 netmask 255.255.255.0 {
range 192.168.200.1 192.168.200.199;
option domain-name-servers 8.8.8.8;
option domain-name "jx.com";
option routers 192.168.200.254;
option broadcast-addrass 192.168.200.255;
default-lease-time 600;
max-lease-time 7200;
}
最后重啟:
systemctl restart dhcpd
(2)配置路由器(配兩塊網卡)
先安裝dhcpfuwu:
yum install -y dhcp
然后:
cd /etc/sysconfig/network-scripts/
查看網卡:
ls
ip a
nmcli c add type ethernet con-name ens224 ifname ens224
再查看網卡:
ls
開始配置ens160:
vim ifcfg-ens160
其中修改:BOOTPROTO=static
在最后添加:IPADDR=192.168.100.254
PREFIX=24
配置ens224:
vim ifcfg-ens224
其中修改:BOOTPROTO=static
在最后添加:IPADDR=192.168.200.254
PREFIX=24
重啟網絡:
systemctl restart NetworkManager
查看IP:ip a
nmcli c down ens160
nmcli c up ens160
ip a
再把路由功能打開
vim /etc/sysctl.conf
修改net.ipv4.ip_forward=1
查看是否打開:
sysctl -p
最后打開中繼服務:
dhcrelay 192.168.100.253
(3)打開dhcp服務器和路由器進行抓包驗證
dhcp:ping 192.168.200.1
路由器:tcpdump -i any (抓包)
看成果1.? 2.