一、crond任務計劃:用來管理系統和執行系統週期性的任務,相似於windows下的任務計劃,當安裝完操做系統後,系統會默認安裝此服務,而且會自行啓動crond進程,crond沒分鐘會按期檢查是否有要執行的任務,若是有要執行的任務,則自動執行:shell
crontab options vim
options:windows
-u:查看指定用戶的任務計劃,不指定則爲root用戶:bash
-l:列出計劃任務:可結合-u:併發
-r:表示刪除計劃任務:可結合-u:dom
-e:編輯任務計劃,等同於打開了vim /var/spool/cron/user/某個用戶的文件:ssh
1:制定計劃任務:socket
crontab的配置文件: cat /etc/crontabide
[root@localhost ~]# cat /etc/crontab SHELL=/bin/bash #運行格式 PATH=/sbin:/bin:/usr/sbin:/usr/bin #PATH路徑 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 分 時 日 月 周 root 命令
如上圖示例:crond的命令格式:工具
分 時 日 月 周 username command
經常使用命令格式以下:
1-5:表示一個範圍(從1點到5點之間執行)裏面:
1,2,3:表示1點或者2點或者3點分別執行:
*/2:表示被2整除,如每兩小時執行一次:
示例1:添加任務計劃: crontab -e
[root@localhost ~]# crontab -e #編輯此任務計劃: 0 03 * * * /bin/bash /usr/sbin/slow.backup #天天晚上凌晨三點執行/usr/sbin/slow.backup: 01 10 05 06 3 echo " " >root/1.log #每一年5月5號10點零一分星期三則清空/root/1.log這個文件: 0 */2 * * * ntpdate time.windows.com #天天隔兩個小時執行時間同步腳本: 0 1,12,18 * * * /bin/bash /usr/local/iptables.sh #天天的1點、12點、18點執行/usr/local/iptables.sh 0 9-18 * * * /bin/bash /usr/local/iptables.sh #天天9點到18點執行/usr/local/iptables.sh這個腳本:
示例2:給指定用戶添加任務計劃:crontab -u yuanhh -e
[root@localhost ~]# crontab -u yuanhh -e 01 10 05 06 3 echo "ok" >root/cron.log #給root下的crond.log寫入文件內容:
注意:建議後面的命令要寫絕對路徑(否則會報錯),編輯時直接使用-e,不要直接編輯/var/spool/cron/下的配置文件:
2:查看當前用戶及某個用戶的任務計劃: crontab -l
[root@localhost ~]# crontab -l 0 03 * * * /bin/bash /usr/sbin/slow/backup 01 10 05 06 3 echo "1" >root/1.log 0 */8 * * * ntpdate time.windows.com 0 1,12,18 * * * /bin/bash /usr/local/iptables.sh 0 9-18 * * * /bin/bash /usr/local/iptables.sh [root@localhost ~]# crontab -u yuanhh -l #查看yuanhh的crond計劃: 01 10 05 06 3 echo "ok" >root/cron.log
3:刪除當前用戶及某個用戶的任務計劃:crontab -r
[root@localhost ~]# crontab -r #刪除root的crond計劃: [root@localhost ~]# crontab -l #查看root的crond計劃: no crontab for root [root@localhost ~]# crontab -u yuanhh -r #刪除yuanhh用戶的任務計劃: [root@localhost ~]# crontab -u yuanhh -l #查看yuanhh用戶的任務計劃: no crontab for yuanhh
註釋:建議刪除某個任務計劃時不要使用-r命令,能夠先使用crontab -e進入到任務計劃,而後再刪除某個任務計劃:
4:啓動和關閉crond任務計劃:
[root@localhost ~]# systemctl stop crond #關注crond服務: [root@localhost ~]# systemctl start crond #開啓crond服務: [root@localhost ~]# systemctl status crond #查看crond的狀態: ● crond.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/crond.service; disabled; vendor preset: enabled) Active: active (running) since 一 2018-08-13 07:40:28 CST; 20s ago Main PID: 2943 (crond) CGroup: /system.slice/crond.service └─2943 /usr/sbin/crond -n 8月 13 07:40:28 localhost.localdomain systemd[1]: Started Command Scheduler. 8月 13 07:40:28 localhost.localdomain systemd[1]: Starting Command Scheduler... 8月 13 07:40:28 localhost.localdomain crond[2943]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 24% if used.) 8月 13 07:40:28 localhost.localdomain crond[2943]: (CRON) INFO (running with inotify support) 8月 13 07:40:28 localhost.localdomain crond[2943]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
二、chkconfig:服務管理工具,能夠查看當前系統中有哪些服務,也能夠經過此命令添加和刪除服務是否開機自啓動,查看服務的各個運行級別,
服務的目錄保存/etc/init.d/目錄下,不過從Centos 7開始不在沿用此服務管理工具:
語法: chkconfig options
options:
--list:查看使用chkconfig的服務的狀態:
--add:增長指定服務:
--del:刪除指定服務:
--level:指定某服務在系統運行級別狀態開啓或者關閉:
1:查看服務及其運行級別狀態:
[root@localhost ~]# chkconfig --list 注:該輸出結果只顯示 SysV 服務,並不包含 原生 systemd 服務。SysV 配置數據 可能被原生 systemd 配置覆蓋。 要列出 systemd 服務,請執行 'systemctl list-unit-files'。 查看在具體 target 啓用的服務請執行 'systemctl list-dependencies [target]'。 netconsole 0:關 1:關 2:關 3:關 4:關 5:關 6:關 network 0:關 1:關 2:開 3:開 4:開 5:開 6:關 服務名稱 關機 單用戶 不帶NFS 命令行 保留 圖形化 重啓
如上圖例:查看時發現只有幾個服務了,這是由於Centos並無沿用chkconfig服務管理(SysV),而是使用systemd做爲管理工具,不過能夠向下兼容使用chkconfig如圖知道:須要查看服務請執行systectl list-unit-files 這個命令:
2:chkconfig --add 增長某個服務:
[root@localhost init.d]# chkconfig --add 123 #添加123這個服務: [root@localhost init.d]# chkconfig --list 123 #查看其各個級別的運行狀態: 123 0:關 1:關 2:開 3:開 4:開 5:開 6:關 [root@localhost init.d]# chkconfig --level 2345 123 off #關閉2345的運行級別狀態: [root@localhost init.d]# chkconfig --list 123 #查看其服務狀態: 注:該輸出結果只顯示 SysV 服務,並不包含 原生 systemd 服務。SysV 配置數據 可能被原生 systemd 配置覆蓋。 要列出 systemd 服務,請執行 'systemctl list-unit-files'。 查看在具體 target 啓用的服務請執行 'systemctl list-dependencies [target]'。 123 0:關 1:關 2:關 3:關 4:關 5:關 6:關 [root@localhost init.d]# chkconfig --del 123 #刪除這個服務:
3:chkconfig啓動腳本類:
chkconfig 345 10 90
chkconfig 運行級別 開機時第10位啓動 關機時第90爲關閉
[root@localhost init.d]# cat network #! /bin/bash # # network Bring up/down networking # # chkconfig: 2345 10 90 #chkconfig 運行級別 第10位啓動 第90位關閉 # description: Activates/Deactivates all network interfaces configured to \ # start at boot time. # ### BEGIN INIT INFO # Provides: $network
三、systemd服務管理:Centos開始沿用systemd做爲服務管理,不在使用SysV,由於systemd支持多個服務併發啓動,而SysV只能一個一個的啓動,全部systemd的啓動會比較快不少的:
1:啓動類經常使用命令:
[root@localhost ~]# systemctl disable crond #關閉crond服務開機自啓動:
[root@localhost ~]# systemctl enable crond #開啓crond服務開機機自啓動:
[root@localhost ~]# systemctl stop crond #關閉crond服務:
[root@localhost ~]# systemctl start crond #開啓crond服務:
[root@localhost ~]# systemctl restart crond #從新啓動crond服務:
[root@localhost ~]# systemctl status crond #查看crond的服務狀態:
註釋:伴隨着某服務的開/關會創建/刪除一個指向該服務的軟鏈接「/etc/systemd/system/multi-user.target.wants/crond.service」-->「/usr/lib/systemd/system/crond.service」
[root@localhost ~]# systemctl enable crond #開啓服務時: Created symlink from /etc/systemd/system/multi-user.target.wants/crond.service to /usr/lib/systemd/system/crond.service. [root@localhost ~]# ls /etc/systemd/system/multi-user.target.wants/crond.service /etc/systemd/system/multi-user.target.wants/crond.service #發現此文件存在: [root@localhost ~]# systemctl disable crond 關閉服務時: Removed symlink /etc/systemd/system/multi-user.target.wants/crond.service. ls: 沒法訪問/etc/systemd/system/multi-user.target.wants/crond.service: 沒有那個文件或目錄 #發現此文件不存在:
2:服務權限:systemd有系統和用戶之分:存放位置不一樣:
系統:/usr/lib/systemd/system/
用戶:/etc/systemd/system/ #而用戶建立通常保存在/etc/systemd/system/此目錄下:
[root@localhost ~]# ls /usr/lib/systemd/system/ #系統 chrony-wait.service runlevel0.target console-getty.service runlevel1.target console-shell.service runlevel1.target.wants/ container-getty@.service runlevel2.target cpupower.service runlevel2.target.wants/ crond.service runlevel3.target cryptsetup-pre.target runlevel3.target.wants/ cryptsetup.target runlevel4.target ctrl-alt-del.target runlevel4.target.wants/ dbus-org.freedesktop.hostname1.service runlevel5.target dbus-org.freedesktop.import1.service runlevel5.target.wants/ [root@localhost ~]# ls /etc/systemd/system/ #用戶 basic.target.wants default.target multi-user.target.wants dbus-org.freedesktop.NetworkManager.service default.target.wants system-update.target.wants dbus-org.freedesktop.nm-dispatcher.service getty.target.wants
3:unit:當執行ls /usr/lib/systemd/system/目錄下,在此目錄下,每種類型的文件都爲一個unit,正是這寫unit才組成了系統的各個設備、各個服務、各個資源等:
[root@localhost ~]# ls /usr/lib/systemd/system/ arp-ethers.service local-fs.target.wants swap.target auditd.service machine.slice sys-fs-fuse-connections.mount autovt@.service machines.target sysinit.target basic.target messagebus.service sysinit.target.wants basic.target.wants microcode.service sys-kernel-config.mount blk-availability.service multi-user.target sys-kernel-debug.mount bluetooth.target multi-user.target.wants syslog.socket brandbot.path NetworkManager-dispatcher.service syslog.target.wants
後綴名結尾:
.service:系統服務:
device:硬件設備:
mount:文件系統掛載點:
automount:自動掛載點:
path:文件或路徑:
target:多個unit組成的組:
unit的經常使用命令:
systemctl list-units #列出正在運行的unit:
systemctl list-units #列出全部unit(失敗和成功的)
systemctl lint-units --type=service #列出狀態爲active的service:
systemctl list-units --all --type=service #列出全部狀態的service:
[root@localhost ~]# systemctl list-units #列出正在運行的unit: UNIT LOAD ACTIVE SUB DESCRIPTION proc-sys-fs-binfmt_misc.automount loaded active waiting Arbitrary Executable File Formats File System Automou sys-devices-pci0000:00-0000:00:07.1-ata2-host2-target2:0:0-2:0:0:0-block-sr0.device loaded active plugged VMware_Virtual_IDE_CDRO sys-devices-pci0000:00-0000:00:10.0-host0-target0:0:0-0:0:0:0-block-sda-sda1.device loaded active plugged VMware_Virtual_S 1 sys-devices-pci0000:00-0000:00:10.0-host0-target0:0:0-0:0:0:0-block-sda-sda2.device loaded active plugged VMware_Virtual_S 2 [root@localhost ~]# systemctl list-units all #列出全部unit(失敗和成功) UNIT LOAD ACTIVE SUB DESCRIPTION proc-sys-fs-binfmt_misc.automount loaded active waiting Arbitrary Executable File Formats File System Automou sys-devices-pci0000:00-0000:00:07.1-ata2-host2-target2:0:0-2:0:0:0-block-sr0.device loaded active plugged VMware_Virtual_IDE_CDRO sys-devices-pci0000:00-0000:00:10.0-host0-target0:0:0-0:0:0:0-block-sda-sda1.device loaded active plugged VMware_Virtual_S 1 sys-devices-pci0000:00-0000:00:10.0-host0-target0:0:0-0:0:0:0-block-sda-sda2.device loaded active plugged VMware_Virtual_S 2 sys-devices-pci0000:00-0000:00:10.0-host0-target0:0:0-0:0:0:0-block-sda-sda3.device loaded active plugged VMware_Virtual_S 3 [root@localhost ~]# systemctl list-units --type=service #列出狀態爲active的service: UNIT LOAD ACTIVE SUB DESCRIPTION auditd.service loaded active running Security Auditing Service chronyd.service loaded active running NTP client/server crond.service loaded active running Command Scheduler dbus.service loaded active running D-Bus System Message Bus getty@tty1.service loaded active running Getty on tty1 iptables.service loaded active exited IPv4 firewall with iptables ● kdump.service loaded failed failed Crash recovery kernel arming [root@localhost ~]# systemctl list-units --all --type=service #列出全部狀態的service: UNIT LOAD ACTIVE SUB DESCRIPTION auditd.service loaded active running Security Auditing Service brandbot.service loaded inactive dead Flexible Branding Service chronyd.service loaded active running NTP client/server cpupower.service loaded inactive dead Configure CPU power related settings crond.service loaded active running Command Scheduler dbus.service loaded active running D-Bus System Message Bus ● display-manager.service not-found inactive dead display-manager.service
也能夠查看某個unit是不是active: systemctl is-active crond
[root@localhost ~]# systemctl is-active crond active
四、target:相似於Centos 6的啓動級別,當target支持多個target同時啓動,traget實際上是多個unit的組合,系統啓動就是在啓動多個unit,因此用target來管理這些unit:
查看系統裏全部target:
[root@localhost ~]# systemctl list-unit-files --type=service UNIT FILE STATE arp-ethers.service disabled auditd.service enabled autovt@.service enabled blk-availability.service disabled
列出一個target下包含哪些unit:
[root@localhost ~]# systemctl list-dependencies multi-user.target multi-user.target ● ├─auditd.service ● ├─brandbot.path ● ├─chronyd.service ● ├─crond.service ● ├─dbus.service ● ├─irqbalance.service
查看系統默認的target:並設置新的target:
[root@localhost ~]# systemctl get-default #查看默認的target: multi-user.target [root@localhost ~]# systemctl set-default multi-user.target #設置target: Removed symlink /etc/systemd/system/default.target. Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
註釋:最後簡單介紹下unit和target service的關係:
一個service屬於一種類型的unit:
多個unit組成一個target:
因此一個target裏面也包含了許多個service:
註釋:若是想看這個服務屬於哪一個target,看下面配置文件的install部分:
[root@localhost ~]# cat /usr/lib/systemd/system/sshd.service #查看sshd屬於按個target: [Unit] [Install] WantedBy=multi-user.target #屬於mulit-user.target
擴展:systemd添加自定義系統服務:
鏈接:https://www.jb51.net/article/100457.htm