Điểm:0

Tập lệnh shell Ubuntu để khởi động nhiều máy chủ Postgres

lá cờ ru

Tôi còn khá mới với Ubuntu và tôi đang viết một tập lệnh .sh để khởi động 2 máy chủ postgres. Tôi đã tắt yêu cầu pw cho sudo trong /etc/sudoers

đây là kịch bản của tôi cho đến nay và nó có thể không chính xác. kiểm tra.sh:

#!/bin/bash
sudo su postgres
postgres -D /usr/local/mydb1 -p <số cổng> &
postgres -D /usr/local/mydb2/data -p <số cổng khác> &

Kết quả tôi nhận được sau khi chạy tập lệnh:

shafin@shafin-VirtualBox:~/Desktop$ ./test.sh
postgres@shafin-VirtualBox:/home/shafin/Desktop$ 

Có vẻ như nó chỉ thực thi dòng đầu tiên của tập lệnh.

Có ai giúp đuợc không?

Cảm ơn, Shafin

Điểm:2
lá cờ it

Của bạn sudo su postgres lệnh bắt đầu một trình bao mới, bên dưới "postgres" userid. Trình bao mới này không đọc từ tệp tập lệnh, vì vậy nó không bao giờ nhìn thấy phần còn lại của tệp.

Một cách tốt hơn (có hiệu quả) là loại bỏ sudo su postgres lệnh và mở đầu hai dòng còn lại với sudo -u postgres. Đọc người đàn ông sudo sudoers.

Shafin M avatar
lá cờ ru
Vì vậy, tôi đã thử dòng này: `Sudo -u postgres -D /usr/local/capdb -p 8432 &` và câu trả lời tôi nhận được là thế này: `cách sử dụng: sudo -h | -K | -k | -V cách sử dụng: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user] cách sử dụng: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [chỉ huy] cách sử dụng: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p dấu nhắc] [-T timeout] [-u user] [VAR=value] [-i|-s] [] cách sử dụng: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p dấu nhắc] [-T timeout] [-u user] file ...`
Shafin M avatar
lá cờ ru
Có vẻ như nó đang tìm kiếm thêm đối số? Không chắc chắn những gì khác tôi phải vượt qua ở đây
lá cờ hr
@ShafinM `sudo -u postgres postgres -D /usr/local/capdb -p 8432 &` - `postgres` đầu tiên là đối số người dùng cho tùy chọn `sudo -u`; `postgres` thứ hai là lệnh
waltinator avatar
lá cờ it
Nhận xét được thiết kế để Hoa Kỳ đặt câu hỏi cho BẠN về Câu hỏi của bạn. Bạn nên [Chỉnh sửa] câu hỏi của mình để thêm thông tin. Bằng cách cập nhật Câu hỏi của bạn và sử dụng các nút định dạng, bạn cung cấp tất cả thông tin cho người đọc mới.Mọi người không cần phải đọc một loạt bình luận dài để hiểu toàn bộ câu chuyện.
Shafin M avatar
lá cờ ru
@steeldriver đã thử lệnh đó, bash trả lời bằng một lệnh không xác định 'postgres' . Tôi biết chắc rằng Postgres được thiết lập chính xác trên máy này vì tôi có thể khởi động từng máy chủ một
lá cờ hr
@ShafinM nó nằm ở đâu? hãy nhớ rằng `sudo` sử dụng `secure_path` của riêng nó - có thể khác với `PATH` của shell tương tác của bạn. Nếu nghi ngờ, hãy sử dụng đường dẫn tuyệt đối ex. `sudo -u postgres /path/to/postgres `
Điểm:0
lá cờ ru

Cảm ơn @waltinator và @steeldriver về phản hồi của bạn.

Tôi đã có thể tìm ra giải pháp bằng cách sử dụng cả hai đề xuất của bạn. Đây là tập lệnh được cập nhật của tôi trong trường hợp bất kỳ ai đang muốn làm điều gì đó tương tự:

#!/bin/bash

sudo -u postgres /usr/lib/postgresql/12/bin//postgres -D /usr/local/mydb1 -p 8432 &
sudo -u postgres /usr/lib/postgresql/12/bin//postgres -D /usr/local/mydb2/data -p 6432 &

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.