10.23 linux任务计划cron

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_systemd

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_systemd_02

(任务计划配置文件,定义几个环境变量)


格式:分钟 小时 日期 月份 周 用户 命令


进入crontab配置文件:crontab -e


范围:1-10                   比如:1月到10月

双数时间:*/2              比如:每2天

独立时间:1,2,3            比如:每周的周1,周2,周3


启动cron服务:systemctl start crond

检查是否启动:ps aux | grep crond 查看crond是否启动或者systemctl status crond是否是绿色运行

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_cron_03

如果任务计划放到配置文件中,但是没有执行,很有可能是脚本用的是一个命令,而不是绝对路径

有两种解决方法:1,命令写绝对路径;2,把命令的路径加入到配置文件中的PATH变量中


建议:每写一个任务计划都要写上追加日志,正确和错误输出


·列出任务计划:crontab -l

例子:新建任务计划

[root@localhost ~]# crontab -e

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_cron_04[root@localhost ~]# crontab -l

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

任务计划会保存在/var/spool/cron/下对应用户名的文件中,备份改文件就可以备份任务计划


·删除任务计划:crontab -r

[root@localhost ~]# crontab -r
[root@localhost ~]# crontab -l
no crontab for root


·指定用户:crontab -u

[root@localhost ~]# crontab -u root -l
no crontab for root


参考:http://man.linuxde.net/





10.24 chkconfig工具


★CentOS7系统中已经不再使用chkconfig工具,因此学习重心放在systemd上

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_cron_05


·使用chkconfig工具的服务有哪些:chkconfig --list

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_chkconfig_06

服务脚本所在位置:/etc/init.d/

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


·关闭服务:chkconfig 服务名 off

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_chkconfig_07


·打开服务:chkconfig 服务名 on

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_cron_08


·更改运行级别:更改/etc/inittab,不过CentOS7开始已经不使用了


·指定某个级别的开启关闭:

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_chkconfig_09

(--level在前后都可以,没有区别)


·指定多个级别的开启关闭:

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_chkconfig_10

(345中间不加逗号)


0和6是不可以开启的

·自定义服务并加入服务列表:chkconfig --add 服务名

[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:关
[root@localhost ~]# ls /etc/init.d
functions  netconsole  network  README
[root@localhost ~]# cp /etc/init.d/network /etc/init.d/123
[root@localhost ~]# ls /etc/init.d/
123  functions  netconsole  network  README
[root@localhost ~]# chkconfig --add 123
[root@localhost ~]# chkconfig --list

注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。 

      要列出 systemd 服务,请执行 'systemctl list-unit-files'。
      查看在具体 target 启用的服务请执行
      'systemctl list-dependencies [target]'。
      
123            0:关1:关2:开3:开4:开5:开6:关
netconsole     0:关1:关2:关3:关4:关5:关6:关
network        0:关1:关2:开3:开4:关5:关6:关

(首先,自定义的服务要在/etc/init.d目录下,其次,文件的内容有格式)


服务的格式中,红色箭头所指的两行必须要有,才能被识别

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_cron_11


·删除自定义服务:chkconfig --del 服务名

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_systemd_12





10.25 systemd管理服务

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_chkconfig_13

·列出所有服务:systemctl list-unit-files

[root@localhost ~]# systemctl list-unit-files

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_systemd_14

(内容太多不详细展示)


·列出service服务:systemctl list-units --all --type=service

[root@localhost ~]# systemctl list-units --all --type=service

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_cron_15

·列出激活状态的service服务:systemctl list-units --type=service

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_systemd_16

(内容太多不详细展示)


·让服务开机启动:systemctl enable 服务名

·不让服务开机启动:systemctl disable 服务名

[root@localhost ~]# systemctl enable crond.service## 可以不加.service
[root@localhost ~]# systemctl disable crond
Removed symlink /etc/systemd/system/multi-user.target.wants/crond.service.


·查看服务状态:systemctl status 服务名

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_cron_17

·停止服务:systemctl stop 服务名

·启动服务:systemctl start 服务名

·重启服务:systemctl restart 服务名

[root@localhost ~]# systemctl stop crond
[root@localhost ~]# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; disabled; vendor preset: enabled)
Active: inactive (dead)
1月 23 20:23:29 localhost.localdomain systemd[1]: Started Command Scheduler.
1月 23 20:23:29 localhost.localdomain systemd[1]: Starting Command Scheduler...
1月 23 20:23:29 localhost.localdomain crond[567]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 35% if used.)
1月 23 20:23:30 localhost.localdomain crond[567]: (CRON) INFO (running with inotify support)
1月 23 22:26:56 localhost.localdomain systemd[1]: Stopping Command Scheduler...
1月 23 22:26:56 localhost.localdomain systemd[1]: Stopped Command Scheduler.
[root@localhost ~]# systemctl start crond
[root@localhost ~]# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; disabled; vendor preset: enabled)
Active: active (running) since 二 2018-01-23 22:27:18 CST; 1s ago
Main PID: 1551 (crond)
CGroup: /system.slice/crond.service
└─1551 /usr/sbin/crond -n

1月 23 22:27:18 localhost.localdomain systemd[1]: Started Command Scheduler.
1月 23 22:27:18 localhost.localdomain systemd[1]: Starting Command Scheduler...
1月 23 22:27:18 localhost.localdomain crond[1551]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 9% if used.)
1月 23 22:27:19 localhost.localdomain crond[1551]: (CRON) INFO (running with inotify support)
1月 23 22:27:19 localhost.localdomain crond[1551]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
[root@localhost ~]# systemctl restart crond
[root@localhost ~]# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; disabled; vendor preset: enabled)
Active: active (running) since 二 2018-01-23 22:27:31 CST; 2s ago
Main PID: 1560 (crond)
CGroup: /system.slice/crond.service
└─1560 /usr/sbin/crond -n

1月 23 22:27:31 localhost.localdomain systemd[1]: Started Command Scheduler.
1月 23 22:27:31 localhost.localdomain systemd[1]: Starting Command Scheduler...
1月 23 22:27:31 localhost.localdomain crond[1560]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 77% if used.)
1月 23 22:27:32 localhost.localdomain crond[1560]: (CRON) INFO (running with inotify support)
1月 23 22:27:32 localhost.localdomain crond[1560]: (CRON) INFO (@reboot jobs will be run at computer's startup.)


·检查服务是否开机启动:systemctl is-enabled 服务名

[root@localhost ~]# systemctl is-enabled crond
disabled
[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 ~]# systemctl is-enabled crond
enabled


服务的配置文件内容:/etc/systemd/system/multi-user.target.wants/crond.service(软连接)

实际文件在:/usr/lib/systemd/system/crond.service

如果disable服务,那么会挪走软连接





10.26 unit介绍


系统所有unit,在 /usr/lib/systemd/system 中

·分为以下类型:

·service                              系统服务

·target                               多个unit组成的组

·device                               硬件设备

·mount                              文件系统挂载点

·automount                       自动挂载点

·path                                  文件或路径

·scope                               不是由systemd启动的外部进程

·slice                                  进程组

·snapshot systemd            快照

·socket                               进程间通信套接字

·swap                                 swap文件

·timer                                定时器


unit相关命令:


·列出正在运行的unit:systemctl list-units

[root@localhost ~]# systemctl list-units

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_cron_18


·列出所有unit(包括失败的或者inactive的):systemctl list-units --all

[root@localhost ~]# systemctl list-units --all[object Object]

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_cron_19


·列出inactive的unit:systemctl list-units --all --state=inactive

[root@localhost ~]# systemctl list-units --all --state=inactive

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_systemd_20


·列出状态为active的service:systemctl list-units --type=service

[root@localhost ~]# systemctl list-units --type=service

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_chkconfig_21


·查看某个服务是否为active:systemctl is-active crond.service

[root@localhost ~]# systemctl is-active crond.service
active

类似于:systemctl is-enabled crond.service





10.27 target介绍


2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_chkconfig_22


·列出系统中所有的target:systemctl list-unit-files --type=target

[root@localhost ~]# systemctl list-unit-files --type=target

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_cron_23


·查看指定target下面有哪些unit:systemctl list-dependencies multi-user.target

[root@localhost ~]# systemctl list-dependencies multi-user.target

2018-1-29 8周1次课 cron,chkconfig,systemd,unit,target_systemd_24

(target下面可以继续含有target)


·查看系统默认的target:systemctl get-default

[root@localhost ~]# systemctl get-default
multi-user.target


·更改系统默认target:systemctl set-default multi-user.target

[root@localhost ~]# 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.

(更改系统默认target去更改类似于CentOS6中的运行级别)


·一个service属于一种类型的unit

·多个unit组成了一个target

·一个target里面包含了多个service


·查看某个service属于哪个target:看[install]部分

[root@localhost ~]# 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