systemd配置文件及管理方法详解(转载)

©著作权归作者所有:来自51CTO博客作者大飞侠大虾的原创作品,如需转载,请注明出处,否则将追究法律责任:https://blog.51cto.com/arm2012/1963238

一、systemd文件夹配置文件夹:

systemd 配置文件存在于以下三个文件夹中:

  • /etc/systemd/system:存放系统启动的默认级别及启动的unit的软连接,优先级最高。

  • /run/systemd/system:系统执行过程中产生的服务脚本,优先级次之。

  • /usr/lib/systemd/system:存放系统上所有的启动文件。优先级最低


unit分类:

  • unit的定义文件可以根据其后缀名称识别其定义的类型,可以使用systemctl -t help 查看。
#l	.servicre定义了系统服务的启动

#l	.target  定义了系统启动的级别标签,systemd 没有运行级别的概念,创建标签只是为了兼容老版本。

#l	.socket 定义了进程通信用到的套接字,套接字与进程是分离的

#l	.device 定义了系统启动时内核识别的文件,systemd提供了设备的管理功能,/dev 下的设备由/etc/udev/下的配置文件与.device共同定制

#l	.mount 定义了系统的文件系统的挂载点

#l	.snapshop 系统快照

#l	.swap 用于标识swap设备

#l	.automount 文件系统的自动挂载点

#l	.path用于定义文件系统中的一个文件或目录使用。常用于文件系统发生变化时,延迟激活服务。

文件通常由3段组成:

[Unit]

[unit的类型:service target socket]

[install]

[Unit] :不属于第二个标签的定义都放在这里,或存放不属于unit类型的定义,描述信息,依赖的unit

#	Description:描述信息,此文本显示在systemctl status命令的输出中

#	After:表明需要依赖的服务,作用决定启动顺序(定义单元启动的顺序。只有在after中指定的单元激活后,该单元才会启动。与require不同,After不会显式激活指定单位。Before选项具有与After相反的功能。)

#	Before:表明被依赖的服务(其他服务需要这个服务启动)

#	Requires:依赖到的其他unit ,强依赖,即依赖的unit启动失败。该unit不启动。

#	Wants:依赖到的其他unit,弱依赖,即依赖的unit 启动失败。该unit继续启动

#	Conflicts:定义冲突关系,配置负依赖关系,与require相反。

[Unit 类型] :

[Service]#	Type:启动时关系的定义,

    simple:exec启动的进程就是主进程。
    		=>	官方解析:默认值。由ExecStart启动的进程是该服务的主进程

    forking :exec 启动的进程生成的其中一个子进程成为主进程,启动完成后,旧的主进程会退出。
    		=>	官方解析:由ExecStart启动的进程生成一个子进程,该子进程成为服务的主进程。父进程在启动完成后退出。

    ontshot:启动下一个进程前主进程退出。
    		=>	官方解析:这种类型类似于simple,但是进程会在启动后续单元之前退出

    dbus:
    		=>	官方解析:这种类型类似于simple,但是后续单元只有在主进程获得D-Bus名称后才会启动

    notify:
    		=>	官方解析:这种类型类似于simple,但是后续单元只有在通过sd_notify()函数发送通知消息后才会启动
    ldle:
    		=>	官方解析:与simple类似,服务二进制文件的实际执行被延迟到所有作业完成,这避免了状态输出与服务的shell输出混合。



#	PIDFile=/var/run/sshd.pid

#	EnvironmentFile 需要使用到的变量的定义文件

#	ExecStart= 启动 unit需要执行的命令

#	ExecStartpre:

#	ExecStartpost:

#	ExecStop=停止unit需要执行的命令

#	Restart:

#	ExecReload=/bin/kill -HUP $MAINPID

#	KillMode=process

#	Restart=on-failure

#	RestartSec=42s

[install]:服务启动或禁用时的一些选项

Alias:

RequlredBy: 被那些unit所依赖,

WanteBy:被那些unit所依赖

注:修改了的unit文件 需要重载。systemctl daemon-reload

二、centos 7 程序管理工具:

centos 7 的程序管理基本上都是由工具systemctl完成,systemctl的控制命令是固定不变的。非systemctl启动的服务systemctl无法进行管理。systemd 兼容init文件夹下的启动脚本。

systemctl命令的服务管理的使用:

管理服务通过的service的unit文件实现的。管理unit是通过配置文件实现的(针对服务的unit文件,只有service的配置文件才提供功能)

# systemctl 参数 name.service
	服务管理参数说明:
		start:		启动服务
		stop:		停止服务
		restart:	重启服务
		status:	查看状态

	条件重启参数说明:
		try-restart:即服务之前是启动的则进行重启,如果服务没有启动则不进行操作
		reload-or-restart:首先进行重载,如果重载不成功则进行重启
		reload-or-try-restart:重载或条件式重启,上两个的结合

	设置服务是否可以被用户设置开机启动状态参数说明:
		unmask:取消禁止。
		mask:禁止。设置服务是否可以被用户设置开机启动状态			

	查看服务的当前激活状态参数说明:	
		is-active:	服务已经启动命令的状态返回值为0 命令未启动命令的状态返回值为非0

查看所有已经激活的服务:

-t 指定显示的unit类型。

--all 显示更加详细的信息列表。

-a 等价 --all

# systemctl list-units

# systemctl list-units -t service

# systemctl list-units -t service -a

查看所有服务:

# systemctl list-units  -a

查看所有服务状态:

# systemctl list-unit-files

-a 、--all : 查看所有服务的状态 

-t 、--type :指定需要查看的unit类型

loaded :配置文件已经加载,载入内存

active(running):一次或多次持续处理的运行

  active(exited):成功完成一次性的配置

  active(waiting):运行中,等待一个事件

  inactive:不运行

  enabled:开机启动

  disabled:开机不启动

  static:开机不启动,但可被另一个启用的服务激活

用来列出该服务在哪些运行级别下启用和禁用:

ls /etc/systemd/system/*.wants/sshd.service

systemctl list-unit-files --type target --all

设置服务开机不启动:

# systemctl disable 服务名称unit

查看服务是否开机自启:

# systemctl is-enabled name.service

查看服务的依赖关系:

# systemctl list-dependencies name.service

# systemctl list-depebdencies

重载服务:

# systemctl daemon-reload

杀掉进程:

# systemctl kill 进程名

三、systemctl命令的系统运行级别的使用:

老版本的sysv以及upstart已经被替换为systemd,但centos7中同样可以能使用init命令切换级别,而且centos7中并无运行级别的概念,centos老版本中的运行级别也不过就是一个被定义死的对象。

centos7 为了兼容老版本定义了与老版本 runlevel{0…6}相对应的target后缀的unit。与启动级别对应的target类型的unit为真正的unit的软连接。

系统需要运行的unit由软连接文件存放在/etc/systemd/system文件夹下。代表运行状态的target可以相互包含,如5模式的target,包含3模式的target与一些其他unit,或者说5模式依赖3模式,启动5模式需要先启动3模式。

systemd的思想是层层包含的关系,5依赖3 ,如果3模式下的服务没有启动,在5模式下同样不会启动。

SysV 运行级别与 systemd 目标的比较:

运行级别目标单位描述
0runlevel0.target
poweroff.target
关闭并关闭系统电源。
1runlevel1.target
rescue.target
设置救援外壳。单用户
2runlevel2.target
multi-user.target
设置一个非图形化多用户系统。
3runlevel3.target
multi-user.target
设置一个非图形化多用户系统。
4runlevel4.target
multi-user.target
设置一个非图形化多用户系统。
5runlevel5.target
graphical.target
建立一个图形多用户系统。
6runlevel6.target
reboot.target
关闭并重新启动系统
#l [root@CentOS7.0~]#ll `locate  runlevel0.target`

lrwxrwxrwx. 1 root root 15 322 21:57 /usr/lib/systemd/system/runlevel0.target -> poweroff.target

使用systemctl命令切换级别:

systemctl isolate name.target

注:只有/lib/systemd/system/*.target文件中AllowIsolate=yes 才能切换

使用systemctl 命令查看级别:

# systemctl list-units –t target

--all 查看所有的 target

使用systemctl 对默认的运行级别进行设定

# systemctl get-default 					=>	获取当前的运行级别

# systemctl set-default name.target  		=>	设置当前的运行级别

切换至紧急救援模式

# systemctl rescue  	=>	加载驱动

# systemctl emergency  	=>	不会加载驱动

其他命令:

关机: systemctl halt, systemctl poweroff

重启: systemctl reboot

挂起: systemctl suspend

快照\休眠: systemctl hibernate

休眠并挂起:systemctl hybrid-sleep
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: systemd是Linux系统的一种系统和服务管理器,它的配置文件是用来配置系统服务的。下面是一些基本的配置方法: 1. 创建一个新的systemd服务配置文件。一般来说,这些文件都放在/etc/systemd/system目录中。文件名通常以.service为后缀。 2. 编辑配置文件配置文件中包含一些键值对,用来描述服务的各种属性。下面是一些常见的键: - Description:用来描述服务的作用。 - ExecStart:用来指定服务启动时要运行的命令。 - ExecStop:用来指定服务停止时要运行的命令。 - Restart:用来指定服务在某些情况下应该重启。 3. 启用并启动服务。使用systemctl命令可以启用并启动服务。例如,要启用并启动一个名为myservice.service的服务,可以使用如下命令: ``` systemctl enable myservice.service systemctl start myservice.service ``` 4. 查看服务状态。使用systemctl命令可以查看服务的状态。例如,要查看名为myservice.service的服务的状态,可以使用如下命令: ``` systemctl status myservice.service ``` 希望这些信息能帮到您! ### 回答2: Systemd是一个用于启动、管理和控制Linux系统服务的系统和服务管理器。要配置systemd,您可以按照以下步骤操作: 1. 找到要配置的服务的unit文件:Systemd配置文件通常位于`/lib/systemd/system/`或`/etc/systemd/system/`目录中。您可以通过其中一个目录来查找特定服务的unit文件。 2. 打开unit文件进行编辑:使用文本编辑器打开找到的unit文件。这些文件的扩展名为`.service`,例如`nginx.service`。确保您以root用户身份打开文件,因为对文件进行更改可能需要root权限。 3. 编辑unit文件中的配置选项:在unit文件中,您可以找到各种配置选项,例如服务的描述、执行路径、依赖关系等。根据您的需求,修改这些选项以满足您的配置要求。 4. 保存并退出文件:在对unit文件进行编辑后,保存并关闭文件。 5. 重新加载systemd守护程序:使用以下命令重新加载systemd以应用更改: ``` sudo systemctl daemon-reload ``` 6. 启动或重新启动服务:一旦完成配置更改并重新加载systemd,您可以使用以下命令启动或重新启动服务: ``` sudo systemctl start <service_name> ``` 请注意,`<service_name>`是您要启动的服务的名称。 以上是配置systemd的基本步骤。您可以重复这些步骤来配置其他系统服务。确保在更改配置文件之前备份文件,并谨慎进行更改,以免影响系统的稳定性和功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值