1. 程式人生 > >Linux20180511八周一次課cron chkconf systemd unit target

Linux20180511八周一次課cron chkconf systemd unit target

crond

八周一次課(5月11日)

10.23 linux任務計劃cron
10.24 chkconfig工具
10.25 systemd管理服務
10.26 unit介紹
10.27 target介紹
擴展
1. anacron http://blog.csdn.net/strikers1982/article/details/4787226
2. xinetd服(默認機器沒有安裝這個服務,需要yum install xinetd安裝)http://blog.sina.com.cn/s/blog_465bbe6b010000vi.html
3. systemd自定義啟動腳本 http://www.jb51.net/article/100457.htm


Linux任務計劃

技術分享圖片

可能是個shell腳本,也可能是單獨命令。不管是何種形式,都需要某個時間去執行,這樣就需要確定一個時間。


任務計劃的配置文件 etc/crontab

技術分享圖片

定義了變量,環境變量,命令路徑 mailto 發郵件給誰,以及格式。不寫用戶的話,默認是root


定義Linux任務計劃的命令

crontab -e 語法和vim一樣

比如設定一個淩晨3點的任務:

技術分享圖片

解釋:

0 3 * * *0分 3點 每天 每月 每日執行

/bin/bash 說明是要執行shell腳本 後面 /user/local/sbin/123.sh 跟的是要執行的腳本 然後寫入log 因為每天都執行 所以是追加 後面跟的是錯誤的log 也追加到這個文件中

也可以使用範圍來表示時間

0 3 1-10 */2 2,5

淩晨3點0分 1-10號, */2被2整除也就是閏月 周二周五


然後啟動crond這個服務才能使用這個任務計劃

systemctl start crond

然後用檢查進程是否啟動

技術分享圖片

或者使用 systemctl status crond 檢查crond的狀態

技術分享圖片

systemctl stop crond 停掉crond

技術分享圖片

查看當前的任務計劃命令

crontab -l

刪除當前的任務計劃

crontab -r

查看指定用戶的任務計劃

crontab -u root -l

註意:

1. 有時候可能因為寫的腳本裏用的是命令,而不是命令的絕對路徑,有可能會導致無法執行。

2. 每寫一個任務計劃都要寫上追加日誌,這樣有跡可循。

3. 任務計劃的文件位置是 /var/spool/cron/root 對應用戶的cron root下就是root的,其他用戶的cron都有存在對應的用戶名下。所以備份的話可以直接拷貝這的文件到其他位置進行拷貝




Linux系統服務管理 -chkconfig

技術分享圖片


所謂的crontab firewalld 等都是服務,全是服務所以需要有一個服務管理工具。

Centos6是chkconfig,但是7也是同樣兼容的。


將服務顯示出來

chkconfig --list

技術分享圖片

解釋一下,目前看起來只有2個進程,這樣就比較奇怪,其他進程去哪了?

看上面的解釋,這個命令值展示SysV服務,不包含systemd服務,意思是6以及之前版本的服務管理機制是sysv,7用的是systemd,所以systemd是7以及以後版本的服務管理器。從top命令也可以看到這個很重要的進程。

技術分享圖片

技術分享圖片


那chkconfig管理的服務具體的位置路徑是什麽地方呢?

/etc/init.d/ 以後在配置ngix mysql的時候可能還需要把啟動腳本放到這個路徑然後使用chkconfig去管理

技術分享圖片


可以關閉服務

chkconfig network off

技術分享圖片

0-6表示不同的服務級別。

0--關機

1--單用戶 centos6以及以前版本

2--比3少了一個nfs服務

3--多用戶模式 不帶圖像

4--保留級別

5--多用戶,帶圖形界面

6-- 重啟


centos7不存在級別了。6以及之前版本可以通過更改配置文件 /etc/inittab來定義運行級別。


chkconfig 可以指定某個級別是開啟或者關閉

chkconfig --level 3 network off/on

技術分享圖片


也可以將自定義的腳本放到服務中去,必須將腳本放到 /etc/init.d目錄下

然後使用命令

chkconfig --add 新服務

技術分享圖片

當然了,這個新的服務文件的格式必須滿足一些條件 才行。我們看一看。下面兩行是必須的

chkconfig:

description:

技術分享圖片

上面的註釋的意思是,服務必須在運行級2,3,4,5下被啟動或關閉,啟動的優先級是90,關閉的優先級是10。

90是啟動優先級,10是停止優先級,優先級範圍是0-100,數字越大,優先級越低。


有添加就會有刪除


chkconfig --del 服務名

技術分享圖片


服務刪除了,文件還在哦

技術分享圖片



Linux系統服務管理--systemd(centos7的服務管理機制)

技術分享圖片


顯示所有類型的服務的命令

systemctl list-units --all --type=service

不加--all就不會把inactive的列出來

技術分享圖片

技術分享圖片


cron服務開機啟動/不啟動

systemctl enable/disable crond


查看cron狀態

systemctl status crond


停止cron服務

systemctl stop crond


啟動cron服務

systemctl start crond


重啟

systemctl restart crond


檢查cron服務是否開機啟動

systemctl is-enabled crond


技術分享圖片

同時從上面可以得到cron的配置文件的內容

技術分享圖片

技術分享圖片


技術分享圖片

從右邊軟鏈接到左邊,右邊是真正的文件路徑


enable之後就會生成軟鏈接,disable之後軟鏈接就沒有了。


Linux20180511八周一次課cron chkconf systemd unit target