1,命令crontab。
linux任务计划功能的操作都是通过crontab命令来完成的,常用的选项有以下几个。
-u:指定某个用户,不加-u则为当前用户。
-e:制定计划任务。
-l:列出计划任务。
-r:删除计划任务。
创建第一个任务计划。
#crontab -e 命令来编写任务计划,相当于是用vim工具打开crontab的配置文件。
root用户打开的就是/var/spool/cron/root,这个文件不能直接编辑,否则会出错。写入以下内容然后:wq保存。
01 10 05 06 3 echo "ok" > /root/cron.log
从左到右每个字段表示的含义分别为:分、时、日、月、周和命令行。上述表示的是在6月5日而且必须是星期三的这一天的10点01分执行命令:echo "ok" > /root/cron.log。
查看已经设定的任务计划:
# crontab -l
01 10 05 06 3 echo "ok" > /root/cron.log
删除任务计划:
# crontab -r
# crontab -l
no crontab for root
2,chkconfig工具。
CentOS 6上的服务管理工具为chkconfig,linux系统所有的预设服务都可以通过查看/etc/init.d目录得到,如下所示:
只有很少的几个文件,因为CentOS 7不再延续6的服务管理方案了。但是我们依然可以继续使用chkconfig这个命令。系统的预设服务都可以通过这样的命令来实现:service 服务名 start|stop|restart。这里的服务名就是/etc/init.d/目录下的这些文件。启动crond除了可以使用命令service crond start外,还可以使用命令/etc/init.d/crond start。
我们也可以使用命令chkconfig --list列出所有的服务以及每个级别的开启状态。
在这里会看到一个提示,提示我们该命令输出的内容并没有包含CentOS 7的原生systemd服务,在这里仅仅列出SysV服务。这也是 /etc/init.d/目录下只有一两启动脚本的原因。早期的CentOS版本采用的服务管理都是SysV而7换成了systemd。
这里的级别(数字0-6)为系统启动级别,运行级别0、1和6被系统保留。其中0作为shutdown动作,1为启动至单用户模式,6为重启。在一般的linux系统中一般都有2、3、4、5几个级别。2表示无NFS支持的多用户模式,3表示完全多用户模式,4保留给用户自定义,5表示图形等六方式。
更改某级别下的开启状态。用--level 指定一个或多个级别,后面是服务名,然后是off或者on。
--level后面还可以省略级别,默认是针对2、3、4、5操作的。
chkconfig还有一个功能,就是可以把某个服务加入系统服务或者删除,即可以使用“chkconfig --add 服务名”或 者“chkconfig --del 服务名”这样的形式,并且可以在chkconfig --list的结果中查找到。这个功能常用于把自定义的启动脚本加入到本地系统服务当中。
3,systemd服务管理。
CentOS 7 不再使用SysV而改为systemd了,这是因为systemd支持多个服务并发启动,而SysV只能一个一个的启动,显然systemd的服务启动会快很多。
列出系统所有的服务。
这些服务对应的启动脚本文件位置。里面有目录有文件,有的以.service为后缀,有的以.target为后缀,当然还有其他的格式。
常用的命令有:
#systemctl enable 服务名:让某个服务开机开启。
#systemctl disable 服务名:不让开机启动。
#systemctl status 服务名:查看服务状态。
#systemctl start 服务名:启动某个服务。
#systemctl stop 服务名:停止某个服务。
#systemctl restart 服务名:重启某个服务。
#systemctl is-enable 服务名:查看某个服务是否开机启动。
4,概念unit。
执行ls /usr/lib/systemd/system的时候,下面有很多文件,可以归为以下几类。
service:系统服务。
target:多个unit组成的组。
device:硬件设备。
mount:文件系统挂载点。
automount:自动挂载点。
path:文件或路径。
scope:不是由systemd启动的外部进程。
slice:进程组。
snapshot:systemd快照。
socket:进程间通信的套接字。
swap:swap文件,
timer:定时器。
以为每种类型文件都为一个unit,正是这些unit才组成了系统的各个资源。unit的相关命令。
# systemctl list-units //列出正在运行的unit
# systemctl list-units --all //列出所有的unit(包括失败的,inactive的)
# systemctl list-units --all --state=inactive//列出所有inactive的unit
# systemctl list-units --all --type=service //列出所有状态的unit
# systemctl list-units --type=service //列出状态为active的service
# systemctl is-active crond.service //查看某个unit是否active
5,概念target。
target类似CentOS 6里面的启动级别,但是target支持多个同时启动。target其实是多个unit的组合,系统启动说白了就是启动多个unit,为了方便管理就用target来管理这些unit。
查看系统所有的target。
查看一个target包含的所有unit:
关于target的几个命令:get-default是查看系统默认的target。set-default是设置默认的target。
运行级别和target的对比。
SysV运行级别 | Systemd target | 备注 |
0 | poweroff.target | 关闭系统 |
1 | rescure.target | 单用户模式 |
2 | multiuser.target | 用户自定义级别通常识别为级别3 |
3 | multiuser.target | 多用户,无图形 |
4 | multiuser.target | 用户自定义级别通常识别为级别3 |
5 | graphical.target | 多用户,有图形,比级别3多一个图形 |
6 | reboot.target | 重启 |
service、unit、target之间的联系:
(1) 一个service属于一种unit。
(2)多个unit一起组成了一个target。
(3)一个target里面包含了多个service,可以查看文件/usr/lib/systemd/system/sshd.service里面[install]部分的内容,它就定义了该service属于哪一个target。