Centos7.x设置postgresql开机启动

本文详细介绍了如何在Centos7.x环境下,通过源码编译安装PostgreSQL,并设置其为开机启动服务的过程。包括复制启动脚本至/etc/init.d目录,修改脚本参数如pg主目录和Pgdata目录,赋予脚本执行权限,以及使用chkconfig命令进行服务注册。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Centos7.x设置postgresql开机启动
用之前脚本方法始终出现问题.这里用了第二中方法:

前言
如果通过二进制安装包的形式安装pg的话就不存在本文记录的问题,因为通过yum命令安装好之后会在/usr/lib/systemd/system目录下生成一个系统服务(postgresql-x.service),但是如果通过源码编译安装pg的话则需要自己处理,要么通过systemd去自定义一个服务,要么可以通过chkconfig命令执行一个启动脚本,本篇blog我们选择第二种方案。
设置开机启动
依照上面的思路,首先要做的第一步就是找到pg的启动脚本示例,在pg的安装目录下的contrib/start-scripts的linux文件,将它拷贝一份到/etc/init.d目录下并重命名为postgresql:
(根据自己的目录修改)

cp /usr/local/postgresql/postgresql-9.5.5/contrib/start-scripts/linux /etc/init.d/postgresql
接下来修改脚本中的参数项,如下图(主要修改如下内容):图片在Word中有


prefix=pg主目录
PGDATA=" Pg data目录"

 
 
然后为所有用户添加改脚本的可执行权限:chmod a+x /etc/init.d/postgresql

最后通过chkconfig命令将该脚本注册为开机启动即可 chkconfig --add postgresql
设置开机启动
chkconfig postgresql on
备注:
启动服务:service postgresql start
停止服务:service postgresql stop
重启服务:service postgresql reload

查看进程  :ps -ef|grep postgres

<think>根据用户需求,用户希望在CentOS 7系统中配置一个shell脚本实现开机启动。根据引用内容,CentOS 7使用systemd作为初始化系统,因此我们可以通过创建systemd服务单元文件来实现。 步骤: 1. 准备一个shell脚本,并确保它具有可执行权限。 2. 创建一个systemd服务单元文件(以.service结尾),放在/etc/systemd/system/目录下。 3.服务单元文件中配置脚本的启动信息。 4. 启用该服务,使其在开机时自动启动。 具体操作如下: 第一步:编写shell脚本,并赋予可执行权限 假设我们的脚本路径为`/usr/local/bin/myscript.sh`,使用以下命令赋予可执行权限: ```bash chmod +x /usr/local/bin/myscript.sh ``` 第二步:创建systemd服务文件 在`/etc/systemd/system/`目录下创建一个服务文件,例如`myscript.service`,使用文本编辑器(如vi)创建并编辑: ```bash sudo vi /etc/systemd/system/myscript.service ``` 第三步:在服务文件中写入以下内容(根据引用[2]和引用[3]的示例): ```ini [Unit] Description=My Shell Script # 服务的描述 After=network.target # 表示在网络服务启动之后启动 [Service] Type=simple # 服务启动类型 ExecStart=/usr/local/bin/myscript.sh # 这里替换为你的脚本路径 [Install] WantedBy=multi-user.target # 表示在系统多用户模式下启动 ``` 第四步:保存并退出编辑器,然后重新加载systemd配置,使新的服务文件生效: ```bash sudo systemctl daemon-reload ``` 第五步:启用服务,使其开机启动: ```bash sudo systemctl enable myscript.service ``` 第六步:如果需要立即启动服务(而不重启系统),可以使用: ```bash sudo systemctl start myscript.service ``` 验证服务状态: ```bash sudo systemctl status myscript.service ``` 注意事项: 1. 确保脚本中的路径是绝对路径,且脚本中涉及的命令也使用绝对路径,以避免环境变量问题。 2. 如果脚本需要长时间运行,确保脚本不会在后台退出(如果是后台服务,需要持续运行)。 3. 如果脚本需要特定用户运行,可以在[Service]部分添加`User=用户名`。 通过以上步骤,就可以实现在CentOS 7设置shell脚本开机启动。 引用说明: [^1]: 在Linux、CentOS7设置shell脚本开机启动服务。 [^2]: centos设置 sh脚本开机启动。 [^3]: 蓝易云 - 在Linux、CentOS7设置shell脚本开机启动服务。 §§相关问题§§ 1. 如何查看systemd服务的日志以排查脚本启动问题? 2. 如果脚本需要以特定用户身份运行,应该如何配置systemd服务? 3. 如何设置脚本在系统启动后延迟一段时间再执行? 4. 如何禁用或删除已设置开机启动服务?</think>### CentOS 7 设置 Shell 脚本开机启动方法 在 CentOS 7 中,可以通过创建 **Systemd 服务单元**来实现 shell 脚本的开机启动。以下是详细步骤: --- #### **步骤 1:准备 Shell 脚本** 1. 创建脚本文件(如 `/opt/myscript.sh`)并添加可执行权限: ```bash sudo vi /opt/myscript.sh # 编辑脚本 sudo chmod +x /opt/myscript.sh # 添加可执行权限 ``` 2. 脚本示例(测试用): ```bash #!/bin/bash echo "脚本已启动 $(date)" >> /var/log/myscript.log # 在此处添加您的实际业务逻辑 ``` --- #### **步骤 2:创建 Systemd 服务文件** 在 `/etc/systemd/system/` 目录下创建服务文件(如 `myscript.service`): ```bash sudo vi /etc/systemd/system/myscript.service ``` 文件内容如下(根据实际路径修改): ```ini [Unit] Description=自定义开机启动脚本 # 服务描述 After=network.target # 在网络就绪后启动 [Service] Type=simple # 服务类型 ExecStart=/opt/myscript.sh # 脚本绝对路径 Restart=on-failure # 失败时自动重启 User=root # 运行用户(可选) [Install] WantedBy=multi-user.target # 多用户模式启用 ``` --- #### **步骤 3:启用自启动服务** 1. 重新加载 Systemd 配置: ```bash sudo systemctl daemon-reload ``` 2. 启用开机启动: ```bash sudo systemctl enable myscript.service ``` ✅ 成功提示:`Created symlink /etc/systemd/system/multi-user.target.wants/myscript.service → /etc/systemd/system/myscript.service` --- #### **步骤 4:验证操作** - **手动启动测试**: ```bash sudo systemctl start myscript.service sudo systemctl status myscript.service # 检查状态 ``` - **查看日志**: ```bash journalctl -u myscript.service # 检查服务日志 cat /var/log/myscript.log # 查看脚本输出 ``` - **重启验证**: ```bash sudo reboot systemctl status myscript.service # 重启后检查服务状态 ``` --- #### **注意事项** 1. **脚本路径**:必须使用**绝对路径**(如 `/opt/myscript.sh`) 2. **权限问题**: - 脚本需有可执行权限(`chmod +x`) - 涉及文件操作时注意用户权限(建议通过 `User=` 指定运行用户) 3. **依赖顺序**: - 若需在特定服务启动(如数据库),在 `[Unit]` 添加 `After=postgresql.service` 4. **调试技巧**: ```bash systemctl status myscript.service # 查看实时状态 journalctl -xe -u myscript.service # 查看详细日志 ``` > 引用说明:此方法基于 CentOS 7 的 Systemd 机制实现,通过创建服务单元文件控制启动顺序和依赖关系[^1][^2][^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值