최근에 내 아치 머신에 postgres를 설치하려고 했습니다. initdb
postgres 사용자로 명령을 실행할 수 있지만 실제로 서비스를 실행할 수는 없습니다. 데이터베이스를 실행하려고 할 때 터미널에 표시되는 내용은 다음과 같습니다.
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. 이는 터미널에 있을 수 있는 특별한 사용자 정의 환경을 실수로 상속받는 것을 방지합니다. 좋고 깨끗합니다.