34.任务计划cron chkconfig systemctl管理服务 unit target
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
10.23 linux任務(wù)計(jì)劃cron
10.24 chkconfig工具
10.25 systemd管理服務(wù)
10.26 unit介紹
10.27 target介紹
?
?
10.23 linux任務(wù)計(jì)劃cron:
在linux中任務(wù)計(jì)劃是必不可少的,因?yàn)榭赡芪覀兞璩康臅r(shí)候去做一些事情。可能是備份數(shù)據(jù)或是重啟服務(wù)啊,這個(gè)操作的過程可能是一個(gè)腳本,也有可能是一個(gè)單獨(dú)的命令。不管是什么,總得有一個(gè)時(shí)間要去執(zhí)行他所以任務(wù)計(jì)劃必不可少。
?
?
~. cat /etc/crontab 這個(gè)文件下是任務(wù)計(jì)劃的配置文件,他會(huì)定義shell 環(huán)境變量、發(fā)送郵件給誰
[root@axinlinux-01 ~]# cat /etc/crontab
SHELL=/bin/bash shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin 變量,命令的路徑
MAILTO=root 發(fā)送郵件給誰
?
# For details see man 4 crontabs
?
# Example of job definition: (下面是他的格式)
# .---------------- minute (0 - 59) 第一位為表示分鐘,范圍是0-59
# | .------------- hour (0 - 23) 小時(shí),0-23
# | | .---------- day of month (1 - 31) 日期 1-31
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ... 月份1-12,可以寫數(shù)字也可以寫英文的簡寫
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 星期,0-6。周日可以寫成0或7
# | | | | |
# * * * * * user-name command to be executed
這5個(gè)星表示它的 位
user-name 在root用戶下定義任務(wù)就是root。不寫的話就是root
command to be executed 表示要執(zhí)行的命令,怎么定義呢,寫法為:
crontab -e,這樣就進(jìn)入了crontab的配置文件當(dāng)中
我們寫好的他的任務(wù),怎么確定他的唯一性呢。用周來確定。因?yàn)榻衲甑闹芤桓髂甑闹芤皇遣灰粯拥?/p>
?
~1. crontab -u 、 -e 、 -l 、 -r
綜上所述,
-e 進(jìn)入 crontab的配置文件當(dāng)中。用法跟vim一樣的。按 a 進(jìn)入編輯模式
-l 可以查看寫的任務(wù)計(jì)劃,列出
-r 刪除任務(wù)
-u 指定用戶 例如,crontab -u root -r
~3. 文件 /var/spool/cron/username
crontab的文件在這個(gè)路徑里面。是用戶對應(yīng)的文件,比如root的就會(huì)寫上root的,其他的就會(huì)寫上其他的用戶名字,以用戶的名字命名的一個(gè)文件
~2. 格式:分 時(shí) 日 月 周
(user command 進(jìn)入編輯模式之后,以分時(shí)日月周的模式來寫,以空格間隔。后面跟命令)
例如 0 3 * * * /binsbin /usr/local/sbin/123.sh (比如寫了一個(gè)腳本,就這樣寫任務(wù)計(jì)劃。每天3點(diǎn)執(zhí)行這個(gè)腳本)
0 3 * * * /binsbin /usr/local/sbin/123.sh > /tmp/123.log 2> /tmp/123.log(每天3三點(diǎn)將這個(gè)腳本正確的和錯(cuò)誤的都輸出到這個(gè)文件里來。也可以是追加>>
*表示相對應(yīng)的第幾位,表示所有,每天都執(zhí)行、每月都執(zhí)行、每周都執(zhí)行
?
~4. 分范圍0-59,時(shí)范圍0-23,日范圍1-31,月范圍1-12,周范圍0-6
~5. 可用格式1-5表示一個(gè)范圍 1到5
0 3 1-5 * * /binsbin /usr/local/sbin/123.sh
1-5號的每天3點(diǎn)執(zhí)行這個(gè)腳本
~6. 可用格式1,2,3表示1或者2或者3
0 0 0 */2 2,5 /binsbin /usr/local/sbin/123.sh
每兩個(gè)月的周二和周五來執(zhí)行這個(gè)腳本
以逗號分隔,周二和周五
~7. 可用格式*/2表示被2整除的數(shù)字,比如小時(shí),那就是每隔2小時(shí)。只要是被2整除的
0 3 1-5 */2 * /binsbin /usr/local/sbin/123.sh
每兩個(gè)月,1-5號的3點(diǎn)執(zhí)行這個(gè)腳本
~8. 要保證服務(wù)是啟動(dòng)狀態(tài)
systemctl start crond.service,輸入這個(gè)才會(huì)讓他啟動(dòng)這個(gè)服務(wù)
啟動(dòng)之后可以用 ps aux | grep crond 查看一下,如果有這個(gè)服務(wù)就代表他已經(jīng)啟動(dòng)了
也可以用 systemctl status crond 來查看crond的狀態(tài)。有active (running)并顯示為綠色表示已經(jīng)啟動(dòng)。相反的我們systemctl stop crond 停掉crond,就會(huì)有顯示inactive (dead)并沒有顏色
?
需要注意的是,我們在寫完任務(wù)計(jì)劃的時(shí)候。必須要啟動(dòng)這個(gè)任務(wù)計(jì)劃。 systemctl start crond。
我們在寫任務(wù)的時(shí)候,有用到命令,要寫命令的絕對路徑才可以生效
任務(wù)計(jì)劃里寫上正確和錯(cuò)誤的輸出文件,以方便我們有據(jù)可查
?
?
?
----------------------------------------------------------------------------------------------------------------------------------------------------
?
?
10.24 chkconfig工具:
?
linux系統(tǒng)的服務(wù)管理,像我們之前接觸到的 crond、firewalld等等都是服務(wù),那我們可以用chkconfig來管理這些服務(wù)。怎么樣控制這個(gè)服務(wù)啟動(dòng),怎么控制這個(gè)服務(wù)開機(jī)啟動(dòng),怎么讓這個(gè)服務(wù)在指定的級別去啟動(dòng)
chkconfig是centos6之前的版本用的
?
~1. 我們先來執(zhí)行 chkconfig --list 列出chkconfig管理的服務(wù)
[root@axinlinux-01 ~]# chkconfig --list
?
注:該輸出結(jié)果只顯示 SysV 服務(wù),并不包含 6以前的版本服務(wù)機(jī)制是sysv,所以只顯示sysv服務(wù)
原生 systemd 服務(wù)。SysV 配置數(shù)據(jù) 7以后得版本為systemd服務(wù)機(jī)制,所以不會(huì)顯示
可能被原生 systemd 配置覆蓋。
?
要列出 systemd 服務(wù),請執(zhí)行 'systemctl list-unit-files'。所以想要看systemd服務(wù)的要執(zhí)行該命令
查看在具體 target 啟用的服務(wù)請執(zhí)行 target是systemd服務(wù)的另一個(gè)概念
'systemctl list-dependencies [target]'。
sysv服務(wù)機(jī)制的只剩下這兩個(gè)了
netconsole 0:關(guān) 1:關(guān) 2:關(guān) 3:關(guān) 4:關(guān) 5:關(guān) 6:關(guān) 。0-6狀態(tài)各表示6以前版本的運(yùn)行級別
network 0:關(guān) 1:關(guān) 2:開 3:開 4:開 5:開 6:關(guān)
0 關(guān)機(jī)狀態(tài) 1單用戶 2多用戶模式(少了nfs服務(wù)) 3多用戶模式(不帶圖形)
4保留級別(暫時(shí)沒用) 5 多用戶帶圖形 6重啟
?
~2. 這些服務(wù)都是為一個(gè)服務(wù)的腳本,目錄在
/etc/init.d/ 這個(gè)里面
[root@axinlinux-01 ~]# ls /etc/init.d/
functions netconsole network README
后期我們學(xué)其他服務(wù)的時(shí)候,還會(huì)用到這個(gè)路徑。把一些啟動(dòng)文件放進(jìn)來,用chkconfig來管理
?
~3. chkconfg --level 3 network off 指定network服務(wù)的3級別關(guān)閉
多個(gè)級別同時(shí)關(guān)閉或打開,不用間隔直接寫就好。例如:345
0和6級別不會(huì)開啟服務(wù),因?yàn)榉謩e處于關(guān)機(jī)和重啟。1級別也不會(huì)開,處于單用戶模式
?
~4. chkconfig --add 123 把123服務(wù)加入到這個(gè)服務(wù)列表里面來
[root@axinlinux-01 ~]# cd /etc/init.d 前提是要在這個(gè)目錄里的服務(wù),才可以進(jìn)入到列表里來
[root@axinlinux-01 init.d]# ls
functions netconsole network README
[root@axinlinux-01 init.d]# cp network 123 為保險(xiǎn)我們復(fù)制一個(gè)123,為什么要復(fù)制因?yàn)槲募怯懈袷降?#xff0c;才能被識別
[root@axinlinux-01 init.d]# chkconfig --add 123 把123加入到列表里
[root@axinlinux-01 init.d]# chkconfig --list 查看一下
?
注:該輸出結(jié)果只顯示 SysV 服務(wù),并不包含
原生 systemd 服務(wù)。SysV 配置數(shù)據(jù)
可能被原生 systemd 配置覆蓋。
?
要列出 systemd 服務(wù),請執(zhí)行 'systemctl list-unit-files'。
查看在具體 target 啟用的服務(wù)請執(zhí)行
'systemctl list-dependencies [target]'。
?
123 0:關(guān) 1:關(guān) 2:開 3:開 4:開 5:開 6:關(guān) 123服務(wù)
netconsole 0:關(guān) 1:關(guān) 2:關(guān) 3:關(guān) 4:關(guān) 5:關(guān) 6:關(guān)
network 0:關(guān) 1:關(guān) 2:開 3:開 4:開 5:開 6:關(guān)
?
~5. chkconfig --del 123 把123服務(wù)在列表里刪除
?
----------------------------------------------------------------------------------------------------------------------------------------------------
?
10.25 systemd管理服務(wù):
?
systemd是centos7系統(tǒng)的服務(wù)管理機(jī)制
?
~1. systemctl list-unit-files
我們在chkconfig --list的時(shí)候,不會(huì)列出systemd的服務(wù)。但是會(huì)提示我們
“要列出 systemd 服務(wù),請執(zhí)行 'systemctl list-unit-files'”
我們執(zhí)行這個(gè)systemctl list-unit-files,(按空格往下翻)。會(huì)發(fā)現(xiàn)他不僅顯示servicehaiyou target等等服務(wù),會(huì)比較亂。
systemctl list-units --all --type=service(只用這個(gè)查看systend服務(wù),只查看service的)
因?yàn)槲覀兛吹膬H僅只是service服務(wù),所以我們可以用 systemctl list-units --all --type=service。這樣列出的服務(wù)就只有service
?
?
~2.幾個(gè)常用的服務(wù)的命令(重點(diǎn),常用!!!!)
systemctl enable crond.service 讓crond服務(wù)開機(jī)啟動(dòng)(后綴.service可省略)
syttemctl disable crond.service 不讓crond服務(wù)開啟啟動(dòng)(后綴.service可省略)
systemctl status crond 查看crond狀態(tài)
含有active (running)且為綠色,表示已啟動(dòng)
systemctl stop crond 停止crond服務(wù)
systemctl start crond 啟動(dòng)crond服務(wù)
systemctl restart crond 重啟crond這個(gè)服務(wù)
systemctl is-enabled crond 檢查crond這個(gè)服務(wù)是否開機(jī)啟動(dòng)
顯示enabled即為開機(jī)啟動(dòng) 顯示disabled即為非開機(jī)啟動(dòng)
?
?
----------------------------------------------------------------------------------------------------------------------------------------------------
?
?
?
10.26 unit介紹:
(systemd管理服務(wù))
什么叫unit?
通過上一節(jié),我們學(xué)到了systemctl,簡單知道了 enabled disabled。如果這個(gè)服務(wù)為 enabled,他就會(huì)創(chuàng)建一個(gè)軟連接,這個(gè)軟連接的目錄為
ls /usr/lib/systemd/system
[root@axinlinux-01 ~]# ls /usr/lib/systemd/system
arp-ethers.service machine.slice sysinit.target
auditd.service machines.target sysinit.target.wants
autovt@.service messagebus.service sys-kernel-config.mount
basic.target microcode.service sys-kernel-debug.mount
basic.target.wants multi-user.target syslog.socket
blk-availability.service multi-user.target.wants syslog.target.wants
會(huì)發(fā)現(xiàn)他有很多的類型,像target、mount、wants(目錄)。而這些類型的文件就叫做unit
?
系統(tǒng)所有unit分為以下類型:
~ service 系統(tǒng)服務(wù)
~ target 多個(gè)組成的組
之間講到6以前的版本,有7個(gè)運(yùn)行級別。而7也有類似的,就是target文件
[root@axinlinux-01 ~]# cd !$
cd /usr/lib/systemd/system 同樣在這個(gè)路徑里
[root@axinlinux-01 system]# ls -l runlevle* 查看runlevel文件
ls: 無法訪問runlevle*: 沒有那個(gè)文件或目錄
[root@axinlinux-01 system]# ls -l runlevel*
同樣也有7個(gè)運(yùn)行級別的target,通過也是軟連接。他的源就是后面的文件。跟6的7個(gè)運(yùn)行級別,基本對應(yīng)起來了
lrwxrwxrwx. 1 root root 15 5月 29 07:11 runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 5月 29 07:11 runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 5月 29 07:11 runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 5月 29 07:11 runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 5月 29 07:11 runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 5月 29 07:11 runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 5月 29 07:11 runlevel6.target -> reboot.target
?
~ device 硬件設(shè)備
~ mount 文件系統(tǒng)的掛載點(diǎn)
~ automount 自動(dòng)掛載點(diǎn)
~ path 文件或路徑
~ scope 不是由systend啟動(dòng)的外部進(jìn)程 比較陌生,熟悉就好
~ slice 進(jìn)程組
~ snapshot systemd快照
~ socket 進(jìn)程間通信套接字
~ swap swap文件
~ timer 定時(shí)器
?
unit相關(guān)的命令:
~ systemctl list-units 列出列出正在運(yùn)行的unit
~ systemctl list-units --all 列出所有,包括失敗的或者inactive的
~ systemctl list-units --all --state=inactive 列出inactive(閑置的)的unit
~ systemctl lit-units --type=service 列出狀態(tài)為active(活躍的)的service
~ systemctl is-active crond.service 查看某個(gè)服務(wù)是否為active
?
?
----------------------------------------------------------------------------------------------------------------------------------------------------
?
?
10.27 target介紹:
(systemd管理服務(wù))
?
一個(gè)target是由多個(gè)unit組合起來的,那么他們是什么聯(lián)系起來的:
系統(tǒng)為了方便管理,用target來管理unit
?
~ systemctl list-unit-files --type=target 這個(gè)命令可以列出系統(tǒng)里面所有的target
~ systemctl list-dependencies multi-user.target 指定查看target(multi-user.target)下面有哪些unit
~ systemctl get-default 查看系統(tǒng)默認(rèn)的target
就是multi-user.target
~ systemctl set-default multi-user.target 設(shè)定默認(rèn)的target(multi-user.target)
重新設(shè)定的時(shí)候就會(huì)創(chuàng)建一個(gè)新的軟連接
?
! 一個(gè)service 屬于其中一種類型的unit
多個(gè)unit組成了一個(gè)target
一個(gè)target里面包含了多個(gè)service
cat /usr/lib/systemd/system/sshd.service 看install部分 ,可看到他屬于哪個(gè)target。例如:
cat這個(gè)目錄,查看sshd.service。看install部分就會(huì)知道 WantedBy=multi-user.target
?
總結(jié):
系統(tǒng)可以說是由多種unit組成的,這么多的unit為了方便管理,那么我們把他們歸類,歸類成若干個(gè)組,我們把它叫做taeget。也就是說target是有多個(gè)unit的組成的。那service屬于其中一種類型的unit,一個(gè)target里面包含了多個(gè)service
?
轉(zhuǎn)載于:https://my.oschina.net/u/3866149/blog/1859058
總結(jié)
以上是生活随笔為你收集整理的34.任务计划cron chkconfig systemctl管理服务 unit target的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决JBoss只能通过localhost
- 下一篇: VMVMware-workstation