linux日常運維(crond,systemd,chkconfing,unit,target)
[root@litongyao ~]# cat /etc/crontab (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
(分鐘)(小時)(日期)(月份)(星期)【星期天=0】 用戶(不寫的話默認是root) 命令(這裏的命令必須是絕對路徑)
[root@litongyao ~]# crontab -e (修改crontab的配置文件)
0 3 * * * /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log2 2>/tmp/1234.log
(每天3點鐘執行/usr/local/sbin/123.sh這個腳本,正確的日誌追加到/tmp/123.log下,錯誤的日誌追加到/tmp/1234.log下。)
0 3 1-10 */2 2,5 /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log2 2>/tmp/1234.log
(雙數月1-10號周二和周五的淩晨三點運行這個腳本,並追加日誌)
要想讓服務正常啟動,則需要啟動服務:
[root@litongyao ~]# systemctl start crond
[root@litongyao ~]# ps aux | grep cron
root 537 0.0 0.1 126236 1612 ? Ss 07:23 0:00 /usr/sbin/crond -n
root 6506 0.0 0.1 125336 1116 ? Ss 15:01 0:00 /usr/sbin/anacron -s
root 6625 0.0 0.0 112680 972 pts/0 S+ 15:12 0:00 grep --color=auto cron
服務啟動,還可以用
[root@litongyao ~]# systemctl status crond (查看服務啟動情況)
[root@litongyao ~]# crontab -l (查看任務計劃)
0 3 1-10 */2 2,5 /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log2 2>/tmp/1234.log
其實-l所查看的目錄就是/var/spool/cron/(這裏會有不同用戶的文件名,主要是寫任務計劃是用戶是誰的就在誰的目錄下)
[root@litongyao ~]# crontab -r (刪除任務計劃)
[root@litongyao ~]# crontab -l
no crontab for root
二、linux系統管理chkconfing
centos6和之前的版本會用倒chkconfig,centos7時已經不用,為了兼容,我們還是要掌握
[root@litongyao ~]# 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:關
0級別 關機狀態
1級別 單用戶狀態
2級別 比3少一個nfs服務
3級別 多用戶模式,但是不帶圖像
4級別 保留級別
5級別 多用戶級別。帶圖像
6級別 重啟
[root@litongyao ~]# chkconfig network off (設置開機不啟動)
[root@litongyao ~]# chkconfig --level 3 network off (設置3級別network為關閉狀態)
[root@litongyao ~]# chkconfig --level 345 network off (設置3.4.5級別,network為關閉狀態)
添加系統服務啟動:(服務啟動腳本放到必須在/etc/init.d文件下)
舉例:(復制一個network的啟動腳本改名為123,添加服務123.用List查看。)
刪除系統服務啟動:
三、systemd管理服務
centos7後,使用systemd服務,在之前使用sysv服務。chkconfig在7中也能使用,這一小節則教我們使用systemctl
[root@litongyao ~]# systemctl --all --type=service (查看所有的服務,如果去掉all,則未激活的服務不顯示)
[root@litongyao ~]# systemctl is-enabled crond (檢查服務是否開機啟動)
enabled
[root@litongyao ~]# systemctl disable crond (不讓開機啟動)
Removed symlink /etc/systemd/system/multi-user.target.wants/crond.service.
[root@litongyao ~]# systemctl enable crond (設置開機啟動)
Created symlink from /etc/systemd/system/multi-user.target.wants/crond.service to /usr/lib/systemd/system/crond.service.
我們不難發現,其實設置開機啟動是給/usr/lib/systemd/system/crond.service.做了一個軟連接/etc/systemd/system/multi-user.target.wants/crond.service。
[root@litongyao ~]# ll /etc/systemd/system/multi-user.target.wants/crond.service
lrwxrwxrwx 1 root root 37 12月 4 16:16 /etc/systemd/system/multi-user.target.wants/crond.service -> /usr/lib/systemd/system/crond.service
[root@litongyao ~]# systemctl status crond (查看服務的運行狀況)
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since 四 2017-11-30 15:50:14 CST; 4 days ago
Main PID: 537 (crond)
CGroup: /system.slice/crond.service
└─537 /usr/sbin/crond -n
11月 30 15:50:14 litongyao systemd[1]: Started Command Scheduler.
11月 30 15:50:14 litongyao systemd[1]: Starting Command Scheduler...
11月 30 15:50:14 litongyao crond[537]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 43% if used.)
11月 30 15:50:14 litongyao crond[537]: (CRON) INFO (running with inotify support)
[root@litongyao ~]# systemctl stop crond (停止服務)
[root@litongyao ~]# systemctl start crond (開啟服務)
四、unit介紹
在系統/usr/lib/systemd/system下存放著所有的unit
unit分為以下幾個類型:
service 系統服務
target 多個unit組成的組
device 硬件設備
mount 文件系統掛載點
automount 自動掛載點
path 文件或路徑
scope 不是由systemd啟動的外部進程
slice 進程組
snapshot systemd快照
socket 進程間通信套接字
swap swap文件
timer 定時器
[root@litongyao ~]# cd /usr/lib/systemd/system
[root@litongyao system]# ls -l runlevel* (會顯示出來centos7的6個等級)
lrwxrwxrwx. 1 root root 15 10月 20 08:10 runlevel0.target -> poweroff.target
lrwxrwxrwx. 1 root root 13 10月 20 08:10 runlevel1.target -> rescue.target
lrwxrwxrwx. 1 root root 17 10月 20 08:10 runlevel2.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 10月 20 08:10 runlevel3.target -> multi-user.target
lrwxrwxrwx. 1 root root 17 10月 20 08:10 runlevel4.target -> multi-user.target
lrwxrwxrwx. 1 root root 16 10月 20 08:10 runlevel5.target -> graphical.target
lrwxrwxrwx. 1 root root 13 10月 20 08:10 runlevel6.target -> reboot.target
[root@litongyao system]# systemctl list-units (列出正在運行的unit)
[root@litongyao system]# systemctl list-units (列出所有,包括失敗的或者inactive的)
[root@litongyao system]# systemctl list-units --all --state=inactive (列出inactive的unit)
[root@litongyao system]# systemctl list-units --type=service (列出狀態為active的service)
[root@litongyao system]# systemctl is-active crond (查看某個服務是否為active)
五、target介紹
系統為了方便管理用target來管理unit
systemctl list-unit-files --type=target
systemctl list-dependencies multi-user.target //查看指定target下面有哪些unit
systemctl get-default //查看系統默認的target
systemctl set-default multi-user.target
一個service屬於一種類型的unit
多個unit組成了一個target
一個target裏面包含了多個service
cat /usr/lib/systemd/system/sshd.service //看[install]部分
linux日常運維(crond,systemd,chkconfing,unit,target)