八週一次課

八週一次課
10.23 linux任務計劃cron
10.24 chkconfig工具
10.25 systemd管理服務
10.26 unit介紹
10.27 target介紹
mysql

10.23 linux任務計劃cronlinux

  • crontab -u、-e、-l、-r
  • 格式:分 時 日 月 周 user command
  • 文件/var/spool/cron/username
  • 分範圍0-59,時範圍0-23,日範圍1-31,月範圍1-12,周1-7
  • 可用格式1-5表示一個範圍1到5
  • 可用格式1,2,3表示1或者2或者3
  • 可用格式*/2表示被2整除的數字,好比小時,那就是每隔2小時
  • 要保證服務是啓動狀態
  • systemctl start crond.service

crontab命令

  • crontab -e //編輯
  • crontab -l //列出 -crontab -r //刪除
  • crontab -u username -l //指定用戶

任務計劃

  • crontab -e //編輯
  • 在linux系統中,系統計劃是必不可少的,好比備份數據,重啓服務等
    • 操做過程,多是一個腳本,有多是一個單獨的命令,在特定的時間去執行它,因此任務計劃是不可缺乏的
  • 在windows中都是使用的我的電腦,因此任務計劃不多見,幾乎用不到

linux中計劃的配置文件

  • cat /etc/crontab //查看任務計劃的配置文件
    • 文件中會定義幾個變量
      • SHELL=/bin/bash
      • PATH環境變量,它命令的路徑
      • MAILTO發郵件給誰

[root@tianqi-01 ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=rootnginx

# For details see man 4 crontabssql

# 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    //星期,0或7都                                                                                                            表示週日,也能夠寫成英文的簡寫
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed    //用戶,不寫用戶就是root 最後一列,是你要執                                                                                                                                                     行的命令shell

[root@tianqi-01 ~]# vim

crontab -e 進入到crontab的配置文件中,用法和vim同樣windows

  • 按 i 進入編輯模式
    • 分鐘,小時,日,月,星期,而後後面跟具體的命令    #分、時、日、月、周
  • 凌晨3點去執行,* 表示全部的意思

天天凌晨三點,執行123.sh腳本文件,正確的和錯誤的日誌都輸出到123.log文件中centos

0 3 * * * /bin/bash /usr/local/sbin/123.sh >/tmp/123.log 2>/tmp/123.logbash

由於是天天三點執行腳本,因此能夠寫成追加,天天都去記錄日誌session

0 3 * * * /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log

若想1-10號,雙月去執行該腳本,後面就不在執行了——>只要 被2 整除,就符合條件

0 3 1-10 */2 * /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log

只要周2和周5執行該文件

0 3 1-10 */2 2,5 /bin/bash /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log

  • 爲何沒有年份?
  • 用星期肯定你的惟一性,好比說今年的6月18號和明年的6月18號的星期確定是不一樣的,這樣就能夠肯定某一天的惟一性。

啓動crond服務

  • 若想要這個任務正常使用,還須要去啓動crond服務
    • systemctl start crond.service //啓動crond服務
  • 若想檢查服務是否成功啓動,
    • 方法一:可以使用ps aux |grep cron 命令查看
      • 如有這個進程,說明這個服務已經啓動了
    • 方法二:使用systemctl start crond 查看狀態
      • 如果 綠色 ,則表示該服務已經啓動了
      • 如果該服務已經停掉了,則不會有顏色

[root@tianqi-01 ~]# systemctl start crond
[root@tianqi-01 ~]# ps aux | grep cron

root        503  0.0  0.1 126232  1600 ?        Ss   07:52   0:00 /usr/sbin/crond -n
root       2688  0.0  0.0 112660   980 pts/0    R+   10:11   0:00 grep --color=auto cron
[root@tianqi-01 ~]# systemctl status crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-01-27 07:52:29 CST; 2h 20min ago
 Main PID: 503 (crond)
   CGroup: /system.slice/crond.service
           └─503 /usr/sbin/crond -n

Jan 27 07:52:29 tianqi-01 systemd[1]: Started Command Scheduler.
Jan 27 07:52:29 tianqi-01 systemd[1]: Starting Command Scheduler...
Jan 27 07:52:30 tianqi-01 crond[503]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 42% if used.)
Jan 27 07:52:30 tianqi-01 crond[503]: (CRON) INFO (running with inotify support)
[root@tianqi-01 ~]# 

停掉crond服務,查看狀態,沒有顏色顯示

[root@tianqi-01 ~]# systemctl stop crond
[root@tianqi-01 ~]# systemctl status crond

● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Sat 2018-01-27 10:15:03 CST; 16s ago
  Process: 503 ExecStart=/usr/sbin/crond -n $CRONDARGS (code=exited, status=0/SUCCESS)
 Main PID: 503 (code=exited, status=0/SUCCESS)

Jan 27 07:52:29 tianqi-01 systemd[1]: Started Command Scheduler.
Jan 27 07:52:29 tianqi-01 systemd[1]: Starting Command Scheduler...
Jan 27 07:52:30 tianqi-01 crond[503]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 42% if used.)
Jan 27 07:52:30 tianqi-01 crond[503]: (CRON) INFO (running with inotify support)
Jan 27 10:15:03 tianqi-01 systemd[1]: Stopping Command Scheduler...
Jan 27 10:15:03 tianqi-01 systemd[1]: Stopped Command Scheduler.
[root@tianqi-01 ~]# 

要想執行任務計劃,必須開啓crond服務

[root@tianqi-01 ~]# systemctl start crond

任務計劃不執行的緣由分析

  • 在寫了一個計劃,放入到配置文件中,但就是不執行
  • 不執行的緣由頗有多是你寫的腳本里面,沒有使用絕對路徑的緣由致使不執行
    • 由於頗有可能,你在使用的命令不在PATH裏面,因此要麼將命令寫一個絕對路徑,要麼將命令的路徑加入到PATH變量裏面去
  • 建議:在寫一個腳本的時候,都要寫追加一個日誌,這樣能夠保證這個任務有據可查,再不執行的時候,查看錯誤日誌便可

任務計劃備份

  • crontab -l //列出
  • crontab文件存在位置/var/spool/cron/username
  • 在須要備份的時候,直接把這個文件,或者目錄拷貝下便可
  • crontab -r刪除任務計劃
  • crontab -u username -l //指定用戶

[root@tianqi-01 ~]# crontab -e

1 10 * 2 * /usr/bin/find /tmp/ -type f -mtime +100 | xargs rm -f 

[root@tianqi-01 ~]# crontab -l
1 10 * 2 * /usr/bin/find /tmp/ -type f -mtime +100 | xargs rm -f 
[root@tianqi-01 ~]# cat /var/spool/cron/root
1 10 * 2 * /usr/bin/find /tmp/ -type f -mtime +100 | xargs rm -f 
[root@tianqi-01 ~]# crontab -r
[root@tianqi-01 ~]# crontab -l

no crontab for root
[root@tianqi-01 ~]# crontab -u root -l
no crontab for root
[root@tianqi-01 ~]# 
10.24 chkconfig工具

  • chkconfig --list
  • chkconfig --level 3 network off
  • chkconfig --level 345 network off
  • chkconfig --del network
  • chkconfig --add network

chkconfig工具

  • crond、iptables、firewalld、nginx、httpd、mysql等等,都屬於服務。
  • chkconfig工具,在centos6和以前的版本中,控制服務的啓動;但在centos7中不多使用了,但爲了兼容以前的版本,依然可使用,但在將來的趨勢中, 有可能就會被遺棄了,如今就是過分的做用。
  • chkconfig --list //列出全部的系統服務
    • 表示chkconfig工具在centos6或以前的版本中,使用的服務的管理的機制叫 SysV,而centos7的版本中,使用的是 systemd 服務

[root@tianqi-01 ~]# chkconfig --list        //列出全部的系統服務

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off
network            0:off    1:off    2:on    3:on    4:on    5:on    6:off
[root@tianqi-01 ~]# 

用top命令查看進程,發現systemd的pid是1,說明這個進程很是重要。

chkconfig命令

  • 服務的腳本存放在 /etc/init.d/ 下面
    • 啓動腳本存放該目錄下

[root@tianqi-01 ~]# ls /etc/init.d/
functions  netconsole  network  README
[root@tianqi-01 ~]# 

  • chkconfig --list //列出全部的服務
  • chkconfig network off //將network服務關閉

[root@tianqi-01 ~]# chkconfig network off
[root@tianqi-01 ~]# chkconfig --list       
 //會看到2,3,4級別關閉了

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off
network            0:off    1:off    2:off    3:off    4:off    5:off    6:off

[root@tianqi-01 ~]# 
注意:該輸出結果只顯示 SysV 服務,並不包含原生 systemd 服務。SysV 配置數據可能被原生 systemd 配置覆蓋。

若是您想列出 systemd 服務,請執行 'systemctl list-unit-files'。

欲查看對特定 target 啓用的服務請執行 'systemctl list-dependencies [target]'。

[root@tianqi-01 ~]# chkconfig network on        //會看到2,3,4級別又開啓了
[root@tianqi-01 ~]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off
network            0:off    1:off    2:on    3:on    4:on    5:on    6:off
[root@tianqi-01 ~]# 

注意:該輸出結果只顯示 SysV 服務,並不包含原生 systemd 服務。SysV 配置數據可能被原生 systemd 配置覆蓋。

若是您想列出 systemd 服務,請執行 'systemctl list-unit-files'。

欲查看對特定 target 啓用的服務請執行 'systemctl list-dependencies [target]'。

  • 在系統中有七個級別等級列表:

    • 等級0表示:表示關機
    • 等級1表示:單用戶模式
    • 等級2表示:多用戶模式,比3少nfs服務
    • 等級3表示:多用戶模式,不帶圖形
    • 等級4表示:是一種保留的級別,暫時沒用
    • 等級5表示:帶圖形界面的多用戶模式,若是安裝了圖形,能夠啓動5級別
    • 等級6表示:從新啓動
  • 在centos6中的 /etc/inittab 中定義開機的級別

  • 在centos7中,已經沒有用了,不須要定義開機的級別了

[root@tianqi-01 ~]# vim /etc/inittab

# inittab is no longer used when using systemd.      //已經再也不使用inittab級別了
#
# ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target
#
# systemd uses 'targets' instead of runlevels. By default, there are two main targets:
#
# multi-user.target: analogous to runlevel 3
# graphical.target: analogous to runlevel 5
#
# To view current default target, run:
# systemctl get-default
#
# To set a default target, run:
# systemctl set-default TARGET.target
#

chkconfig命令,指定某一級別開啓/關閉

  • chkconfig --level 3 network off //指定network中的3級別關閉

[root@tianqi-01 ~]# chkconfig --level 3 network off    //指定network中的3級別關閉
[root@tianqi-01 ~]# chkconfig --list                            //列出全部服務

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off
network            0:off    1:off    2:on    3:off    4:on    5:on    6:off
[root@tianqi-01 ~]# 

注意:該輸出結果只顯示 SysV 服務,並不包含原生 systemd 服務。SysV 配置數據可能被原生 systemd 配置覆蓋。

若是您想列出 systemd 服務,請執行 'systemctl list-unit-files'。

欲查看對特定 target 啓用的服務請執行 'systemctl list-dependencies [target]'。

  • chkconfig --level 345 network on //指定network中的3,4,5級別開啓

[root@tianqi-01 ~]# chkconfig --level 35 network off
[root@tianqi-01 ~]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off
network            0:off    1:off    2:on    3:off    4:on    5:off    6:off
[root@tianqi-01 ~]# chkconfig --level 345 network on
[root@tianqi-01 ~]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off
network            0:off    1:off    2:on    3:on    4:on    5:on    6:off
[root@tianqi-01 ~]# 

  • 0和1和6級別不能設置成開
    • 0級別在關機狀態是不可能開啓的
    • 1級別是單用戶模式,服務是不可能開啓的
    • 6級別在重啓的時候,是不可能開啓的——>重啓至關於先關閉在啓動(重啓的那一刻是先關閉纔對)。

將一個腳本加入到服務列表中

  1. 首先將啓動腳本放入到 /etc/init.d 這個目錄下——>只有在這個目錄下,才能夠添加到服務列表中去
  2. 文件名稱無所謂,但內容有格式要求
    • 首先是是一個shell腳本
    • 而後chkconfig指定運行級別啓動順序,第10位啓動,第90位關閉
    • 下面代碼爲它的固定格式,必需要有的!!!

[root@tianqi-01 ~]# cd /etc/init.d/
[root@tianqi-01 init.d]# ls

functions  netconsole  network  README
[root@tianqi-01 init.d]# cp network 123
[root@tianqi-01 init.d]# ll

total 48
-rwxr-xr-x  1 root root  7293 Jan 27 10:53 123
-rw-r--r--. 1 root root 17500 May  3  2017 functions
-rwxr-xr-x. 1 root root  4334 May  3  2017 netconsole
-rwxr-xr-x. 1 root root  7293 May  3  2017 network
-rw-r--r--. 1 root root  1160 Aug  5 14:38 README
[root@tianqi-01 init.d]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off

[root@tianqi-01 init.d]# chkconfig --add 123        //將123加入到服務列表中
[root@tianqi-01 init.d]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

123                0:off    1:off    2:on    3:on    4:on    5:on    6:off
netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off
network            0:off    1:off    2:on    3:on    4:on    5:on    6:off
[root@tianqi-01 init.d]# 

[root@tianqi-01 init.d]# ls
123  functions  netconsole  network  README
[root@tianqi-01 init.d]# vim 123        //名字無所謂,可是有固定的格式

#! /bin/bash                                    //首先是一個shell腳本
#
# network       Bring up/down networking
#
# chkconfig: 2345 10 90        //指定運行級別的啓動順序,第10位啓動,第90位關閉,這個格式必需要有
# description: Activates/Deactivates all network interfaces configured to \    //描述必需要有
#              start at boot time.
#
### BEGIN INIT INFO
# Provides: $network
# Should-Start: iptables ip6tables NetworkManager-wait-online NetworkManager $network-pre
# Short-Description: Bring up/down networking
# Description: Bring up/down networking
### END INIT INFO

# Source function library.
. /etc/init.d/functions

if [ ! -f /etc/sysconfig/network ]; then
    exit 6
fi

. /etc/sysconfig/network

if [ -f /etc/sysconfig/pcmcia ]; then
    . /etc/sysconfig/pcmcia
fi


# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 6

# if the ip configuration utility isn't around we can't function.
[ -x /sbin/ip ] || exit 1


CWD=$(pwd)
cd /etc/sysconfig/network-scripts

注意:只有運行級別和描述有了,才能被識別。

  • chkconfig --del network //刪除服務列表中的腳本
  • chkconfig --add network //增長服務列表中的腳本

[root@tianqi-01 init.d]# chkconfig --del 123
[root@tianqi-01 init.d]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off
network            0:off    1:off    2:on    3:on    4:on    5:on    6:off
[root@tianqi-01 init.d]# 
10.25 systemd管理服務

  • systemctl list-units --all --type=service
  • 幾個經常使用的服務相關的命令
  • systemctl enable crond.service //讓服務開機啓動
  • systemctl disable crond //不讓開機啓動
  • systemctl status crond //查看狀態
  • systemctl stop crond //中止服務
  • systemctl start crond //啓動服務
  • systemctl restart crond //重啓服務
  • systemctl is-enabled crond //檢查服務是否開機啓動

systemd工具

  • systemd是centos7管理的一個服務機制,在centos6或以前的版本中可使用chkconfig工具去管理系統的服務,在centos7中,也可使用,但會提示使用 systemctl list-unit-files ,用它來查看全部的服務。
  • systemctl list-unit-files //查看全部的服務

[root@tianqi-01 init.d]# chkconfig --list

Note: This output shows SysV services only and does not include native
      systemd services. SysV configuration data might be overridden by native
      systemd configuration.

      If you want to list systemd services use 'systemctl list-unit-files'.
      To see services enabled on particular target use
      'systemctl list-dependencies [target]'.

netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off
network            0:off    1:off    2:on    3:on    4:on    5:on    6:off
[root@tianqi-01 init.d]# systemctl list-unit-files    //查看全部的服務,裏面不只有service,還有                                                                                                                                      socket,還有target
UNIT FILE                                     STATE   
proc-sys-fs-binfmt_misc.automount             static  
dev-hugepages.mount                           static  
dev-mqueue.mount                              static  
proc-sys-fs-binfmt_misc.mount                 static  
sys-fs-fuse-connections.mount                 static  
sys-kernel-config.mount                       static  
sys-kernel-debug.mount                        static  
tmp.mount                                     disabled
brandbot.path                                 disabled

等等

systemd相關的命令

  • systemctl list-units --all --type=service //列出全部的service
    • 會列出全部的service
    • 列出描述信息,是不是loaded,是不是active
    • 按 空格 往下翻
    • 如果不加 --all ,則就不會列出 未激活的active

[root@tianqi-01 init.d]# systemctl list-units --all --type=service
  UNIT                                                  LOAD      ACTIVE   SUB     DESCRIPTION
  atd.service                                           loaded    active   running Job spooling tools
  auditd.service                                        loaded    active   running Security Auditing Service
  brandbot.service                                      loaded    inactive dead    Flexible Branding Service
  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
  dracut-shutdown.service                               loaded    inactive dead    Restore /run/initramfs
  ebtables.service                                      loaded    inactive dead    Ethernet Bridge Filtering tables
  emergency.service                                     loaded    inactive dead    Emergency Shell

等等,只列出了一部分

並在最下面,會告訴你 LOAD,ACTIVE,SUB是什麼意思

LOAD = Reflects whether the unit definition was properly loaded.

ACTIVE = The high-level unit activation state, i.e. generalization of SUB.

SUB = The low-level unit activation state, values depend on unit type.

還會提醒,若想列出全部的 unit files,請使用 systemctl list-unit-files 命令

  • systemctl enable crond.service //讓服務開機啓動——>service可省略
  • systemctl disable crond //不讓開機啓動

[root@tianqi-01 init.d]# systemctl enable crond.service    //讓服務開機啓動
[root@tianqi-01 init.d]# systemctl disable crond        //不讓開機啓動
Removed symlink /etc/systemd/system/multi-user.target.wants/crond.service.
[root@tianqi-01 init.d]# systemctl enable crond
Created symlink from /etc/systemd/system/multi-user.target.wants/crond.service to /usr/lib/systemd/system/crond.service.
[root@tianqi-01 init.d]# 

  • systemctl status crond //查看狀態

[root@tianqi-01 init.d]# systemctl status crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2018-01-27 10:16:25 CST; 1h 1min ago
 Main PID: 2706 (crond)
   CGroup: /system.slice/crond.service
           └─2706 /usr/sbin/crond -n

Jan 27 10:16:25 tianqi-01 systemd[1]: Started Command Scheduler.
Jan 27 10:16:25 tianqi-01 systemd[1]: Starting Command Scheduler...
Jan 27 10:16:25 tianqi-01 crond[2706]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 97% if used.)
Jan 27 10:16:25 tianqi-01 crond[2706]: (CRON) INFO (running with inotify support)
Jan 27 10:16:25 tianqi-01 crond[2706]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
Jan 27 10:24:01 tianqi-01 crond[2706]: (root) RELOAD (/var/spool/cron/root)
[root@tianqi-01 init.d]# 

  • systemctl stop crond //中止服務
  • systemctl start crond //啓動服務
  • systemctl restart crond //重啓服務
  • systemctl is-enabled crond //檢查服務是否開機啓動

[root@tianqi-01 init.d]# systemctl is-enabled crond
enabled
[root@tianqi-01 init.d]# systemctl disable crond
Removed symlink /etc/systemd/system/multi-user.target.wants/crond.service.
[root@tianqi-01 init.d]# systemctl is-enabled crond
disabled
[root@tianqi-01 init.d]# systemctl enable crond
Created symlink from /etc/systemd/system/multi-user.target.wants/crond.service to /usr/lib/systemd/system/crond.service.
[root@tianqi-01 init.d]# 

  • 而且能夠經過輸出信息,在 /etc/systemd/system/multi-user.target.wants/crond.service 得到service的配置文件內容

[root@tianqi-01 init.d]# cat /etc/systemd/system/multi-user.target.wants/crond.service
[Unit]
Description=Command Scheduler
After=auditd.service systemd-user-sessions.service time-sync.target

[Service]
EnvironmentFile=/etc/sysconfig/crond
ExecStart=/usr/sbin/crond -n $CRONDARGS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process

[Install]
WantedBy=multi-user.target

[root@tianqi-01 init.d]# 

[root@tianqi-01 init.d]# ls -l /etc/systemd/system/multi-user.target.wants/crond.service
lrwxrwxrwx 1 root root 37 Jan 27 11:20 /etc/systemd/system/multi-user.target.wants/crond.service -> /usr/lib/systemd/system/crond.service

//是一個軟鏈接,從軟連接的右邊到左邊
[root@tianqi-01 init.d]# ll /usr/lib/systemd/system/crond.service    //這裏纔是文件真正的路徑
-rw-r--r--. 1 root root 284 Aug  3 23:33 /usr/lib/systemd/system/crond.service
[root@tianqi-01 init.d]# 

[root@tianqi-01 init.d]# systemctl disable crond
Removed symlink /etc/systemd/system/multi-user.target.wants/crond.service.
[root@tianqi-01 init.d]# ls -l /etc/systemd/system/multi-user.target.wants/crond.service
ls: cannot access /etc/systemd/system/multi-user.target.wants/crond.service: No such file or directory

//這裏會把軟鏈接挪走
[root@tianqi-01 init.d]# systemctl enable crond
Created symlink from /etc/systemd/system/multi-user.target.wants/crond.service to /usr/lib/systemd/system/crond.service.
[root@tianqi-01 init.d]# ls -l /etc/systemd/system/multi-user.target.wants/crond.service
lrwxrwxrwx 1 root root 37 Jan 27 11:25 /etc/systemd/system/multi-user.target.wants/crond.service -> /usr/lib/systemd/system/crond.service
[root@tianqi-01 init.d]# 

//此時會從新建立軟連接

10.26 unit介紹

  • ls /usr/lib/systemd/system //系統全部unit,分爲如下類型:
    • service 系統服務
    • target 多個unit組成的組
    • device 硬件設備
    • mount 文件系統掛載點
    • automount 自動掛載點
    • path 文件或路徑
    • scope 不是由systemd啓動的外部進程
    • slice 進程組
    • snapshot systemd快照
    • socket 進程間通訊套接字
    • swap swap文件
    • timer 定時器

unit相關的命令

  • systemctl list-units //列出正在運行的unit
    • 並會提示,若要列出全部的units,則須要加 --all
  • systemctl list-units --all //列出全部,包括失敗的或者inactive的
  • systemctl list-units --all --state=inactive //列出inactive的unit
  • systemctl list-units --type=service //列出狀態爲active的service
    • 其中failed是一個特例,也會列出來
  • systemctl is-active crond.service //查看某個服務是否爲active

[root@tianqi-01 init.d]# ls /usr/lib/systemd/system
arp-ethers.service                      messagebus.service                             sys-fs-fuse-connections.mount
atd.service                             microcode.service                              sysinit.target
auditd.service                          multi-user.target                              sysinit.target.wants
autovt@.service                         multi-user.target.wants                        sys-kernel-config.mount
basic.target                            NetworkManager-dispatcher.service              sys-kernel-debug.mount
basic.target.wants                      NetworkManager.service                         syslog.socket
blk-availability.service                NetworkManager-wait-online.service             syslog.target.wants
bluetooth.target                        network-online.target                          systemd-ask-password-console.path
等等,還有不少
[root@tianqi-01 init.d]#

[root@tianqi-01 system]# systemctl is-active crond.service        //查看某個服務是否爲active
active
[root@tianqi-01 system]# systemctl is-enabled crond.service
enabled
10.27 target介紹

  • 系統爲了方便管理target來管理unit
  • systemctl list-unit-files --type=target //列出系統中全部的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]部分

target相關命令

  • systemctl list-unit-files --type=target //列出系統中全部的target

[root@tianqi-01 system]# systemctl list-unit-files --type=target
UNIT FILE                 STATE   
basic.target              static  
bluetooth.target          static  
cryptsetup-pre.target     static  
cryptsetup.target         static  
ctrl-alt-del.target       disabled
default.target            enabled 
emergency.target          static  
final.target              static  
getty.target              static  
graphical.target          static  
halt.target               disabled
hibernate.target          static  
hybrid-sleep.target       static  
initrd-fs.target          static  
initrd-root-fs.target     static  
initrd-switch-root.target static  

等等,僅截取了一部分

  • systemctl list-dependencies multi-user.target //查看指定target下面有哪些unit
  • systemctl get-default //查看系統默認的target
  • systemctl set-default multi-user.target //設置默認的target

[root@tianqi-01 system]# systemctl list-dependencies multi-user.target
multi-user.target
● ├─atd.service
● ├─auditd.service
● ├─brandbot.path
● ├─crond.service
● ├─dbus.service
● ├─firewalld.service
● ├─irqbalance.service
● ├─kdump.service
● ├─network.service
● ├─NetworkManager.service
● ├─plymouth-quit-wait.service
● ├─plymouth-quit.service
● ├─postfix.service
● ├─rsyslog.service
● ├─sshd.service
● ├─systemd-ask-password-wall.path
● ├─systemd-logind.service
● ├─systemd-readahead-collect.service
● ├─systemd-readahead-replay.service
● ├─systemd-update-utmp-runlevel.service
● ├─systemd-user-sessions.service
● ├─tuned.service
● ├─vmtoolsd.service
● ├─basic.target
● │ ├─microcode.service

等等,僅列出一部分

[root@tianqi-01 system]# systemctl get-default
multi-user.target
[root@tianqi-01 system]# systemctl set-default multi-user.target    //一樣出建立軟鏈接
Removed symlink /etc/systemd/system/default.target.
Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.
[root@tianqi-01 system]# ls /etc/systemd/system/default.target
/etc/systemd/system/default.target
[root@tianqi-01 system]# ll !$
ll /etc/systemd/system/default.target
lrwxrwxrwx 1 root root 41 Jan 27 11:51 /etc/systemd/system/default.target -> /usr/lib/systemd/system/multi-user.target
[root@tianqi-01 system]# 

  • 一個service屬於一種類型的unit
  • 多個unit組成了一個target
  • 一個target裏面包含了多個service
  • cat /usr/lib/systemd/system/sshd.service 看[install]部分

[root@tianqi-01 system]# cat /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.service
Wants=sshd-keygen.service

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target
[root@tianqi-01 system]# 

  • 只有multi-user.target 裏面的service能夠設置開機啓動。其餘的target設置成默認啓動沒法正常啓動。

[root@tianqi-01 system]# cat /usr/lib/systemd/system/crond.service
[Unit]
Description=Command Scheduler
After=auditd.service systemd-user-sessions.service time-sync.target

[Service]
EnvironmentFile=/etc/sysconfig/crond
ExecStart=/usr/sbin/crond -n $CRONDARGS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process

[Install]
WantedBy=multi-user.target

[root@tianqi-01 system]# 

友情連接:阿銘Linux

相關文章
相關標籤/搜索