Linux如何设置服务开机自启 systemctl enable配置方法

在 Linux 中使用 systemctl activate 将服务配置为在启动时自动启动...非常简单。
但你必须一步一步来。

首先确认服务有@Service文件。
一般在这两个地方: /usr/lib/systemd/系统/ 或 /etc/systemd/system/
使用命令检查: 吹 systemctl 文件设备列表 | grep 服务名称
例如查看Nginx: 吹 systemctl 文件设备列表 | grep nginx
如果找到,检查状态: 吹 status 服务名称 systemctl
如果状态为启用,则表示已设置。
如果禁用,则必须手动启用。

启动命令为: 吹 sudo systemctl activate 服务名
例如,打开Nginx: 吹 sudo systemctl activate nginx
如果您忘记了服务名称,只需使用: 吹 systemctl list-unit-files
但是,请注意某些服务名称不同。
例如,某些 Apache 系统称为 httpd。

如果您想关闭计算机并自动启动: 吹 sudo systemctl 禁用服务名称
暂时启动服务(启动时不自动启动): 吹 sudo systemctl 启动服务名称
修改.service文件后,必须重新加载配置: 吹 sudo systemctl 守护进程重新加载
有时设置不起作用,需要确认服务本身是否可以启动: 吹 sudo systemctl start service name
如果没有启动,请首先排除服务故障,然后将其配置为启动时自动启动。

不同Linux系统上的服务名称可能不同。
例如,一些 Apache 称为 httpd,另一些称为 apache2 这取决于你自己的系统。

修改.service文件后,不运行daemon-reload是没有用的。

systemctl activate 实际上创建了一个指向 /etc/systemd/system/multi-user.target.wants/ 目录的符号链接。
例如,当您打开Nginx时,将在此目录中创建一个符号链接。

此方法适用于CentOS7 、Ubuntu1 6 .04 、Debian9 等系统。

例如MySQL服务: 吹 systemctl 文件设备列表 | grep mysqld
确认有mysqld服务。

重启后自动启动: 吹 sudo systemctl 激活 mysqld
最后看一下状态: 吹 systemctl status mysqld
如果输出中启用,则表示已配置。

如何使linux开机自动运行一条命令

说白了,让Linux在启动时自动执行命令的方法主要有3 种。
Systemd是现在使用最广泛的。
较旧的系统使用 rc.local,用户级任务使用 cron。

扩展一下,systemd 现在是默认系统配置。
去年我们领导了云服务器项目。
配置mycommand.service后,机器重启后1 0秒内自动执行命令。
无论在 ExecStart 字段中输入什么命令,它都会被执行。
使用起来非常简单。
还有一点需要注意的是systemctl daemon-reload是关键的一步。
如果新的配置服务没有加载,则根本无法识别。
这对于很多人来说都是一个陷阱。
还有另一个重要的细节。
Systemd 支持启动时自动启动,但不支持秒启动。
默认延迟约为 3 0 秒。
如果需要秒级启动,则需要更改配置。

一开始我以为crontab的@reboot会起作用,但后来我意识到这是错误的。
只有当用户登录时才会激活,挂载硬盘等系统级操作根本不起作用。
等等,还有一件事。
在许多系统上不再推荐使用 rc.local,特别是 CentOS 7 及更高版本。
Systemd兼容性差,容易出问题。

建议您按系统版本选择:新机器使用systemd,旧机器尝试rc.local,用户脚本使用cron。
但为什么需要启动并运行命令呢?这应该再次思考。