了解systemctl和chkconfig的服务管理工具

crontab计划任务

crontab计划任务的计时方式:对大部分时间单位都清楚的划分,具体可以划分到分钟,时间单位有分钟,小时,日(一个月内的第几天),月,周(一周的第几天,计划任务中可以是指定为每隔几周来执行某些任务)


[[email protected] ~]# cat /etc/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)     分钟时间单位,从0-59分钟
# | .------------- hour (0 - 23)        小时时间单位,从0-23点
# | | .---------- day of month (1 - 31) 日期时间单位,从1-31日
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...  月的时间单位,从1-12月
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat     周几的时间单位,从0-6(0和7可以指定一周的第七天)
# | | | | |
# * * * * * user-name command to be executed

crontab计划任务分为分\时\日\月\周为时间计算单位,*代表每隔多长时间就执行,全部为*时表示每分钟执行一次



分:以分钟为单位,可以写0到59的分钟数,也可以写成每隔多少分钟( 如每隔20分钟执行操作:*/20 * * * * )



时:以小时为单位,可以取值0到59的数值,可以写成每隔多少小时,也可以写成如9-13点的时间段,配合分钟设置使用,表示为9点到13点这段时间内,在每小时的第几分钟执行一次任务。



日:指定一个月内的第多少天,可以指定一段日期,表示为在这段日期内,每天都会执行一次计划任务,可以使用格式1,2,3表示1和2和3的时间点上都执行计划任务



月:指定一年内的第几个月,可以指定N个月的时间段,表示为在这段日期内,每天都会执行一次计划任务,也可以指定每隔几个月执行一次计划任务(如 : * * */2 * * 表示为每隔两个月执行一次计划任务),可以使用格式1,2,3表示1和2和3的时间点上都执行计划任务



周: 一周的第几天,从0-6的数值,0和7则表示为一周的第七天,同样可以指定一段时间或每隔几周执行一次计划任务,这里需要注意的是写成*/2的意思则是每隔2周去执行,而不是这周会每隔两天的意思。
crontab 选项 执行操作的命令



crontab -e 编辑计划任务,向crontab配置文件中新添加一个计划任务
crontab -l 列出系统中当前所有的计划任务
crontab -r 删除所有配置的计划任务,清空所有计划任务
crontab -u 指定某个用户下的所有计划任务配合-l 列出当前用户的计划任务
crontab 执行脚本当中的命令时,可能会执行不成功,原因是因为脚本中是直接使用命令来执行的,而不是使用命令的绝对路径,这样就会导致命令执行失败,计划任务同样也会无法正确执行



centos7启动crontab,必须启动计划任务进程才能够正常运行计划任务:

[[email protected] ~]#  systemctl  start  crond.service
[[email protected] ~]# systemctl status crond.service
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-07-17 01:13:53 CST; 12h ago
 Main PID: 1015 (crond)
   CGroup: /system.slice/crond.service
           └─1015 /usr/sbin/crond -n

Jul 17 01:13:53 localhost.localdomain systemd[1]: Started Command Scheduler.
Jul 17 01:13:53 localhost.localdomain systemd[1]: Starting Command Scheduler...
Jul 17 01:13:53 localhost.localdomain crond[1015]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 18% if used.)
Jul 17 01:13:53 localhost.localdomain crond[1015]: (CRON) INFO (running with inotify support)
[[email protected] ~]# ps -aux |grep crond
root       1015  0.0  0.1 126228  1592 ?        Ss   09:07   0:00 /usr/sbin/crond -n
root       3752  0.0  0.0 112652   960 pts/0    R+   13:54   0:00 grep --color=auto crond

备份计划任务,计划任务的配置文件存储在/var/spool/cron/下,计划任务会以用户名的命名方式来存储,cat该用户名的配置文件可以查看计划任务内容,备份可以直接拷贝该文件即可

[[email protected] ~]# crontab -l
1 5 */7 * * cp /etc/passwd /usr/local/src/
[[email protected] ~]# cat /var/spool/cron/root
1 5 */7 * * cp /etc/passwd /usr/local/src/
45 4 1,10,22 * * /etc/init.d/httpd restart
上面的例子表示每月1、10、22日的4:45重启apache。
10 1 * * 6,0 /etc/init.d/httpd restart
上面的例子表示每周六、周日的1:10重启apache。 
0,30 18-23 * * * /etc/init.d/httpd restart
上面的例子表示在每天18:00至23:00之间每隔30分钟重启apache。 
0 23 * * 6 /etc/init.d/httpd restart
上面的例子表示每星期六的23:00 重启apache
```。

0 /1 /etc/init.d/httpd restart
每一小时重启apache

0 23-7/1 * /etc/init.d/httpd restart
晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /etc/init.d/httpd restart
每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /etc/init.d/httpd restart
一月一号的4点重启apache


-----

# chkconfig服务管理工具

在Centos7中保留chkconfig服务管理的方式,我们可以用chkconfig新增自定义服务脚本文件来管理编译安装的服务
centos7系统中关于chkconfig的描述:

-----

注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。
如果您想列出 systemd 服务,请执行 ‘systemctl list-unit-files‘。
欲查看对特定 target 启用的服务请执行
‘systemctl list-dependencies [target]‘。


-----

-----

chkconfig的选项用法:
--add 增加所指定的系统服务,让chkconfig管理它,并同时在系统启动的叙述文件
 --del  删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据。
 --level  <运行级别>  指定读系统服务要在哪一个执行等级中开启或关闭

-----

 0:表示关机
 1:单用户模式
 2:无网络连接的多用户命令行模式
 3:有网络连接的多用户命令行模式
 4:不可用
 5:带图形界面的多用户模式
 6:重新启动

-----

使用范例,以httpd服务为例:
chkconfig --list                                #列出所有的系统服务
chkconfig --add httpd                     #增加httpd服务
chkconfig --del httpd                       #删除httpd服务
chkconfig --level httpd 2345 on       #设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态
chkconfig --list                                 #列出系统所有的服务启动情况
chkconfig --list httpd                        #列出httpd服务设置情况
chkconfig --level 35 httpd on           #设定httpd在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭
chkconfig httpd on                           #设定httpd在各等级为on,“各等级”包括2、3、4、5等级

-----

在chkconfig管理中增加一个服务:
服务脚本必须存放在/etc/ini.d/服务脚本目录下 :
chkconfig --add  服务的脚本名称
在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了;
chkconfig --level 35 服务脚本名 on
修改服务的默认启动等级。

-----

# systemd服务管理

systemd是Centos7版本及更高版本中新增的一个服务管理方式,跟centos6之前的chkconfig服务管理不同的地方是,增加了

-----

systemctl用法
使用systemctl  list-units -all --type=service列出所有在运行状态服务的详细信息(正在运行和暂停的服务),--type=service是指定服务类型的内容,rinning正在运行的,inactive 不活跃的

-----

[[email protected] locales]# systemctl list-units -all --type=service
UNIT LOAD ACTIVE SUB DESCRIPTION
abrt-ccpp.service loaded active exited Install ABRT coredump hook
abrt-oops.service loaded active running ABRT kernel log watcher
abrt-vmcore.service loaded inactive dead Harvest vmcores for ABRT
abrt-xorg.service loaded inactive dead ABRT Xorg log watcher
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
auditd.service loaded active running Security Auditing Service


-----

systemctl添加一个服务,并启动、查看服务状态、停止服务和重启服务,这里以crond服务为例
systemctl enable     添加服务,添加服务时如有软连接会直接显示出出来其连接路径,如下(第二行内容):

-----

[[email protected] locales]# systemctl enable crond
Created symlink from /etc/systemd/system/multi-user.target.wants/crond.service to /usr/lib/systemd/system/crond.service.

systemctl start 例如启动crond服务
[[email protected] locales]# systemctl start crond

systemctl status 查看服务的运行状态,服务状态如下
[[email protected] locales]# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since 二 2018-07-17 15:58:15 CST; 2s ago 这里状态为active(running)
Main PID: 3962 (crond)
CGroup: /system.slice/crond.service
└─3962 /usr/sbin/crond -n

systemctl stop 停止一个服务,并查看它的状态信息
[[email protected] locales]# systemctl stop crond
[[email protected] locales]# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: inactive (dead) since 二 2018-07-17 15:59:47 CST; 9s ago 这里状态为inactive(dead)
Process: 3962 ExecStart=/usr/sbin/crond -n $CRONDARGS (code=exited, status=0/SUCCESS)
Main PID: 3962 (code=exited, status=0/SUCCESS)

systemctl restart 重启一个服务
[[email protected] locales]# systemctl restart crond

使用systemctl is-enabled 服务名 查看一个服务是否开机启动
[[email protected] locales]# systemctl is-enabled crond
enabled


-----

# unit介绍

在Centos6中chkconfig管理的服务会拥有几个运行级别的区分,而centos7中也有类似的启动级别区分,systemctl启动的脚本存放在/usr/lib/systemd/system/目录下,查看系统所有的unit

-----

[[email protected] locales]# ls /usr/lib/systemd/system
abrt-ccpp.service lvm2-lvmetad.service [email protected]
abrtd.service lvm2-lvmetad.socket sshd.socket
abrt-oops.service lvm2-lvmpolld.service suspend.target
abrt-pstoreoops.service lvm2-lvmpolld.socket svnserve.service
abrt-vmcore.service lvm2-monitor.service swap.target
abrt-xorg.service [email protected] sys-fs-fuse-connections.mount
arp-ethers.service machine.slice sysinit.target
auditd.service machines.target sysinit.target.wants


-----

unit中的级别
runlevel0   poweroff  关机
runlevel1    rescue   单用户救援
 ......234级别略
runlevel5   graphical  图形化
runlevel6  reboot       重启

-----

![](http://i2.51cto.com/images/blog/201807/17/fea79ae49d0aa1a688f218bf94eb356f.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

-----

systemd中的unit类型,我们常见的有以.service结尾的,是为服务提供启动停止管理的unit
service  系统服务
target  多个unit组成的组
device  硬件设备
mount  文件系统挂载点
automount  自动挂载点
path  文件或路径
scope  不是由systemd启动的外部进程
slice  进程组
snapshot systemd  快照
socket  进程间通信套接字
swap swap文件
timer  定时器

-----

几个unit的管理使用命令
systemctl list-units 列出所有正在运行的unit
systemctl list-units --all   列出所有的unit包括失败和不活跃的(inactive)
systemctl list-units --all --state=inactive    列出所有不活跃(inactive)service的 unit
systemctl list-units --type=service  列出所有正在运行的unit,状态为active
systemctl is-active  crond.service    查看某个服务是否为active

-----

# target管理
查看所有的target

[[email protected] 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

查看一个target下有哪些unit

[[email protected] system]# systemctl list-dependencies multi-user.target
multi-user.target
● ├─abrt-ccpp.service
● ├─abrt-oops.service
● ├─abrt-vmcore.service
● ├─abrt-xorg.service
● ├─abrtd.service
● ├─auditd.service
● ├─brandbot.path
● ├─crond.service

systemctl  get-default   查看默认的target
systemctl set-default multi-user.target   指定默认的target,例如指定图形界面的target启动级别
一个service属于一种类型的unit,多个unit组成一个target,target中包含多个service
查看service属于哪个target(查看install部分的内容),如sshd.service

[[email protected] 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=forking
PIDFile=/var/run/sshd.pid
EnvironmentFile=/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install] 从这部分查看属于哪个target,这里的.service中写入的配置是服务启动管理的内容
WantedBy=multi-user.target

原文地址:http://blog.51cto.com/8844414/2146012

时间: 2024-08-29 00:03:08

了解systemctl和chkconfig的服务管理工具的相关文章

Ubuntu 和 Redhat / Fedora 服务管理命令对比表(附Fedora16新的服务管理工具systemctl )

以 apache/httpd 服务作为例子 任务 Red Hat / Fedora Ubuntu Ubuntu (with sysv-rc-conf or sysvconfig) 立即启动/停止某服务 service httpd start invoke-rc.d apache start service apache start 启动时自动加载 chkconfig httpd on update-rc.d apache defaults sysv-rc-conf apache on 启动时不加

已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。

已禁用对分布式事务管理器(MSDTC)的网络访问.请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问. 此错误好像只有sql server2005才有,2008数据库以后版本就没有此错误了. 与基础事务管理器的通信失败. .net 代码里 写事务代码 如: using System.Transactions; using (TransactionScope ts = new TransactionScope()) { } ts.Complete(); DTC登陆账户为

Linux服务管理(Ubuntu服务管理工具sysv-rc-conf)(转)

Ubuntu运行级别 Linux系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不同,所要完成的工作和要达到的目的都不同,系统可以在这些运行级之间进行切换,以完成不同的工作. 运行级别(Runlevel)指的是Unix或者linux等类Unix操作系统下不同的运行模式. 运行级别通常分为7等,分别是从0到6,但如果必要的话也可以更多. 例如在大多数Linux操作系统下一共有如下6个典型的运行级别: 0 停机 1 单用户,Does not configure network

线上多服务管理工具实例剖析

公司线上对nginx.tomcat和jar包的java应用的服务管理脚本之前都是单独分离开的,这样子就造成了运维人员在跳板机上进行服务管理的时非常的不方便.特别是把这些服务管理框架纳入到自动化管理平台时,没有一个统一的服务管理接口去使用. 因此,在空的时候,我就将多个服务的管理脚本融合在了一起,将他做成一个工具,这样子就减少了服务管理的杂乱. 废话不说了,下面就是脚本内容,文章结尾我会简单介绍该脚本的思路. #!/bin/bash # # 本脚本用来对系统上的多服务进行管理操作 # 目前仅支持n

k8s原生微服务管理工具helm-v3的使用初探实践(1)

Helm-v3应用包管理器 3.1 为什么需要Helm?K8S上的应用对象,都是由特定的资源描述组成,包括deployment.service等.都保存各自文件中或者集中写到一个配置文件.然后kubectl apply –f 部署. 为什么使用helm?在k8s中,当我们去部署应用的时候,一般都是使用yaml文件去管理我们的应用的发布,比如像微服务,其中包括deployment,service,configmap,ingress,但是如果我们有上百个微服务的话,每次的修改涉及也都会比较多,感觉就

K8s原生微服务管理工具helm-v3的使用初探实践(2)

目录:根据微服务的发版需求进行对应用进行调试,使用chart的模版发布微服务1.基于dubbo微服务发布一个基于生产环境用到的helm模版模版地址:git clone [email protected]:zhaocheng172/helm-dubbo.git拉取请把你的公钥给我,不然拉不下来 3.6 Chart模板Helm最核心的就是模板,即模板化的K8S manifests文件.它本质上就是一个Go的template模板.Helm在Go template模板的基础上,还会增加很多东西.如一些自

systemctl 设置自定义nginx服务管理

1.建立服务文件 vim /usr/lib/systemd/system/nginx.service [Unit]Description=The nginx HTTP and reverse proxy serverAfter=syslog.target network.target remote-fs.target nss-lookup.target [Service]Type=forkingPIDFile=/usr/local/nginx/logs/nginx.pidExecStartPre

Linux服务管理(开启关闭防火墙)

1.firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用  : systemctl disable firewalld 开机启用  : systemctl enable firewalld 2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体. 启动一个服务:

任务计划crontab、服务管理(chkconfig、systemd)

任务计划 crontab计划任务文件任务计划文件路径/var/spool/cron/ cat /etc/crontab [[email protected] ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # For details see man 4 crontabs # Example of job definition: # .---------------- minut