Linux开机启动项管理
发布日期:
作者: 西木
评论数:暂无评论
在 Linux 中,开机启动项的管理方式因发行版和使用的初始化系统(如 systemd
或 SysVinit
)不同,以下是常见的查看、添加和删除启动项的方法。你的系统如果是较新的 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