八週一次課(5月11日)linux任務計劃cron、chkconfig工具、systemd管理服務、unit介紹、target介紹

10.23 linux任務計劃cronlinux

配置文件, cat  /etc/crontabshell

重點是上圖第二個紅色框框的內容,前面的五個「 」,分別表示分鐘、小時、日期、月份、星期。user-name 表示用戶名,沒有的話默認是 root ,command to be executed 表示要執行的命令。vim

輸入命令 crontab -e,回車,就會進入到配置文件裏bash

用法和 vim 是同樣的,按字母「i」進入編輯模式,「Esc」退出編輯,「:wq」保存並退出, 「:q」退出,「:q!」強制退出。
如今來說解一下任務計劃:ssh


「0 3 」:表示天天的凌晨3點。表示全部的範圍。分鐘位就是0-59,小時位表示0-23,日期表示1-31,月份表示1-12,星期表示1-7。
「0 3 1-10 /2 2,5 」:表示雙月1-10號的週二和週五凌晨3點。其中,月份這邊「/2」表示能夠被2除,就是雙月的意思,小時這邊/2就表示每隔兩小時。
這邊沒有年份,是由於星期能夠肯定惟一性,每年的月份和星期都不同。
0 3 1-10 /2 2,5 /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log 這個任務計劃裏,/bin/bash 表示用戶,/usr/local/sbin/123.sh 表示文件裏面有個shell腳本,執行裏面的命令。>>/tmp/123.log 2>>/tmp/123.log 表示任務計劃的結果所有追加到文件 /tmp/123.log 裏面。
任務計劃寫入完畢,保存並退出,還須要再啓用服務,輸入命令 systemctl start crond,回車便可。而後再檢查一下服務有沒有啓動,socket

輸入命令 ps aux |grep cron 查看進程工具

 systemctl status crond   查看狀態命令行

若是是綠色的就表示已啓動,停用的話沒有顏色顯示。rest

注意事項:
shell腳本里面的命令要使用絕對路徑,不然會沒有執行。
不在配置文件裏面的PTAH中的命令就須要使用絕對路徑,還有一種方法就是將命令加入到配置文件的PTAH中。
最穩妥的辦法仍是直接寫絕對路徑比較好,PTAH裏面的內容不要去動。
寫任務計劃的時候,最好所有追加到一個日誌文件裏,正確和錯誤的輸出都要寫上,這樣纔有據可查。
怎麼備份?使用命令 crontab -l,能夠看到任務計劃。crontab 的文件在 /var/spool/cron/ 目錄裏,按用戶名分紅多個文件,例如 root 用戶在 /var/spool/cron/root 裏。這個文件裏面的內容就是命令 crontab -l 執行結果列出的內容。因此備份的話,直接複製這個文件就能夠了。選項 -r 是刪除的意思。
總結:
crontab -e 編輯
crontab -l 查看
crontab -r 刪除日誌

10.24 chkconfig工具

chkconfig 這個工具的應用是在 CentOS6 及之前的版本,在CentOS7版本里面沒有使用了,可是爲了跟以前的版本兼容,依然可使用 chkconfig。

命令 chkconfig --list  查看當前系統使用的chkconfig服務

能夠看到只有有兩個服務netconsole和network,那麼其餘的服務在哪裏呢?注意閱讀上圖的注意內容,大概意思就是CentOS6 及之前的版本使用的服務是基於SysV服務,而在CentOS7版本里面使用的服務是基於systemd服務。
chkconfig 這個工具中僅剩的4個服務,存在於文件 /etc/init.d/ 中

netconsole和network都有7個級別,其中networkd的二、三、四、5級別都是開啓的狀態,使用命令 chkconfig network off 以後,就所有關閉了,使用命令 chkconfig network on 以後,又能夠開啓。這7個級別分別表示:0 表示關機,1表示單用戶模式,2表示多用戶模式(不帶 圖形,少nfs服務),3表示多用戶模式(不帶圖形),4表示保留級別(暫時沒用),5表示多用戶模式(帶圖形),6表示重啓。在CentOS6 及之前的版本中才有這些級別之分,開機時定位在哪一個級別,就會啓動哪一個級別的模式。如今的CentOS7版本就沒有這些級別之分了。在CentOS6 及之前的版本中,更改文件 /etc/inittab 能夠去定義開機的運行級別

chkconfig --level3 network off   3級別關閉

chkconfig --level45 network off  45級別關閉

chkconfig --level345 etwork on   345級別開啓

能夠把腳本加入到服務列表裏面,自定義一個服務,添加的服務要在 /etc/init.d/ 目錄下,才能夠添加成功

輸入命令 chkconfig --del 123  刪除自定義服務

總結:
chkconfig --list 列出全部的服務
chkconfig network off 關閉服務
chkconfig network on 開啓服務
chkconfig --level 3 network off 關閉3級別服務
chkconfig --level 45 network off 同時關閉4和5級別服務
chkconfig --add 123 將123服務添加到chkconfig工具裏

 10.25 systemd管理服務

systemctl list-unit-files     //列出全部啓動文件

systemctl list-units --all --type=service  //僅查看service文件

 systemctl list-units --type=service     // 列出啓動的service 文件

systemctl enable crond.service   //讓服務開機啓動,這邊的 .service 是能夠省略的。
systemctl disable crond  //禁止服務開機啓動
systemctl status crond   //查看服務狀態

systemctl stop crond //中止服務
systemctl start crond  //啓動服務
systemctl restart crond  //重啓服務
systemctl is-enabled crond   //檢查服務是否開機啓動

10.26 unit介紹

軟連接文件指向的原文件是 /usr/lib/systemd/system/crond.service ,

使用命令ls  /usr/lib/systemd/system/ 

這個路徑下有不少類型的文件和目錄,這些文件都叫 unit 。
主要有如下幾種類型:
service 系統服務
target 多個unit組成的組
device 硬件設備
mount 文件系統掛載點
automount 自動掛載點
path 文件或路徑
scope 不是由systemd啓動的外部進程
slice 進程組
snapshot systemd 快照
socket 進程間通訊套接字
swap swap文件
timer 定時器
接着進入 /usr/lib/systemd/system/ 目錄下,查看 runlevel,見下圖,

entOS7這邊也有7個運行級別,分別是0-6的target軟連接文件,指向的是後面的路徑。這7個運行級別,與CenOS6及以前的版本,基本上均可以對應起來。
接着來看一下,unit的幾個相關命令,

systemctl list-units   //查看運行的unit

systemctl list-unit --all  //查看全部的unit

systemctl list-units --all --state=inactive   //指定狀態查看unit

systemctl list-units --type=service   //列出全部正在運行的、類型爲 service 的 Unit 

 systemctl list-units --all --type=service   //列出全部類型爲service的unit

 systemctl is-active crond.service    //查看某個服務是否爲active

10.27 target介紹

 systemctl list-unit-files --type=target    //列出系統裏的全部target

.

systemctl list-dependencies multi-user.target   //查看指定target有哪些unit

systemctl get-default  // 查看默認的target

更改 target 類型,能夠更改開機的啓動級別,相似CentOS6及之前版本的更改配置文件來實現更改運行級別。 

systemctl set-default multi-user.target    //設置默認的 target

上圖中,文件 /etc/systemd/system/default.target 就是一個軟連接文件
unit 和 service 的關係以下:
一個 service 屬於一種類型的 unit
多個 unit 組成了一個 target
一個 target 裏面包含了多個 service

總結:

cat /etc/crontab 查看任務計劃的配置文件
「 user-name command to be executed 」 五個「 」分別表示分鐘、小時、日期、月份、星期,user-name 表示用戶名,沒有的話默認是 root ,command to be executed 表示要執行的命令。
crontab -e 進入配置文件,輸入命令行保存退出
0 3 1-10 星/2 2,5 /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log 這個任務計劃裏,/bin/bash 表示用戶,/usr/local/sbin/123.sh 表示文件裏面有個shell腳本,執行裏面的命令。>>/tmp/123.log 2>>/tmp/123.log 表示任務計劃的結果所有追加到文件 /tmp/123.log 裏面。
systemctl start crond 重啓服務
ps aux |grep cron 檢查進程
systemctl status crond 查看狀態
crontab -e 編輯
crontab -l 查看
crontab -r 刪除

chkconfig --list 查看當前系統使用 chkconfig 工具的服務
chkconfig network off 關閉服務
chkconfig network on 開啓服務
chkconfig --level 3(或345) network off 關閉指定的一個或多個級別服務
chkconfig --level 3(或345) network on 開啓指定的一個或多個級別服務
cd /etc/init.d/
cp network 123 這兩步操做爲下面的增長或刪除自定義服務作準備
chkconfig --add 123 增長自定義服務
chkconfig --del 123 刪除自定義服務

systemctl list-unit-files 查看全部的unit服務
systemctl list-units --all --type=servic 僅查看 service 類型的服務
systemctl list-units --type=service 只列出 active 狀態的文件
systemctl enable crond.service 讓服務開機啓動,這邊的 .service 是能夠省略的。
systemctl disable crond 禁止服務開機啓動
systemctl status crond 查看服務狀態
systemctl stop crond 中止服務
systemctl start crond 啓動服務
systemctl restart crond 重啓服務
systemctl is-enabled crond 檢查服務是否開機啓動

systemctl list-units 列出正在運行的unit
systemctl list-units --all 列出全部,包括失敗的或者inactive的
systemctl list-units --all --state=inactive 列出指定狀態inactive的unit
systemctl list-units --type=service 列出指定狀態service的unit,failed 狀態也會出現
systemctl list-units --type=service --state=active 僅列出指定狀態service的unit
systemctl list-units --all --type=service 列出所有狀態的 service
systemctl list-units --type=service 列出狀態爲active的service
systemctl is-active crond.service 查看某個服務是否爲active

systemctl list-unit-files --type=target 列出系統裏的全部 target systemctl list-dependencies multi-user.target 查看指定 target 下面有哪些 unit systemctl get-default 查看系統默認的 target  systemctl set-default multi-user.target 設置默認的 target  cat /usr/lib/systemd/system/sshd.service 查看 ssh.service 屬於哪個 target unit 和 service 的關係以下: 一個 service 屬於一種類型的 unit 多個 unit 組成了一個 target 一個 target 裏面包含了多個 service

相關文章
相關標籤/搜索