GNU/Linux >> Linux の 問題 >  >> Linux

Systemd postgresql 起動スクリプト

ソースからインストールする場合、ソース インストールで動作する systemd ユニット ファイルを追加する必要があります。 RHEL の場合、Fedora のユニット ファイルは次のようになります:

/usr/lib/systemd/system/postgresql.service

[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking

User=postgres
Group=postgres

# Where to send early-startup messages from the server (before the logging
# options of postgresql.conf take effect)
# This is normally controlled by the global default set by systemd
# StandardOutput=syslog

# Disable OOM kill on the postmaster
OOMScoreAdjust=-1000
# ... but allow it still to be effective for child processes
# (note that these settings are ignored by Postgres releases before 9.5)
Environment=PG_OOM_ADJUST_FILE=/proc/self/oom_score_adj
Environment=PG_OOM_ADJUST_VALUE=0

# Maximum number of seconds pg_ctl will wait for postgres to start.  Note that
# PGSTARTTIMEOUT should be less than TimeoutSec value.
Environment=PGSTARTTIMEOUT=270

Environment=PGDATA=/usr/local/pgsql/data


ExecStart=/usr/local/pgsql/bin/pg_ctl start -D ${PGDATA} -s -w -t ${PGSTARTTIMEOUT}
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D ${PGDATA} -s -m fast
ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D ${PGDATA} -s

# Give a reasonable amount of time for the server to start up/shut down.
# Ideally, the timeout for starting PostgreSQL server should be handled more
# nicely by pg_ctl in ExecStart, so keep its timeout smaller than this value.
TimeoutSec=300

[Install]
WantedBy=multi-user.target

次に、起動時にサービスを有効にして、PostgreSQL サービスを開始します。

$ sudo systemctl daemon-reload # load the updated service file from disk
$ sudo systemctl enable postgresql
$ sudo systemctl start postgresql

# systemctl start postgresql.service

一部の環境では service <name> start が変換されます systemctl start <name>.service まで 、しかしそれに頼る必要はありません。


Linux
  1. Systemdのスタートアップスクリプトを書く方法は?

  2. Centos – Systemdは開始直後にサービスを終了しますか?

  3. Linux – Default.targetなしでSystemdを開始するにはどうすればよいですか?

  1. Linux – Fsckスクリプトの場所?

  2. SystemdサービスはNodejsを起動しませんか?

  3. 起動中にSystemctlサービスがタイムアウトしましたか?

  1. CentOS/RHEL 7 で systemd にカスタム スクリプトを追加する方法

  2. systemd 経由で Python スクリプトを実行すると、モジュールのロードに失敗する

  3. Node.js スクリプトが systemctl で開始できませんでした