跳至内容

Linux开机启动项管理

发布日期:
作者:
评论数:暂无评论

在 Linux 中,开机启动项的管理方式因发行版和使用的初始化系统(如 systemdSysVinit)不同,以下是常见的查看、添加和删除启动项的方法。你的系统如果是较新的 Linux 发行版(如 Ubuntu 20.04+、CentOS 8+、Debian 10+),大多数情况都应该使用 systemctl


1. 查看开机启动项

(1)使用 systemctl(适用于 systemd)

systemctl list-unit-files --type=service | grep enabled

这个命令会列出所有开机启动的服务(enabled 状态的服务)。
如果你想列出当前正在运行的服务,可以使用:

systemctl list-units --type=service --state=running

查看特定服务的状态:

systemctl status <服务名>

例如:

systemctl status nginx

(2)使用 chkconfig(适用于 SysVinit)

在一些较老的 Linux 发行版(如 CentOS 6)中,可以用 chkconfig 查看:

chkconfig --list

如果 chkconfig 命令不可用,可以安装:

yum install -y chkconfig

(3)检查 /etc/rc.local 文件

某些旧系统(或未完全迁移到 systemd 的系统)可能仍然使用 /etc/rc.local 来添加自启动项:

cat /etc/rc.local

如果文件存在且可执行,其中的命令会在开机时执行。


(4)检查 crontab 任务

有些进程可能通过 cron 定时任务在启动时运行:

crontab -l
cat /etc/crontab
ls /etc/cron.d/

2. 添加开机启动项

(1)使用 systemctl enable(适用于 systemd)

如果你想让某个服务开机自动启动:

sudo systemctl enable <服务名>

例如:

sudo systemctl enable nginx

如果要立即启动该服务:

sudo systemctl start nginx

(2)在 /etc/rc.local 添加启动命令

如果你的系统仍支持 /etc/rc.local,你可以编辑它:

sudo nano /etc/rc.local

exit 0 之前添加你的启动命令,例如:

/usr/bin/python3 /root/myscript.py &

然后确保文件可执行:

sudo chmod +x /etc/rc.local

(3)使用 crontab 添加自启动任务

如果你想在系统启动时运行某个脚本,可以使用 crontab

crontab -e

添加:

@reboot /root/myscript.sh

这样 /root/myscript.sh 就会在每次开机时运行。


3. 删除开机启动项

(1)使用 systemctl disable(适用于 systemd)

如果你想移除某个服务的开机启动:

sudo systemctl disable <服务名>

例如:

sudo systemctl disable nginx

如果要停止当前运行的服务:

sudo systemctl stop nginx

(2)删除 /etc/rc.local 中的启动命令

编辑 /etc/rc.local 并删除相关行:

sudo nano /etc/rc.local

然后保存退出。


(3)移除 crontab 启动项

查看 crontab 任务:

crontab -l

编辑 crontab

crontab -e

删除 @reboot 相关的行并保存。


(4)删除 /etc/init.d//etc/rc.d/ 里的脚本(适用于 SysVinit)

如果你的 Linux 发行版使用的是旧的 SysVinit,你可以删除 /etc/init.d/ 下的脚本:

sudo rm /etc/init.d/<脚本名>

然后更新:

sudo update-rc.d -f <脚本名> remove  # Debian/Ubuntu
sudo chkconfig --del <脚本名>        # CentOS

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注