Linux系統任務計劃和系統服務管理
crontab命令被用來提交和管理用戶的需要周期性執行的任務,與windows下的計劃任務類似,當安裝完成操作系統後,默認會安裝此服務工具,並且會自動啟動crond進程,crond進程每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。
關於cron任務計劃功能的操作都是通過crontab這個命令來完成的。
常用的選項有:
-u :指定某個用戶,不加-u選項則為當前用戶;
-e :制定計劃任務;
-l :列出計劃任務;
-r :刪除計劃任務。
實例:
1、創建一個計劃任務:
[root@zlinux ~]# crontab -e no crontab for root - using an empty one
使用 crontab -e 來進行編寫任務計劃,這實際上是使用vim工具打開了crontab的配置文件,我們寫下如下內容:
01 10 05 02 1 echo "OK" > /root/crob.log
每個字段的數字從左到右分別表示為:分,時,日,月,周,命令行。而上面的例子的含義是:在2月5日(這一天必須是星期1)的10點01分執行命令echo "ok" > /root/cron.log
。
這是的時間範圍是:
1、分範圍0-59,時範圍0-23,日範圍0-31,月範圍0-12,周1-7
2、可用格式1-5表示一個範圍1到5
3、可用格式1,2,3,表示1或者2或者3
4、可用格式*/2表示被2整除的數字,比如小時,那就是每隔2小時
crontab -e
實際上是打開了 /var/spool/cron/username
(如果是root則打開的是/var/spool/cron/root)這個文件。使用的是vim編輯器,所以要保存的話則在命令模式下輸入:wq即可。但是,你千萬不要直接去編輯那個文件,因為可能會出錯,所以一定要使用crontab -e
來編輯。
2、查看已經設定的任務計劃:
[root@zlinux ~]# crontab -l
01 10 05 02 1 echo "OK" > /root/cron.log
3、保證crond服務的啟動:
[root@zlinux ~]# ps aux | grep crond //查看crond啟動狀態 root 535 0.0 0.0 126264 1640 ? Ss 1月25 0:01 /usr/sbin/crond -n root 9166 0.0 0.0 112676 976 pts/0 R+ 16:28 0:00 grep --color=auto cron [root@zlinux ~]# systemctl stop crond.service //停止crond服務 [root@zlinux ~]# ps aux | grep cron root 9183 0.0 0.0 112676 972 pts/0 R+ 16:29 0:00 grep --color=auto cron [root@zlinux ~]# systemctl start crond.service //開始crond服務 [root@zlinux ~]# ps aux | grep cron root 9193 0.0 0.0 126232 1580 ? Ss 16:29 0:00 /usr/sbin/crond -n root 9195 0.0 0.0 112676 976 pts/0 S+ 16:29 0:00 grep --color=auto cron
二、Linux系統服務管理
1、chkconfig服務管理工具
chkconfig命令檢查、設置系統的各種服務。這是Red Hat公司遵循GPL規則所開發的程序,它可查詢操作系統在每一個執行等級中會執行哪些系統服務,其中包括各類常駐服務。謹記chkconfig不是立即自動禁止或激活一個服務,它只是簡單的改變了符號連接。
chkconfig主要用於CentOS6,Linux系統所有預設服務都可以通過查看/etc/init.d/
目錄:
只能看到幾個文件,因為CentOS7不再延續6的服務管理方案,但是依然可以使用這個命令。
命令實例:
chkconfig --list //列出所有的服務來及每級別開啟狀態
chkconfig --level 3 network off //network服務3級別關閉
chkconfig --level 345 network off //network服務345級別奢望i關閉
chkconfig --del network //刪除服務
chkconfig --add network //增加服務
等級代號含義:
等級0表示:表示關機
等級1表示:單用戶模式
等級2表示:無網絡連接的多用戶命令行模式
等級3表示:有網絡連接的多用戶命令行模式
等級4表示:不可用
等級5表示:帶圖形界面的多用戶模式
等級6表示:重新啟動
2、systemd服務管理
systemctl命令是系統服務管理器指令,它實際上將 service 和 chkconfig 這兩個命令組合到一起。首先列出所有系統服務:
systemctl list-units --all --type=service
這些服務的對應的腳本文件在/usr/lib/systemd/system/
目錄下。
幾個常用服務相關的命令:
systemctl enable crond.service //讓服務開機啟動
systemctl disable crond //不讓開機啟動
systemctl status crond //查看狀態
systemctl stop crond //停止服務
systemctl start crond //啟動服務
systemctl restart crond //重啟服務
systemctl is-enabled crond //檢查服務是否開機啟動
1、unit
ls /usr/lib/systemd/system //系統所有unit
unit類型:
service: 系統服務
target: 多個unit組成的組
device: 硬件設備
mount: 文件系統掛載點
automount: 自動掛載點
path: 文件或路徑
scope: 不是由systemd 啟動的外部進程
slice: 進程組
snapshot: systemd快照
socket: 進程間通信套接字
swap: swap文件
timer: 定時器
以上每種類型的文件都為一個unit,正是這些unit才組成了系統的各個資源。
與unit相關的命令:
systemctl list-units //列出正在運行的unit
systemctl list-units --all //列出所有,包括失敗的或者inactive的
systemctl list-units --all --state=inactive //列出inactive的unit
systemctl list-units --type=service //列出狀態為active的service
systemctl is-active crond.service //查看某個服務是否為active
2、target
系統為了方便管理用target來管理unit。
幾個關於target的命令:
systemctl list-unit-files --type=target //查看所有target
systemctl list-dependencies multi-usrt.target //查看指定target下面有哪些unit
systemctl get-default //查看系統默認的target
systemctl set-default multi-user.target //設置默認target
service、unit和target之間的關系:
1、一個service屬於一種類型的unit
2、多個unit組成了一個target
3一個target裏面包含了多個service,可以查看/usr/lib/systemd/system/sshd.service
看[install]部分,定義了該屬於那個target
Linux系統任務計劃和系統服務管理