On 3/25/26 3:48 AM, Matthias Apitz wrote:
Hello,
We use the following script as /etc/init.d/postgres on
SuSE Linux Enterprise, SLES 15 SP7, to start PostgreSQL 16.5 server:
$ tar tzf postgresql-16.5.tar.gz | grep start-scripts/linux
postgresql-16.5/contrib/start-scripts/linux
# cp postgresql-16.5/contrib/start-scripts/linux /etc/init.d/postgres
# head -10 /etc/init.d/postgres
#! /bin/sh
# chkconfig: 2345 98 02
# description: PostgreSQL RDBMS
# This is an example of a start/stop script for SysV-style init, such
# as is used on Linux systems. You should edit some of the variables
# and maybe the 'echo' commands.
#
# Place this file at /etc/init.d/postgresql (or
# ...
Together with systemd services this gives the following error:
# systemctl enable postgres.service
Synchronizing state of postgres.service with SysV service script with
/usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable postgres
error: malformated LSB header in postgres: missing LSB end marker, aborting.
The service file contains:
# cat /etc/systemd/system/postgres.service
[Unit]
Description=SunRise PostgreSQL server
After=systemd-user-sessions.service
[Service]
ExecStart=/etc/init.d/postgres start
ExecStop=/etc/init.d/postgres stop
TimeoutStartSec=infinity
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
When I enhance the script with this section between BEGIN / END
# cat /etc/init.d/postgres
#! /bin/sh
# chkconfig: 2345 98 02
# description: PostgreSQL RDBMS
### BEGIN INIT INFO
# Provides: postgresql
# Required-Start: $network $named
# Required-Stop:
# Default-Start: 3 5
# Default-Stop:
# Description:
### END INIT INFO
...
The error goes away:
# systemctl enable postgres.service
Synchronizing state of postgres.service with SysV service script with
/usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable postgres
ln -sf ../postgres /etc/init.d/rc3.d/S50postgres
ln -sf ../postgres /etc/init.d/rc5.d/S50postgres
Any comments on this?
From the contrib script:
"# Proper init scripts on Linux systems normally require setting lock
# and pid files under /var/run as well as reacting to network
# settings, so you should treat this with care.
"
From the start script that the PGDG Debian/Ubuntu packages use:
### BEGIN INIT INFO
# Provides: postgresql
# Required-Start: $local_fs $remote_fs $network $time
# Required-Stop: $local_fs $remote_fs $network $time
# Should-Start: $syslog
# Should-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: PostgreSQL RDBMS server
### END INIT INFO
[Continued]
Thanks
matthias
--
Adrian Klaver
[email protected]