予想ファイルが実行ディレクトリにないため、postgresサービスを開始できません。

予想ファイルが実行ディレクトリにないため、postgresサービスを開始できません。

私は最近私のアーチマシンにpostgresをインストールしようとしました。initdbpostgresユーザーとしてコマンドを実行できますが、実際にサービスを実行することはできません。データベースを実行しようとしたときに端末に表示される内容は次のとおりです。

insomnia@the-void ~/p/lemmy (main)> su - postgres -c "pg_ctl -D /var/lib/postgres/data -l logfile start"
Password: 
waiting for server to start.... stopped waiting
pg_ctl: could not start server
Examine the log output.
insomnia@the-void ~/p/lemmy (main) [1]> cat logfile
2023-05-11 06:31:05.607 EDT [6545] LOG:  starting PostgreSQL 15.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 12.2.1 20230211, 64-bit
2023-05-11 06:31:05.607 EDT [6545] LOG:  listening on IPv6 address "::1", port 5432
2023-05-11 06:31:05.607 EDT [6545] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2023-05-11 06:31:05.609 EDT [6545] FATAL:  could not create lock file "/run/postgresql/.s.PGSQL.5432.lock": No such file or directory
2023-05-11 06:31:05.611 EDT [6545] LOG:  database system is shut down
2023-05-11 06:37:28.083 EDT [7218] LOG:  starting PostgreSQL 15.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 12.2.1 20230211, 64-bit
2023-05-11 06:37:28.083 EDT [7218] LOG:  listening on IPv6 address "::1", port 5432
2023-05-11 06:37:28.083 EDT [7218] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2023-05-11 06:37:28.085 EDT [7218] FATAL:  could not create lock file "/run/postgresql/.s.PGSQL.5432.lock": No such file or directory
2023-05-11 06:37:28.087 EDT [7218] LOG:  database system is shut down
2023-05-11 06:38:39.659 EDT [7363] LOG:  starting PostgreSQL 15.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 12.2.1 20230211, 64-bit
2023-05-11 06:38:39.660 EDT [7363] LOG:  listening on IPv6 address "::1", port 5432
2023-05-11 06:38:39.660 EDT [7363] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2023-05-11 06:38:39.662 EDT [7363] FATAL:  could not create lock file "/run/postgresql/.s.PGSQL.5432.lock": No such file or directory
2023-05-11 06:38:39.666 EDT [7363] LOG:  database system is shut down
2023-05-11 06:38:53.104 EDT [7430] LOG:  starting PostgreSQL 15.2 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 12.2.1 20230211, 64-bit
2023-05-11 06:38:53.105 EDT [7430] LOG:  listening on IPv6 address "::1", port 5432
2023-05-11 06:38:53.105 EDT [7430] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2023-05-11 06:38:53.106 EDT [7430] FATAL:  could not create lock file "/run/postgresql/.s.PGSQL.5432.lock": No such file or directory
2023-05-11 06:38:53.108 EDT [7430] LOG:  database system is shut down

実行中のディレクトリを確認しましたが、ログによると、そこにはpostgresに関する内容がないと示されています。

insomnia@the-void ~/p/lemmy (main)> ls -a /run
./       containerd/   dbus/             docker/       faillock/   log/    mount/           nvidia-xdriver-d8991f8f=  samba/  systemd/     udev/     utmp
../      credentials/  dmeventd-client|  docker.pid    initramfs/  lvm/    NetworkManager/  openvpn-client/           sddm/   tmpfiles.d/  udisks2/  xtables.lock
clamav/  cups/         dmeventd-server|  docker.sock=  lock/       media/  nscd/            openvpn-server/           sudo/   tpm2-tss/    user/
insomnia@the-void ~/p/lemmy (main)> ls -a /run | grep postgresql
insomnia@the-void ~/p/lemmy (main) [0|1]> 

予想されるディレクトリ/ファイルが/runにあることをどのように確認できますか?

答え1

あなたは罠に陥った!これアーチスウィキテキスト自体にはpg_ctl start。代わりに、次のように言います。

ついに、スタートそして〜できるようにするpostgresql.service

リンクされた単語は次のように言います。

システム単位制御

記事から一部のシステムデバイス(サービスなど)を起動、有効化、停止、または再起動するように招待した場合、これを行うための詳細な手順は表示されませんが、代わりに次のようなものが表示されます。

example.serviceを起動

これは、以下を実行する必要があることを意味します。

# systemctl start example.service

これシステムこの記事には、Arch Linuxのシステムデバイスとうまく対話するためのすべての詳細な手順が含まれています。

postgresqlを起動して有効にします。

systemctl enable postgresql
systemctl start postgresql

これはシステムサービス定義を使用します。私たちはこれがそれを生成する方法を知っていると推測できます/run/postgresql/

Archはsystemdを使用するので、postgresqlが直接起動することを保証します。PID 1。これは、端末に存在する可能性のある特別なカスタム環境を誤って継承するのを防ぎます。良くてきれいです。

関連情報