Linux(Ubuntu/CentOS)配置开机自启动服务

systemd和systemctl的区别和联系
复制代码
systemd:是现代Linux系统中的初始化系统和服务管理器。它主要负责系统引导和进程管理,支持并行化启动服务,并提供高级的服务管理和依赖控制。
systemctl:是systemd的命令行工具,用于与systemd进行交互。它提供了一种便捷的方式来管理systemd所控制的服务。

综上所述,systemd是Linux系统中的初始化系统和服务管理器,而systemctl是其命令行工具。它们之间既存在区别又相互联系,共同构成了Linux系统中强大的系统和服务管理框架。
确定Linux
复制代码
如果不确定系统上使用的是哪种初始化系统:
1、查看系统是否有systemctl命令:
	列出当前正在运行的所有服务:systemctl list-units --type=service
	有就直接用这个。
2、如果没有systemctl,可以用命令行:ps 1 命令来查看PID为1的进程是什么。
	命令行:ps 1 // 这通常是系统的初始化进程,如systemd、init(SysVinit)或upstart(Upstart)
systemctl设置开机自启动服务

systemctl命令使得用户可以方便地启动、停止、重启、查看状态、启用或禁用系统服务。

命令行工具对应Linux版本说明

CentOS:CentOS 7及更高版本

Ubuntu:Ubuntu 15.04及以后的版本

列出当前正在运行的所有服务:systemctl list-units --type=service

检查服务的状态:sudo systemctl status 服务名.service

启动服务命令:sudo systemctl start 服务名.service

设置服务开机自启动:sudo systemctl enable 服务名.service // 服务将被添加到系统的启动项中,确保在系统启动时自动启动。

验证服务是否已被设置为开机自启动:sudo systemctl is-enabled 服务名.service // 如果返回enabled,则说明服务已设置为开机自启动。

init.d目录下创建启动脚本并配置开机自启动

update-rc.d命令在基于Debian和Ubuntu等Linux发行版中用于管理系统服务的启动和停止顺序。

1、进入init.d目录:cd /etc/init.d/

2、创建或编辑Shell启动脚本:

示例脚本(以myservice为例),保存为自己的服务名.sh:

复制代码
	#!/bin/sh
	# /etc/init.d/myservice
	# Provides: myservice
	# Required-Start: $remote_fs $syslog
	# Required-Stop: $remote_fs $syslog
	# Default-Start: 2 3 4 5
	# Default-Stop: 0 1 6
	# Short-Description: Start daemon at boot time
	# Description: Enable service provided by daemon.
	
	case "$1" in
	  start)
	    echo "Starting MyService..."
	    # 在这里添加启动服务的命令
	  stop)
	    echo "Stopping MyService..."
	    # 在这里添加停止服务的命令
	  *)
	    echo "Usage: /etc/init.d/myservice {start|stop}"
	    exit 1
	esac
	exit 0

3、赋予执行权限

复制代码
	sudo chmod +x /etc/init.d/myservice

4、使用update-rc.d配置开机自启动

复制代码
	命令行:sudo update-rc.d myservice defaults
	这将把myservice脚本添加到系统的默认运行级别(通常是2、3、4、5,对应多用户模式)的启动项中。

5、扩展 设置运行级别

复制代码
	如果您需要设置特定的启动和停止顺序,可以使用update-rc.d的-s和-f选项来调整。例如:
	sudo update-rc.d myservice start 90 2 3 4 5 . stop 10 0 1 6 .
	这将设置在运行级别2、3、4、5时启动myservice,启动顺序为90;在运行级别0、1、6时停止myservice,停止顺序为10。
	验证运行级别配置:
		通过检查/etc/rcX.d/目录(其中X是运行级别)中的链接来验证配置是否成功。
		这些链接应该指向/etc/init.d/myservice脚本。
相关推荐
广州浮点FLOATLIC2 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
BLUcoding3 小时前
接口服务公网超时排查记录:SecureRandom 阻塞问题分析与解决
java·linux·springboot·aes·securerandom
AIgorithmGEEK3 小时前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
Nil2083 小时前
leetcode 139单词拆分
linux·运维·服务器
Starry-sky(jing)3 小时前
BUG: unable to handle kernel paging request 完整排查:dmesg 四要素与三路定罪
linux·运维·服务器·内核·排障
mounter6253 小时前
从硬件互连到操作系统变革:CXL 技术演进与 Linux 内核工程挑战
linux·运维·服务器
xh didida4 小时前
Linux -- 基础IO
linux·服务器·开发语言·c++
zly35005 小时前
centos7 mount设备挂载 /dev/sda1/硬盘挂载
linux·运维·服务器
工业一体机老司机5 小时前
工业一体机选购后的系统部署:Ubuntu下Docker容器化运行与GPIO配置
linux·ubuntu·docker·人机交互
哎呦,帅小伙哦6 小时前
进程监控工具——htop
linux·运维·服务器