Linux設置日期時間,任務計劃cron,chkconfig,systemd

任務計劃cron

當咱們須要在凌晨執行一條命令或運行一個腳本的時候,咱們可能不會守在電腦旁,等時間到了去操做,常常咱們會使用任務計劃cron來實現。centos

設置系統時間

而使用任務計劃每每會用到日期和時間等數值,可是咱們在安裝centos的時候時間選的是對的,可是在安裝完了以後咱們會發現系統的時間跟實際時間是對不上的,這是由於安裝系統是採用了UTC,簡單來講UTC就是0時區的時間,是國際標準,而咱們中國是處於東八區+8時區。這個時候就須要修改系統時間了。bash

  • 機器上面都有兩個時間,一個是系統時間,一個是硬件時間.
  • 使用date命令能夠查看系統時間
[root@localhost ~]# date
2018年 07月 27日 星期五 21:56:16 CST
  • 使用clock或hwclock查看硬件時間
[root@localhost ~]# clock
2018年07月27日 星期五 21時57分01秒  -0.810611 秒
[root@localhost ~]# hwclock
2018年07月27日 星期五 21時57分09秒  -0.219701 秒
  • 設置系統時間可使用 date -s (月月日日時時分分年年年年.秒秒) 括號裏每一個字表明一個字符,好比2018年2月3日10點55分44秒 date 020310552018.44
[root@llll ~]# date  020310552018.22
2018年 02月 03日 星期六 10:55:22 CST
  • 或者分開設置,先設置日期date -s 07/27/18這裏是拿2018-7-27來舉例。
  • 再設置時間 date -s 22:09:22
  • 將系統時間同步到硬件時間 hwclock --systohc 時間設置完成以後就能夠作任務計劃了。

設置任務計劃

有兩個文件能夠控制crontab可否被其餘用戶使用,/etc/cron.deny 和/etc/cron.allow 系統默認保留的是/etc/cron.deny,最好選擇一個使用,避免邏輯混亂。若是不想用戶lic使用crontab功能,能夠將lic添加到/etc/corn.deny文件中。ssh

  • crontab命令
  • crontab -u 只有root用戶可以使用該參數,也就是幫其餘用戶添加刪除crontab任務計劃
  • crontab -e 編輯crontab的工做內容
  • crontab -l 查閱crontab的工做內容
  • crontab -r 刪除全部的crontab的內容,若是要刪除一項,可使用crontab -e去刪除一項。

** 使用crontab來新建了任務計劃以後,該項計劃就會被記錄到/var/spool/cron裏面,且是以帳號來判別的。好比,root用戶建了任務計劃就會被寫到/var/spool/cron/root中;另外cron執行的每一項工做都會被寫到/var/log/cron這個日誌文件中,因此若是不知道系統是否被惡意運行過cron ,能夠查看該日誌文件。**socket

任務計劃的配置文件是/etc/crontab能夠cat看一下里面的說明工具

[root@llll ~]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

能夠清楚的看到,編輯一個任務計劃時,第一段分鐘第二段小時第三段日期第四段月份第五段禮拜幾 第六段 命令 。若是每隔五分鐘操做一次,就在分鐘哪裏*/5就能夠了。centos7

  • 可使用crontab -l 命令來查看任務計劃
[root@llll ~]# crontab -l
00 23 * * * mail li.chao11@21vianet.com < /tmp/1.txt
  • 若是要刪除全部的任務計劃,可使用crontab -r 命令來實現,若是僅僅刪除一條計劃可使用crontab -e進入文件後刪除相對應的那一行。
[root@llll ~]# crontab -r
[root@llll ~]# crontab -l
no crontab for root

chkconfig工具

chkconfig工具是centos7以前的版本使用的系統服務管理工具,在7以後該工具下面只有少數幾個服務在裏面,其餘的系統服務都在systemd中rest

[root@llll ~]# chkconfig --list

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

iprdump        	0:關	1:關	2:開	3:開	4:開	5:開	6:關
iprinit        	0:關	1:關	2:開	3:開	4:開	5:開	6:關
iprupdate      	0:關	1:關	2:開	3:開	4:開	5:開	6:關
netconsole     	0:關	1:關	2:關	3:關	4:關	5:關	6:關
network        	0:關	1:關	2:開	3:開	4:開	5:開	6:關

上面顯示的這些服務,文件是在/etc/init.d下的日誌

[root@llll init.d]# ls
functions  iprdump  iprinit  iprupdate  netconsole  network  README
  • 可使用chkconfig命令來關閉或開啓一個服務在某個運行級別上。舉例:chkconfig --level 34 network off 運行在3和4級別上關掉network服務。
[root@llll init.d]# chkconfig --level 34 network off
[root@llll init.d]# chkconfig --list

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

iprdump        	0:關	1:關	2:開	3:開	4:開	5:開	6:關
iprinit        	0:關	1:關	2:開	3:開	4:開	5:開	6:關
iprupdate      	0:關	1:關	2:開	3:開	4:開	5:開	6:關
netconsole     	0:關	1:關	2:關	3:關	4:關	5:關	6:關
network        	0:關	1:關	2:開	3:關	4:關	5:開	6:關

還可使用chkconfig --add 來將某個服務添加到chkconfig工具下管理或使用chkconfig --del 將某個服務從chkconfig管理工具下刪除。無論刪除仍是添加有一個前提是該服務有一個有效的配置文件在/etc/init.d/中code

[root@llll init.d]# cp network 222
[root@llll init.d]# ls
222  functions  iprdump  iprinit  iprupdate  netconsole  network  README
[root@llll init.d]# cd ..
[root@llll etc]# cd
[root@llll ~]# chkconfig --add 222
[root@llll ~]# chkconfig --list

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

222            	0:關	1:關	2:開	3:開	4:開	5:開	6:關
iprdump        	0:關	1:關	2:開	3:開	4:開	5:開	6:關
iprinit        	0:關	1:關	2:開	3:開	4:開	5:開	6:關
iprupdate      	0:關	1:關	2:開	3:開	4:開	5:開	6:關
netconsole     	0:關	1:關	2:關	3:關	4:關	5:關	6:關
network        	0:關	1:關	2:開	3:關	4:關	5:開	6:關

systemd服務管理工具

在centOS7 及之後的版本,systemd這個管理工具是很重要的。進程

  • systemctl list-unit-files命令來查看全部的units-files顯示的內容不少,不方便查看
  • systemctl list-units --all --type=service 命令會列出全部的服務
  • systemctl list-units --type=service 命令會列出全部激活的(active)服務
  • 以crond服務爲例,開機啓動 systemctl -enable crond.service
  • 開機不啓動 systemctl -disable crond.service
  • 查看狀態 systemctl status crond
  • 中止服務systemctl stop crond
  • 啓動服務systemctl start crond
  • 重啓服務systemctl restart crond\
  • 檢查服務是否開機啓動 systemctl is-enabled crond
[root@llll ~]# systemctl is-enabled crond
enabled

unit→/usr/lib/systemd/system下的全部的都是unit

  • service 系統服務
  • target 多個unit組成的組
  • device 硬件設備
  • mount 掛在點
  • automount 自動掛載點
  • path 文件或路徑
  • scope 不是由systemd啓動的進程
  • slice 進程組
  • snapshot systemd快照
  • socket 進程間通訊套接字
  • swap swap文件
  • timer 定時器 總之,全部的unit組成了系統,是一個很是複雜的組合。咱們經常使用到的可能就是service 和target。

Linux 與unit相關的命令

  • systemctl list-units 列出正在運行的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 查看某個服務是不是active

target

系統爲了方便管理,用target管理unit

  • systemctl list-unit-files --type=target查看全部target
  • systemctl list -dependencies multi-user.target查看指定target下有哪些unit
  • systemctl get-default 查看系統默認target
  • 查看某個服務的target cat/usr/lib/systemd/system/sshd.service 中的INSTALL部分。
相關文章
相關標籤/搜索