1. 程式人生 > >linux日常運維(crond,systemd,chkconfing,unit,target)

linux日常運維(crond,systemd,chkconfing,unit,target)

target unit systemd chkconfing crond

1、任務計劃:crond

[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)