如何在linux系统中设置开机自动启动 (linux设置开机自动启动)

如何在Linux系统中设置开机自动启动

Linux系统是一个开源的操作系统,因其稳定、安全以及灵活的特性,在各个领域都被广泛应用。在Linux系统中,我们可以通过设置开机自动启动来方便地管理我们开机需要运行的程序或服务。本文将详细介绍如何在Linux系统中设置开机自动启动。

一、使用systemd启动器

systemd是Linux系统中较新的启动器,它用于管理系统各个方面的服务。在Linux系统的大部分发行版中,采用systemd作为默认的启动器。下面介绍如何使用systemd设置开机自动启动服务或程序。

1. 将需要开机自动启动的服务或程序设置为服务

在Linux中,我们可以使用systemd将需要开机自动启动的服务或程序设置为服务。服务的优点是方便管理、控制、启动和关闭。下面以开机自动启动Nginx为例进行演示:

“`

1. 在/etc/systemd/system/目录下创建nginx.service文件;

2. 编辑nginx.service文件,输入以下内容:

[Unit]

Description=The NGINX HTTP server

After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

PIDFile=/run/nginx.pid

ExecStartPre=/usr/in/nginx -t

ExecStart=/usr/in/nginx

ExecReload=/bin/kill -s HUP $MNPID

ExecStop=/bin/kill -s TERM $MNPID

[Install]

WantedBy=multi-user.target

“`

通过上面的代码,我们可以看到Nginx服务的各个配置。启动方式为forking,PID文件为/run/nginx.pid,服务启动前会执行nginx -t测试配置,服务启动时会执行/usr/in/nginx命令,重启服务时会执行/bin/kill -s HUP $MNPID命令,停止服务时会执行/bin/kill -s TERM $MNPID命令。

3. 运行以下命令启动nginx.service服务:

sudo systemctl start nginx.service

4. 使用以下命令检查服务是否已经启动:

sudo systemctl status nginx.service

如果服务已经启动,则会打印出Nginx服务的状态信息。

5. 使用以下命令将服务设置为开机自动启动:

sudo systemctl enable nginx.service

2. 使用rc.local脚本启动程序

rc.local是Linux系统中常用的脚本文件之一,它可以在系统启动时自动执行。在rc.local脚本中,我们可以设置需要在系统启动时运行的命令或程序。下面介绍如何使用rc.local脚本启动程序。

1. 使用以下命令打开rc.local文件:

sudo nano /etc/rc.local

2. 在rc.local文件中添加需要开机自动启动的程序命令。例如,启动OpenVPN时,我们可以添加以下命令:

sudo openvpn –config /etc/openvpn/client.ovpn

在上述代码中,我们需要指定OpenVPN客户端的配置文件路径。如果我们希望启动其他程序,只需要将对应的程序命令添加到rc.local文件中即可。

3. 使用以下命令保存rc.local文件并退出:

Ctrl + X,按Y键,再按Enter键

4. 运行以下命令将rc.local文件设置为可执行文件:

sudo chmod +x /etc/rc.local

这样,我们就可以在Linux系统重启后自动执行rc.local文件中设置的命令或程序。

二、使用systemd-timer定时器

除了使用systemd启动器和rc.local脚本设置开机自动启动程序,我们还可以使用systemd-timer定时器来定时启动程序。下面介绍如何使用systemd-timer定时器进行设置。

1. 创建需要定时启动的服务或程序

在Linux系统中,我们可以使用systemd的timer来定时启动服务或程序。下面以每天自动备份MySQL数据库为例进行演示:

我们需要创建一个名为backup.timer的定时器配置文件,确保其启动截止时间是下一天早上。使用以下命令创建文件:

sudo nano /etc/systemd/system/backup.timer

编辑文件,加入以下代码:

“`

[Unit]

Description=Back up database

[Timer]

OnCalendar=*-*-* 5:30:00

Unit=backup.service

[Install]

WantedBy=timers.target

“`

在上述代码中,我们配置了计划每天早上5:30自动执行数据库备份。backup.service表示在定时器触发时启动的服务。

2. 创建需要启动的服务

创建名为backup.service的文件,文件内容如下:

“`

[Unit]

Description=Dly backup of MySQL database

[Service]

Type=oneshot

ExecStart=/bin/bash -c “/usr/bin/mysqldump -u root -pPASSWORD database > /var/backups/$(date +%Y-%m-%d)-backup.sql”

[Install]

WantedBy=multi-user.target

“`

文件中ExecStart中mysqldump命令的部分可以根据各自的需要自行修改。

3. 使用以下命令启动服务并确认启动:

sudo systemctl start backup.service

sudo systemctl status backup.service

4. 使用以下命令启动定时器并确认启动:

sudo systemctl start backup.timer

sudo systemctl status backup.timer

5. 使用以下命令将定时器设置为开机自动启动:

sudo systemctl enable backup.timer

三、使用init.d脚本

在Linux系统中,我们也可以使用init.d脚本设置开机自动启动。在使用init.d脚本时,我们需要将脚本存储在/etc/init.d/目录下。下面介绍如何使用init.d脚本设置开机自动启动。

1. 创建需要启动的服务的init.d脚本

下面以启动一个名为application_server的服务为例进行演示。我们需要创建一个init.d脚本,我们可以复制其他已经存在的init.d脚本进行修改。下面是一个模板脚本:

“`

#!/bin/sh

# chkconfig: 2345 99 01

# description: application_server

start(){

echo “Starting application_server”

/usr/bin/application_server

}

stop(){

echo “Stopping application_server”

killall application_server

}

case “$1” in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

*)

echo “Usage: /etc/init.d/application_server {start|stop|restart}”

exit 1

;;

esac

exit 0

“`

在该脚本中,我们需要替换/usr/bin/application_server为我们需要启动的命令或程序的路径。

2. 将脚本文件复制到/etc/init.d/目录下,并设置脚本的权限

在完成上面的操作后,我们需要将脚本文件复制到/etc/init.d/目录下,并设置脚本的权限。使用以下命令进行复制和权限设置:

sudo cp /path/to/application_server /etc/init.d/application_server

sudo chmod +x /etc/init.d/application_server

3. 使用以下命令启动服务:

sudo service application_server start

4. 使用以下命令将服务设置为开机自动启动:

sudo chkconfig –level 2345 application_server on

结束语

通过上面的介绍,我们可以看到,在Linux系统中设置开机自动启动的方法有多种。使用systemd启动器、rc.local脚本、systemd-timer定时器以及init.d脚本都是常见的方法。根据需要选择适合的方法进行设置即可。


数据运维技术 » 如何在linux系统中设置开机自动启动 (linux设置开机自动启动)