1. 程式人生 > 實用技巧 >5月11日

5月11日

10.23 linux任務計劃cron

1. linux任務計劃cron

linux大部分系統管理工作都是通過定期自動執行某個指令碼來完成的,那麼如何定期執行某個指令碼呢?這就要藉助linuxcron功能了,這部分的內容很重要,請牢記

命令 crontab

linux的任務計劃功能的操作都是通過crontab命令來完成的,其常用的選項有以下幾個:

1.1 -u:表示指定某個用戶,不加-u選項則為當前使用者。

blob.png

1.2 -e:表示制定計劃任務 (執行內容:01 10 05 06 3 echo "ok" > /root/cron.log)

blob.png

使用crontab-e來進行編寫任務計劃,這實際上是使用

vim工具打開了crontab的配置檔案,我們寫下如下內容:

blob.png

從左到右:在125日(這一天必須是星期2)的1001分執行命令 echo “ok” > /root/cron.log

編寫格式:分 時 日 月 周 user command

1.3 -l:表示列出計劃任務

blob.png

1.4 -r:表示刪除計劃任務

blob.png

1.5 備份計劃任務檔案:

crontab -e 實際上是打開了 “/var/spool/cron/username” (如果是root則開啟的是/var/spool/cron/root)這個檔案,所以不要直接去編輯那個檔案,因為可能會出錯,所以一定要使用 crontab -e 來編輯,另外備份的話,直接複製一份這個目錄下的檔案即可:

blob.png

分範圍0-59,時範圍0-23,日範圍1-31,月範圍1-12,周1-7

可用格式1-5表示一個範圍15

可用格式1,2,3表示1或者2或者3

可用格式*/2表示被2整除的數字,比如小時,那就是每隔2小時

1.6 設定好了所有的計劃任務後需要檢視一下crond服務是否啟動或者檢視程序啟動

檢視crond服務是否啟動命令systemctl status crond

blob.png

1.6.1檢視程序是否啟動命令:ps aux|grep cron

blob.png

1.7 如果是停止狀態,則需要啟動它:

啟動cron命令:systemctl start crond

停用cron命令:systemctl stop crond

blob.png

練習題 :

cron的內容不算太難,但是需要你牢固掌握,阿銘給出一些練習題,幫助你熟悉這個cron的應用。

1.每天凌晨1點20分清除/var/log/slow.log這個檔案

2.每週日3點執行 “/bin/sh /usr/local/sbin/backup.sh”

3.每月14號4點10分執行 “/bin/sh /usr/local/sbin/backup_month.sh”

4.每隔8小時執行 “ntpdate time.windows.com”

5.每天的1點,12點,18點執行 “/bin/sh /usr/local/sbin/test.sh”

6.每天的9點到18點執行 “/bin/sh /usr/local/sbin/test2.sh”

習題答案:

1. 20 1 * * * echo "" >/var/log/slow.log

2. 0 3 * * 0 /bin/sh /usr/local/sbin/backup.sh

3. 10 4 14 * * /bin/sh /usr/local/sbin/backup_month.sh

4. 0 */8 * * * ntpdate time.windows.com

5. 0 1,12,18 * * * /bin/sh /usr/local/sbin/test.sh

6. 0 9-18 * * * /bin/sh /usr/local/sbin/test2.sh

練習完上面的題目,相信你會有一些小疑問,這裡要簡單說一下,每隔8小時,就是用全部小時(0-23)去除以8,仔細想一下結果,其實算出來應該是0,8,16三個數。當遇到多個數(分鐘、小時、月、周)例如第5題,則需要用逗號隔開。而時間段是可以用n-m的方式表示的,比如第六題中的(9-18)。

10.24 chkconfig工具

.chkconfig工具(系統服務管理)

windows系統有開機啟動項,linux也同樣有開機啟動項。在centos6上的開機啟動項管理工具為chkconfig,所有的開機啟動服務都可以在/etc/init.d/目錄看到。但是centos7已經不在chkconfig管理開機啟動項。

blob.png

1、命令:chkconfig --list列出所有的服務及其每個級別的開啟狀態,如下所示

blob.png

上提示翻譯:

注意:該輸出結果只顯示 SysV 服務,並不包含原生 systemd 服務。SysV 配置資料可能被原生 systemd 配置覆蓋。 如果您想列出 systemd 服務,請執行 'systemctl list-unit-files'。 欲檢視對特定 target 啟用的服務請執行 'systemctl list-dependencies [target]'

在這裡我們會看到一個提示,它提示我們該命令輸出的內容並沒有包含Centos 7原生systemd服務,而這裡僅僅列出來SysV服務,這也是/etc/init.d/目錄下面只有一兩個啟動指令碼的根本原因。也就是說,早期CentOS版本(7之前)採用的服務管理都是Sysv,7換成了systemd

2執行級別為系統啟動級別,具體含義如下:

0 shutdown關機

1 單使用者模式

2 NFS支援的多使用者模式

3 完全多使用者模式,常用的命令列模式

4 保留給使用者自定義

5 圖形介面登入,比3多了一個圖形介面

6 重啟

執行級別0,1,6作為保留模式。通常做設定時,如果不指定級別,則預設為更改2,3,4,5

2.1 命令:chkconfig --level 3 network off關閉3級別的network服務

blob.png

(不加 –level 3 就是將0-6個級別都關掉)

3、命令:chkconfig –level 345network off (關閉3,45級別network服務)

blob.png

4、命令:chkconfig network on //省略級別預設是針對2345操作

blob.png

5命令: chkconfig--del network/ /刪除network服務

blob.png

6chkconfig–addnetwork //新增network服務

blob.png

10.25 systemd管理服務

一、systemd管理服務

1、systemctl list-units –all –type=service (列出系統所有服務)

blob.png

1.1 ls /usr/lib/systemd/system //啟動服務對應的指令碼檔案目錄

blob.png

2、幾個常用的服務相關的命令

systemctl enable crond.service //讓服務開機啟動

systemctl disable crond //不讓開機啟動

systemctl status crond //檢視狀態

systemctl stop crond //停止服務

systemctl start crond //啟動服務

systemctl restart crond //重啟服務

systemctl is-enabled crond //檢查服務是否開機啟動

2.1 systemctl enable crond.service //讓服務開機啟動

blob.png

2.2 systemctl disable crond //不讓開機啟動

blob.png

2.3 systemctl status crond //檢視狀態

blob.png

2.4 systemctl stop crond //停止服務

2.5 systemctl start crond //啟動服務

2.6 systemctl restart crond //重啟服務

2.7 systemctl is-enabled crond //檢查服務是否開機啟動

10.26 unit介紹

一、unit介紹

1. /usr/lib/systemd/system 此目錄下列出了很多檔案,這些檔案都是unit。

blob.png

系統所有unit,分為類別如下:

service:系統服務

target:多個unit組成的組

device:硬體裝置

mount:檔案系統掛載點

automount:自動掛載點

path:檔案或路徑

scope:不是由systemd啟動的外部程序

slice:程序組

snapshot:systemd快照

socket:程序間通訊的套接字

swap:swap檔案

timer:定時器

以上每種型別的檔案都為一個unit,正是這些unit才組成了系統的各個資源(各個服務,各個裝置等)。

2.unit相關的命令

systemctl list-units //列出正在執行(active)的unit

systemctl list-units --all //列出所有unit(包括失敗的或者inactive的)

systemctl list-units --all --state=inactive //列出inactive的unit

systemctl list-units --type=service//列出狀態為active的service

systemctl is-active crond.service //檢視某個unit服務是否為active


10.27 target介紹

一、target介紹

target類似於centos6的啟動級別,但target內又支援多個target同時啟動,target其實是多個unit的組合。啟動target就是啟動多個unit,用target來管理這些unit

1.檢視當前系統所有的target

命令:systemctl list-unit-files --type=target

blob.png

2. 檢視指定target下面有哪些unit

命令:systemctl list-dependencies multi-user.target

blob.png

3.檢視系統預設的target

命令:systemctl get-default

blob.png

4.設定預設target

命令:systemctl set-defaultmulti-user.target

blob.png

5.執行級別

上面提到的multi-user.target等同於centos6的執行級別3。其實還有其他幾個target對應

0-6執行級別,如下所示:

blob.png

6.serviceunit以及target之間的聯絡

6.1 一個service屬於一種unit

6.2 多個unit一起組成了一個target

6.3 一個target裡面包含了多個service,你可以檢視/usr/lib/systemd/system/sshd.service裡面【install】部分的內容,它就定義了該service屬於哪一個target

blob.png





轉載於:https://blog.51cto.com/404006045/2115426