CentOS6.5(3) - 设置自己安装的程序开机自动启动

在 CentOS6.5 系统中,我们可能会安装一些自己编写的程序或者第三方程序,为了方便每次系统启动后这些程序能自动运行,就需要设置它们开机自动启动。本文将详细介绍几种常见的设置方法,帮助你轻松实现这一需求。

目录#

  1. 使用 chkconfig 命令设置开机启动(适用于服务类型程序)
  2. 通过 /etc/rc.d/rc.local 文件设置开机启动(通用方法)
  3. 使用 systemctl 命令(CentOS6.5 部分情况也可使用)
  4. 常见实践与最佳实践
  5. 示例用法
  6. 参考

1. 使用 chkconfig 命令设置开机启动(适用于服务类型程序)#

1.1 前提条件#

程序需要按照 Linux 服务的规范进行编写和安装,即要有对应的服务脚本(一般放在 /etc/init.d/ 目录下),并且脚本中包含符合 chkconfig 要求的注释信息(例如 # chkconfig: 2345 80 90,其中 2345 表示运行级别,80 是启动顺序,90 是关闭顺序)。

1.2 操作步骤#

  • 添加服务:如果你的程序服务脚本已经放在 /etc/init.d/ 目录下,使用命令 chkconfig --add <服务名> 来添加服务。例如,假设服务名是 myprogram,则执行 chkconfig --add myprogram
  • 设置启动级别:使用 chkconfig --level <运行级别> <服务名> on 来设置在指定运行级别开机启动。比如要在运行级别 35 启动,执行 chkconfig --level 35 myprogram on。你可以通过 chkconfig --list 查看所有服务的启动设置情况。

2. 通过 /etc/rc.d/rc.local 文件设置开机启动(通用方法)#

2.1 原理#

/etc/rc.d/rc.local 文件在系统启动过程中,会在很多服务启动之后执行其中的命令。我们可以将程序的启动命令添加到该文件中。

2.2 操作步骤#

  • 编辑文件:使用命令 vi /etc/rc.d/rc.local(如果没有权限,可使用 sudo vi /etc/rc.d/rc.local)。
  • 添加命令:在文件末尾添加程序的启动命令。例如,如果你的程序是一个二进制可执行文件,路径为 /usr/local/myprogram/myprogram,则添加 #!/bin/sh(如果文件开头没有的话),然后添加 /usr/local/myprogram/myprogram && 表示在后台运行)。
  • 赋予执行权限:执行 chmod +x /etc/rc.d/rc.local,确保文件有执行权限。

3. 使用 systemctl 命令(CentOS6.5 部分情况也可使用)#

3.1 说明#

CentOS6.5 虽然默认使用 SysVinit 初始化系统,但部分新安装的软件可能支持 systemdsystemctl 基于 systemd)。如果你的程序对应的服务支持 systemd 管理,可尝试此方法。

3.2 操作步骤#

  • 创建服务单元文件:在 /etc/systemd/system/ 目录下创建一个 .service 文件(例如 myprogram.service)。文件内容示例如下:
[Unit]
Description=My Program
After=network.target
 
[Service]
Type=simple
ExecStart=/usr/local/myprogram/myprogram
Restart=always
 
[Install]
WantedBy=multi-user.target

其中,Description 是服务描述,After 表示在 network.target 之后启动(可根据程序需求调整),ExecStart 是程序启动命令,Restart 设置为 always 表示程序异常退出后自动重启,WantedBy 表示在多用户模式下启动。

  • 重载配置:执行 systemctl daemon-reload 使新创建的服务单元文件生效。
  • 设置开机启动:执行 systemctl enable myprogram.service 来设置开机启动。

4. 常见实践与最佳实践#

4.1 日志记录#

  • 无论哪种方法,建议在程序启动命令中添加日志记录选项(如果程序支持),方便后续排查问题。例如 myprogram --logfile /var/log/myprogram.log
  • 对于通过 /etc/rc.d/rc.local 启动的程序,可以在启动命令前添加 >> /var/log/rc.local.log 2>&1,将启动过程中的输出重定向到日志文件。

4.2 权限管理#

  • 确保程序运行所需的文件、目录权限正确。如果程序需要读写某些特定目录,要设置好相应的用户和组权限。
  • 对于通过 rc.local 启动的程序,注意 rc.local 文件本身的权限(一般为 755 比较合适)。

4.3 测试#

  • 在设置开机启动后,最好进行一次系统重启测试,检查程序是否正常启动。可以通过查看日志、检查进程(ps -ef | grep myprogram)等方式验证。

5. 示例用法#

假设我们有一个自己编写的简单 Python 脚本 myapp.py,放在 /home/user/myapp/ 目录下,内容是打印一些信息并持续运行(为了演示方便,实际可根据需求编写)。

5.1 使用 /etc/rc.d/rc.local 方法#

  • 编辑 rc.local
vi /etc/rc.d/rc.local

添加内容(假设 Python 解释器路径为 /usr/bin/python):

#!/bin/sh
/usr/bin/python /home/user/myapp/myapp.py &
  • 赋予权限:
chmod +x /etc/rc.d/rc.local

5.2 使用 chkconfig 方法(假设我们将脚本包装成了服务脚本 myapp 放在 /etc/init.d/ 目录下,并且脚本有正确的 chkconfig 注释)#

  • 添加服务:
chkconfig --add myapp
  • 设置启动级别(假设在运行级别 35 启动):
chkconfig --level 35 myapp on

6. 参考#

通过以上几种方法,你可以根据自己程序的特点和系统环境,选择合适的方式设置程序开机自动启动,提高系统使用的便利性和自动化程度。希望本文能帮助你顺利完成相关配置。