1. 程式人生 > >Linux系統任務計劃和系統服務管理

Linux系統任務計劃和系統服務管理

腳本 可能 發的 編輯器 多個 掛載點 for 多個service cto

一、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系統任務計劃和系統服務管理