スキップしてメイン コンテンツに移動

CentOS7.0のsystemd用postgresql制御ファイル


CentOS7.0からsystemdに変わったことで起動スクリプトを今までとは違う記述をしないといけなくなった。サービス制御ファイルを作らないといけない。
PostgreSQLをソースからインストールした最に今まで用意されていたinit.d以下にコピーするスクリプトが使えないので、いろいろ参考にしながら書いたのでメモっとく。

追記(2019/10/1)
久しぶりに見返したらなんか違うと思ったので修正
1./usr/lib/systemd/system/配下にあるファイルを編集してはいけない。
2./etc/systemd/system/配下にファイルを作るないしはコピーして編集する。
3.Unitファイルの変更をsystemdに通知する。
# systemctl daemon-reload


それぞれの項目の説明はしないけどw
自分の環境に合わせて記述してある。
Timeoutの数値とかは適時変更。

# /lib/systemd/system/postgresql.service
[Unit]
Description=PostgreSQL database server
After=network.target

[Service]
Type=forking
User=postgres
Group=postgres
Environment=PGPORT=5432
Environment=PGDATA=/usr/local/pgsql/data
# StandardOutput=syslog
OOMScoreAdjust=-1000

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

TimeoutSec=300

[Install]
WantedBy=multi-user.target


# systemctl enable postgresql
ln -s '/usr/lib/systemd/system/postgresql.service' '/etc/systemd/system/multi-user.target.wants/postgresql.service'

# systemctl start postgresql
# systemctl status postgresql
postgresql.service - PostgreSQL database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled)
   Active: active (running) since 金 2014-10-31 16:15:28 JST; 6s ago
  Process: 7881 ExecStart=/usr/local/pgsql/bin/pg_ctl start -D ${PGDATA} -s -o -p ${PGPORT} -w -t 300 (code=exited, status=0/SUCCESS)
 Main PID: 7884 (postgres)
   CGroup: /system.slice/postgresql.service
           ├─7884 /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data -p 5432
           ├─7886 postgres: checkpointer process
           ├─7887 postgres: writer process
           ├─7888 postgres: wal writer process
           ├─7889 postgres: autovacuum launcher process
           └─7890 postgres: stats collector process

PIDFileとか指定してないけど出来てるな・・・

multi-user.targetは、runlevel3相当だそうで。
UnitのAfterはnetworkの後ということで順番だね。
initdよりは楽という感じだね。

Typeはforkingじゃなくて、別なの推奨ってどっかに書いてあったけどどこだかわからなくなったのでそのまま。でも、他のもforkingだしな。

追記
Type=forking はメインプロセスの追跡にPIDファイルが必要になることから、systemdのサービス設定ではType=ForkingよりType=simple,Type=notifyの利用が推奨される。


参考
Linux - Systemd メモ書き - Qiita

コメント

このブログの人気の投稿

DNSampにやられたようだ

以前からときどきルータのCPU使用率が98%の状態で高負荷が続くことがあった。 アクセス数が多い為とも思っていたのだが今までルータが悲鳴をあげることはなかった。 問題の切り分けが難しく、何が原因なのかわからなかったが原因をつきとめることができた。 DNSのDDoS攻撃だったようだ。いわゆるDNSampというやつで数年前から猛威をふるっているやつです。 しかし、DNSampは、オープンリゾルバなDNSに対して小さなDNS要求パケットを送ってその何倍ものサイズのパケットを生成させるからDNSamp(アンプつまり増幅)といわれるわけなのだが、DNSサーバがオープンリゾルバになっていなければ大丈夫だと思っていたし、さらにファイヤーウォールでフィルタかけたり制限したりとやっておいたにもかかわらずだったのだが、実はそれだけではすまないということだった。 ログみてもRefusedしているのにぃ・・・ 使用しているルータはRTX1200でヤマハのサイトに オープンリゾルバー(Open Resolver)に対する注意喚起について のページがあったので対策することにした。 これは、ルータ自体がDNSの機能を持っている場合の対処だったのでオフにした。 いろいろ調べてるうちに QoSをかけるとか出てくるのでやってはみた。帯域制限とかであるが。 しかし、変わらない。というか効いてない。 ヤマハのルータの場合、Dynamic Class Controlというのがあってそれを使えみたいなことがよく出てくる。 そこでそれも設定してみた。だが、効かない。 根本的なところで間違っているような気がしたのだ。 設定したのは、LAN2(WAN)側だったのだが、それをLAN1(LAN)側にかけたらうまくいった。 普通に考えてppに対してDCCかけるんじゃないのかと思ったのだがどうもこのファームウェアでは、サポートされていないらしい。つまり、入り口のところで制限することはできないということらしい。 でも、これはこれで一度中に入ったものを処理するわけだからそれなりに負荷がかかるような気もするのだけど、とりあえず20%から30%くらいで落ち着いている。 最近だとRTX1210という機種が出ている、これはCPUがPowerPCになっていてRTX1200のMIPS 300M

SABLE エックリアの影【ゲーム日記】

SABLEというオープンワールドのアドベンチャーゲームで2021年9月にSteamでリリースされてから最近日本語対応されたのでやっています。 その中で初期のクエストに「エックリアの影」というのがあったのですがなかなかクリアできなかったところ終盤で再度挑戦したら解決したのでその部分だけ解説したいと思います。 つまりネタバレですのでご注意ください。 本当は最初からVLOGにしたかったのですが途中から録画したので部分的に公開したいと思います。 公式サイト SABLE — SHEDWORKS クエストは、マズという男が世話をしている子供の一人が水を盗もうとして捕まって収監されているのを助けるのが目的。助けるには「影のマスク」を被って牢獄前にいる衛兵を脅して牢から出す。「影のマスク」は町の門にある「影のしるし」を探せばたどり着けるのだが探せとしか言われておらずその後どうするのかを説く必要がある。 門には2種類の印があり一つはマスクの場所、一つはマスク自体の印でマスクが見つかった後に繋がるものである。 まずは、門の側面にしるされたものがその先にも同じものがあるのでたどっていく。すると壺があるのでその中にマスクが入っている。 手に入れたらマズのところに行き、夜になるのを待ってマスクを付けてマズに再度話しかけるとイベント発生して助けにいく。助けた後は再度マズのところにいくのだが牢の近くの町の壁に門にしるされたもう一つのしるしと同じものがあるのでそこに行くとバイクのパーツが買える。ただし、夜でないとそれは出てこないようである。

MR.ROBOTシーズン1に出てくるastuとastsuコマンド

たまたまアマゾンプライムで見られたので1話を見てみたのだが ミスターロボットってタイトルから想像してたのと違って 若きプログラマー、エリオット。昼はサイバーセキュリティ技術者として働き、夜はハッカーとして正義を守る。そんなエリオットに謎のハッカー集団のリーダーが参加を求めてくる。目的は、エリオットが仕事で守る大企業の壊滅だ。 という内容だ。細かい内容を知りたければ観てみることをおすすめする。 このドラマの中で出てくるコンピュータ用語は専門的で、知らない人が観てもわからないのではないかと思うほどである。 攻撃されているサーバに対処している場面などで ルートキットやDDoS攻撃、DNSの再起動、GNOME、KDEとかなどの言葉がいろいろ出てくるし、 端末の画面は、Linuxのターミナルでコマンド打ってたり表示されてたり状況がわかったりと内容的にはかなり本格的でその言葉を理解出来る人には面白いと思う。 ただ、主人公がハッキングしているのはただののぞき趣味じゃねーかと思うところはあるのだけど。 そこで出てくるコマンドで気になるものを見つけた。 しきりにastuとかastsuというコマンドが出てくる場面がある。データセンターがある場所に行って攻撃に対処しているところで出てくるのだが astsuでポート開いてたり、ifconfigしてたり astuでlsしてたりrmしてたりとまるでsudoのように使っている。 で、これなんだろと思って調べてみたらどうも独自のコマンドのようである。 このセキュリティ会社の名前がAllSafeという名前、つまり AllSafe Toolkit Super Userの頭文字を取ってastsuなのではないかということらしい。 astuはなんだろうね。 AllSafe Toolkit Userなだけかな。 このあたりのLinuxのコマンドラインスクリーンも面白いので見入ってしまった。 まだ、1話しか観ていないのだがどうもこれ以降こういった場面はさほどでないようで7話あたりから展開が変わってくるようなことがレビューとかに書かれていた。 主人公のラミ・マレックは、PS4の「Until Dawn・惨劇の山荘」に出ているらしい そのゲーム買ってもっているのに、まだやってないから知らなかったw