CentOS6.5(3) - 设置自己安装的程序开机自动启动
在 CentOS6.5 系统中,我们可能会安装一些自己编写的程序或者第三方程序,为了方便每次系统启动后这些程序能自动运行,就需要设置它们开机自动启动。本文将详细介绍几种常见的设置方法,帮助你轻松实现这一需求。
目录#
- 使用
chkconfig命令设置开机启动(适用于服务类型程序) - 通过
/etc/rc.d/rc.local文件设置开机启动(通用方法) - 使用
systemctl命令(CentOS6.5 部分情况也可使用) - 常见实践与最佳实践
- 示例用法
- 参考
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来设置在指定运行级别开机启动。比如要在运行级别3和5启动,执行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 初始化系统,但部分新安装的软件可能支持 systemd(systemctl 基于 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.local5.2 使用 chkconfig 方法(假设我们将脚本包装成了服务脚本 myapp 放在 /etc/init.d/ 目录下,并且脚本有正确的 chkconfig 注释)#
- 添加服务:
chkconfig --add myapp- 设置启动级别(假设在运行级别
3和5启动):
chkconfig --level 35 myapp on6. 参考#
- CentOS 官方文档
- 《Linux 系统管理技术手册》
通过以上几种方法,你可以根据自己程序的特点和系统环境,选择合适的方式设置程序开机自动启动,提高系统使用的便利性和自动化程度。希望本文能帮助你顺利完成相关配置。