Skip to content

Cơ bản về Nguyễn Hồng Sơn

Sapiens

Đây là lần thứ hai mình đọc cuốn sách này, với một tâm thế khác hoàn toàn so với lần đầu. Một tâm thế đọc như là đang nghiên cứu một tài liệu khoa học, chứ không đơn thuần là đọc một cuốn sách nữa. Vì vậy, mình tốn nhiều thời gian hơn, cho cả việc đọc và viết những dòng nhìn lại nội dung này.

Tác giả cuốn sách là một nhà nghiên cứu lịch sử người Israel, hiện đang là giáo sư Sử học tại Đại học Hebew. Đoạn giới thiệu về ông trong sách bản tiếng Việt rất ngắn, mình đã tìm hiểu và đọc thêm trên wikipedia và website của ông. Có lẽ vì nhạy cảm, nên ấn bản Việt Nam đã không đề cập rằng ông là một người đồng tính, đã kết hôn với người đại diện và cũng là cộng sự của mình tại Canada. Thông tin trên website của ông chủ yếu là quảng bá sách và quỹ Sapienship của ông.

Cuốn sách viết công phu và tỉ mỉ, số lượng trích dẫn nhiều đáng kinh ngạc. Lượng tri thức cung cấp trong sách đồ sộ nhưng khá gần gũi và dễ hiểu, trải dài nhiều vấn đề: sự tiến hóa của con người từ loài vượn (theo thuyết tiến hóa tổng hợp), nông nghiệp và công nghiệp đã nâng tầm sức mạnh của con người trong thế giới vật chất ra sao, trật tự xã hội hình thành trên những ảo tưởng liên chủ quan như thế nào, chủ nghĩa tư bản, cộng sản, đế quốc đã hình thành và thay đổi thế giới bằng cách nào, Chúa hay đức Phật, hay một vị thần linh bất kỳ của Ấn Độ giáo hay các hiền triết Trung Hoa, Hy Lạp dạy những gì.

Tuy vậy, phải nhìn nhận rằng tác giả viết theo lối trung dung, dễ dàng tiếp thu nhưng cũng không thể hiện hoàn toàn quan điểm của ông. Có lẽ, quan điểm của ông chính là quan điểm của người làm Sử chính tắc, không dựa vào vài chục, vài trăm năm để đánh giá toàn bộ xã hội loài người, cũng như không dựa vào vài sự kiện để đánh giá một trường phái triết học, Nhà nước hay tôn giáo.

Trong quá trình đọc sách với tâm thái nghiên cứu, mình note và ghi chú lại ở nhiều trang sách. Trong quá trình viết bài này, mình lật mở lại từng ghi chú và viết về chúng. Mình đã bỏ qua một số note, bởi lúc đọc ngay dòng đó thì mình thấy nó khá hay. Nhưng khi viết reivew, mình thấy nó không còn hay như lúc đọc lần đầu; hoặc tương tự như người dịch, mình thấy nó quá nhạy cảm để đề cập.

Nguồn gốc mâu thuẫn dẫn đến xảy ra biểu tình lớn ở Israel

Trong bối cảnh những vấn đề phức tạp giữa hai nhà nước Israel và Palestine vẫn đang được thảo luận và giải quyết trên nghị trường Liên Hợp Quốc, thì Israel đang đứng trước bờ vực nội chiến với việc dân chúng biểu tình phản đối đề xuất cải cách tư pháp mới của tân Thủ tướng Netanyahu. Ông Netanyahu tuyên bố không nhượng bộ trước áp lực.

Liên minh cực hữu, dân tộc - tôn giáo của Thủ tướng Netanyahu đề xuất một cải cách mà thông qua đó, hạn chế quyền lực của tòa án tối cao, trao nhiều quyền hơn cho Chính phủ và Quốc hội (nơi mà liên minh của ông đang chiếm đa số). Các cải cách chủ yếu nhằm vào một số nội dung:

  1. Về sự lựa chọn các thẩm phán của tòa án tối cao

    • Hiện tại: Một hội đồng có 9 thành viên bao gồm: 3 người là đương nhiệm thẩm phán tối cao pháp viện; 2 người là đại diện của đoàn luật sư; 2 người là nghị sĩ Quốc hội (Quốc hội Israel có 120 ghế) và 2 người là Bộ trưởng. Việc lựa chọn Thẩm phán Tối cao pháp viện cần đa số phiếu tuyệt đối tức 7/9 phiếu.

    • Đề xuất mới: Một hội đồng gồm 11 thành viên bao gồm: Bộ trưởng Tư pháp là chủ tịch; 2 Bộ trưởng; 1 nghị sĩ quốc hội là chủ tịch ủy ban hiến pháp, pháp luật và tư pháp; 1 nghị sĩ quốc hội là chủ tịch ủy ban kiểm soát Nhà nước; 1 nghị sĩ quốc hội là Chủ tịch quốc hội; 1 thẩm phán là chủ tịch tối cao pháp viện; 2 người là đương nhiệm thẩm phán tối cao pháp viện; 2 public representatives cho bộ trưởng Tư pháp lựa chọn.

    • Như vậy, chính phủ (mà thông thường được thành lập bởi Đảng/Liên minh cầm quyền) có đa số phiếu tuyệt đối để bổ nhiệm các thẩm phán tối cao pháp viện. Hệ thống cũ không cho phép điều này.

  2. Phủ quyết luật của Quốc hội thông qua

    • Ở hiện tại, tối cao pháp viện của Israel có quyền phủ quyết một luật cơ bản do Quốc hội thông qua (Israel không có hiến pháp tối cao)

    • Đề xuất mới hạn chế quyền này, không trao cho tối cao pháp viện quyền được "review" các luật của quốc hội thông qua.

  3. Quyền của quốc hội

    • Hiện tại, quốc hội không thể đảo ngược quyết định của tối cao pháp viện

    • Đề xuất mới cho phép quốc hội, với chỉ đa số cơ bản (>1/2) phủ quyết quyết định của tối cao pháp viện.

  4. Quyền được lựa chọn cố vấn tư pháp cho bộ trưởng

    • Đề xuất mới cho phép các bộ trưởng tự lựa chọn cố vấn tư pháp cho họ (vốn hiện tại không thuộc quyền của bộ trưởng) đồng thời giảm quyền của cố vấn (từ bắt buộc nghe theo thành mang tính tham khảo).
  5. Quyền tư pháp đối với chính phủ

    • Đề xuất mới hạn chế phạm vi các quyết định hành chính của chính phủ phải bị xem xét bởi tối cao pháp viện, đồng thời ngăn cản tòa án xét xử các đơn kiện, kháng cáo đối với chính phủ.

Nhìn chung, đây là sự tranh đấu chính trị giữa các bên, một bên đòi hỏi sự tự do cho nhiều thành phần thiểu số ở một quốc gia phức tạp về sắc tộc, tôn giáo như Israel, một bên là cực hữu dân tộc chủ nghĩa - tôn giáo mong muốn một hệ thống phục vụ cho lợi ích của họ. Những thay đổi tư pháp này cho phép Quốc hội phủ quyết các rắc rối tư pháp về việc truy tố ông Netanyahu tội tham nhũng và nhận hối lộ, đồng thời cũng cho phép quốc hội thông qua luật miễn nghĩa vụ quân sự đối với những tín đồ Do Thái giáo chính thống cực đoan để họ nghiên cứu tôn giáo.

Tạo user và grant root permission trên linux

ShellScript này tạo một người dùng mới và thêm vào nhóm 'wheel'. Với khả năng nhập thông tin từ bàn phím như tên người dùng, mật khẩu và publickey, đơn giản hóa quá trình quản lý người dùng trên hệ thống Linux.

Full code

adduser.sh
# =========================================
# Date      : 2023-09-29 17:13:59
# Author    : Son Nguyen-Hong ([email protected])
# Link      : sonnh.net
# File      : adduser.sh
# =========================================

#!/bin/bash

USER='sonnh11' # Input your username here
PASSWD=''      # Input your password. If not, use random password
PUBLIC_KEY=$(<public_key)

# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
PLAIN='\033[0m'
PACKAGE_COMMAND=''
SECRET_FILE='secret.txt'

# check root
if [ $(/usr/bin/id -u) -ne 0 ]; then
    printf "${RED}Error: This script must be running as root${PLAIN}\n"
    exit 1
fi

OS_check() {
    if [ -f /etc/os-release ]; then
        . /etc/os-release
        case $NAME in
        "Ubuntu")
            OS_FAMILY=1 #define a variable for OS family
            PACKAGE_COMMAND="apt-get"
            ;;
        "CentOS Linux" | "Red Hat Enterprise Linux" | "Amazon Linux")
            OS_FAMILY=2
            PACKAGE_COMMAND="yum"
            ;;
        *)
            printf "${YELLOW}Error: OS not supported${PLAIN} \n"
            exit 1
            ;;
        esac
    else
        printf "${RED}Error:  Cannot check OS information${PLAIN}\n"
        exit 1
    fi

    if [ ! -e '/usr/bin/openssl' ]; then
        $PACKAGE_COMMAND -y install openssl
    fi

    # install ssh
    if [ ! -e '/usr/bin/ssh' ]; then
        $PACKAGE_COMMAND -y install openssh-server openssh-clients >/dev/null 2>&1 
        systemctl start sshd >/dev/null 2>&1 
        systemctl enable sshd >/dev/null 2>&1
    fi
}

generate_secret() {
    echo "adduser.sh help?
    ${GREEN}sudo ./adduser.sh username public_key password
    ${PLAIN}or if you fill username in scirpt and provide public key in file template
    ${GREEN} sudo ./adduser.sh ${PLAIN}
    "
    if [ -z "$1" ] && [ -z "$2" ] && [ -z "$3" ]; then
        USER=$1
        PUBLIC_KEY=$2
        PASSWD=$3
    elif [ -z "$USER" ]; then
        echo "${RED}Error: You not yet provide username${PLAIN}"
        shift 63
    fi

    if [ -z "$PASSWD" ]; then
        echo "${YELLOW}Warning: You use auto generate password${PLAIN}"
        PASSWD="$(
            echo $RANDOM | md5sum | head -c 20
            echo
        )"
        echo "Your password is:" "$PASSWD" >> $SECRET_FILE
    fi

    if [ -z "$PUBLIC_KEY" ]; then
        echo "${YELLOW}Warning: You use auto generate public key${PLAIN}"
        ssh-keygen -q -t rsa -N '' -f ~/secret <<<y >/dev/null 2>&1
        PUBLIC_KEY=$(cat ~/secret.pub)
        echo "Your secret key is below.\n" "$($cat ~/secret)" >> $SECRET_FILE
    fi
    rm -rf ~/secret secret.txt

}

addnewUser() {
    if [ ! -d "/home/$USER" ]; then
        if [[ $OS_FAMILY -eq 1 ]]; then #ubuntu
            adduser --disabled-password --gecos "" $USER
            echo $USER:$PASSWD | chpasswd
        else #centos and ret hat
            adduser -p $(openssl passwd -1 $PASSWD) $USER
        fi
    else
        printf "${RED}Error: ${PLAIN} Add user fail!\n"
    fi

    echo "$USER  ALL=(ALL) NOPASSWD:ALL" | sudo tee "/etc/sudoers.d/$USER"
    usermod -aG wheel "$USER"

    mkdir /home/$USER/.ssh
    chmod 700 /home/$USER/.ssh
    chown $USER:$USER /home/$USER/.ssh
    echo "$PUBLIC_KEY" >/home/$USER/.ssh/authorized_keys
    chmod 700 /home/$USER/.ssh/authorized_keys
    chown $USER:$USER /home/$USER/.ssh/authorized_keys

}

main() {
    OS_check
    generate_secret
    addnewUser

}

main

Explanation

Variable

  • USER: Biến chứa tên người dùng, mặc định là 'sonnh11'.

  • PASSWD: Biến chứa mật khẩu, cho phép nhập từ bàn phím hoặc nhúng vào code. Nếu không, tự tạo một chuỗi mật khẩu ngẫy nhiên

  • PUBLIC_KEY: Biến chứa public key, được đọc từ tệp public_key. Có thể nhập từ bàn phím để ghi đè nội dung trong file. Nếu cả nội dung trong file và nhập từ bàn phím đều trống, tự generate một public key

Màu Sắc:

  • RED, GREEN, YELLOW, PLAIN: Biến chứa mã màu để làm cho in ra màn hình dễ đọc.

Các Bước Kiểm Tra:

  • Kiểm tra xem script được chạy với quyền root không.

  • Kiểm tra hệ điều hành để xác định gia đình hệ điều hành (Ubuntu hoặc CentOS/RHEL) và thiết lập các biến liên quan.

  • Kiểm Tra và Cài Đặt Gói:

    • Kiểm tra xem openssl đã được cài đặt hay chưa. Nếu không, cài đặt nó.
    • Kiểm tra xem ssh đã được cài đặt hay chưa. Nếu không, cài đặt và khởi động dịch vụ SSH.

Các hàm sử dụng

Hàm generate_secret:
  • Hướng dẫn sử dụng script và các tham số cần truyền.

  • Nếu các tham số không được cung cấp, sử dụng giá trị mặc định và tạo ra mật khẩu và public key nếu chúng không được cung cấp.

Hàm addnewUser:
  • Tạo người dùng mới nếu thư mục người dùng không tồn tại.

  • Thêm người dùng vào nhóm wheel và cấp quyền sudo.

  • Tạo thư mục .ssh và đặt quyền truy cập public key.

Hàm main:
  • Gọi các hàm theo thứ tự để thực hiện các bước chính của chương trình.

Lưu ý:

  • Script kiểm tra quyền root để đảm bảo an toàn khi thực hiện các thay đổi hệ thống quan trọng.

  • Tương tác với người dùng để nhập thông tin cần thiết, như mật khẩu và khóa công khai.

  • Sử dụng biến màu sắc để cải thiện trải nghiệm người dùng khi hiển thị thông điệp.

Hướng dẫn cài đặt địa chỉ ảo bằng Keepalived trên linux

Khởi tạo máy ảo

  • Giống như các bài lab khác, ta sử dụng Vagrant để tạo các máy ảo phục vụ cho bài lab. Dưới đây là Vagrantfile cho bài lab này
    Vagrant.configure("2") do |config|
        config.ssh.insert_key = false
        config.vm.define "keepalived-1" do |cf1|
          cf1.vm.box = "centos/7"
          cf1.vm.hostname ="keepalived-1"
          cf1.vm.network :private_network, ip: "10.0.0.10"
          cf1.vm.provider "virtualbox" do |vb|
              vb.memory = "2000"
          end
        end
    
        config.ssh.insert_key = false
        config.vm.define "keepalived-2" do |cf1|
          cf1.vm.box = "centos/7"
          cf1.vm.hostname ="keepalived-2"
          cf1.vm.network :private_network, ip: "10.0.0.15"
          cf1.vm.provider "virtualbox" do |vb|
              vb.memory = "2000"
          end
        end
    
    end
    
  • Run vagrant và ssh vào máy ảo
    vagrant up
    

Cài đặt các package cần thiết để build

  • Cài đặt kernel
    yum -y install kernel-headers kernel-devel curl gcc openssl-devel libnl3-devel net-snmp-devel wget
    

Cài đặt keepalive

  • Download keepalive
    cd /opt
    wget https://www.keepalived.org/software/keepalived-2.2.8.tar.gz --no-check-certificate
    tar -xvzf keepalived-2.2.8.tar.gz
    ln -s keepalived-2.2.8 keepalived
    cd keepalived
    ./configure --prefix=/usr/local/keepalived
    make && make install
    
  • Bạn có thể build đồng thời trên 2 VM hoặc build trên 1 VM rồi sync sang VM còn lại. Nếu sử dụng phương án 2, chú ý rằng các package vẫn phải được cài đặt đầy đủ.

Cấu hình keepalive

  • Tạo file cấu hình
    • Trên MASTER: 10.0.0.10
      /usr/local/keepalived/etc/keepalived.conf
      vrrp_instance KEEPALIVED_VIP {
          state MASTER # or "BACKUP" on backup
          mcast_src_ip 10.0.0.10
          interface eth1
          priority 101 # 101 on master, 100 on backup
          virtual_router_id 101
          advert_int 1
          use_vmac
          #smtp_alert # Activate SMTP notifications
      
          authentication {
              auth_type PASS
              auth_pass keepalivedlab_pass
          }
      
          virtual_ipaddress {
              10.0.0.100/24 dev eth0
          }
      }
      
    • Trên SLAVE 10.0.0.15
      /usr/local/keepalived/etc/keepalived.conf
      vrrp_instance KEEPALIVED_VIP {
          state BACKUP # or "BACKUP" on backup
          mcast_src_ip 10.0.0.15
          interface eth1
          priority 100 # 101 on master, 100 on backup
          virtual_router_id 102
          advert_int 1
          use_vmac
          #smtp_alert # Activate SMTP notifications
      
          authentication {
              auth_type PASS
              auth_pass keepalivedlab_pass
          }
      
          virtual_ipaddress {
              10.0.0.100/24 dev eth0
          }
      }
      
  • Tạo file binary để quản lý keepalive
    /opt/init.d/keepalived
    #!/bin/sh
    #
    # Startup script for the Keepalived daemon
    #
    # processname: keepalived
    # pidfile: /var/run/keepalived.pid
    # config: /usr/local/keepalived/etc/keepalived.conf
    # description: Start and stop Keepalived
    
    # Global definitions
    PID_FILE="/var/run/keepalived.pid"
    BIN_DIR="/usr/local/keepalived/sbin"
    CONFIG_DIR="/usr/local/keepalived/etc"
    RETVAL=0
    # source function library
    . /etc/init.d/functions
    
    start() {
        echo -n "Starting Keepalived for LVS: "
        daemon $BIN_DIR/keepalived -f $CONFIG_DIR/keepalived.conf -D --log-facility 5
        RETVAL=$?
            echo
            [ $RETVAL -eq 0 ] && touch /var/lock/subsys/keepalived
            return $RETVAL
    }
    
    stop() {
        echo -n "Shutting down Keepalived for LVS: "
        killproc keepalived
        RETVAL=0
            echo
            [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/keepalived
            return $RETVAL
    }
    
    reload() {
        echo -n "Reloading Keepalived config: "
        killproc keepalived -1
        RETVAL=$?
            echo
            return $RETVAL
    }
    
    # See how we were called.
    case "$1" in
      start)
            start
            ;;
      stop)
            stop
            ;;
      restart)
            stop
            start
            ;;
      reload)
            reload
            ;;
      status)
            status keepalived
            ;;
      condrestart)
            [ -f /var/lock/subsys/keepalived ] && $0 restart || :
            ;;
      *)
        echo "Usage: $0 {start|stop|restart|reload|condrestart|status}"
        exit 1
    esac
    
    exit 0
    ~        
    
  • Start keepalive
    chmod +x /opt/init.d/keepalived
    /opt/init.d/keepalived start
    

Build postgreSQL from source

Khởi tạo máy ảo

  • Giống như các bài lab khác, ta sử dụng Vagrant để tạo các máy ảo phục vụ cho bài lab. Dưới đây là Vagrantfile cho bài lab này
    Vagrant.configure("2") do |config|
        config.ssh.insert_key = false
        config.vm.define "latex-test" do |cf1|
          cf1.vm.box = "centos/7"
          cf1.vm.hostname ="sonnh-lab"
          cf1.vm.network :private_network, ip: "192.168.1.10"
          cf1.vm.provider "virtualbox" do |vb|
              vb.memory = "2000"
          end
        end
    
    end
    
  • Run vagrant và ssh vào máy ảo
    vagrant up
    

Cài đặt các package cần thiết để build

  • Install epel
    yum -y install epel-release
    
  • Install util
    yum -y install yum-utils
    
  • Install package
    yum install gcc make systemd-devel zlib-devel readline-devel openssl-devel libldb-devel python3-devel wget openldap openldap-devel -y
    
  • Install development tool
    yum groupinstall 'Development Tools' -y
    
  • Install bison
    wget http://ftp.gnu.org/gnu/bison/bison-3.8.1.tar.gz
    tar -xvzf bison-3.8.1.tar.gz
    cd bison-3.8.1
    ./configure --prefix=/opt/bison
    make && make install 
    

Cài đặt postgreSQL

  • Download postgreSQL source
    cd ~
    wget https://ftp.postgresql.org/pub/source/v15.2/postgresql-15.2.tar.gz --no-check-certificate
    tar -xvzf postgresql-15.2.tar.gz
    cd postgresql-15.2
    ./configure --prefix=/opt/pgsql-15 --with-openssl --with-python --with-ldap
    make && make install
    cd contrib
    make && make install
    
  • Tạo và grant quyền cho user postgres
    useradd -M -s /bin/bash postgres
    usermod -aG wheel postgres
    echo 'export PATH=$PATH:/opt/pgsql-15/bin' > /etc/profile.d/postgres.sh
    
  • Tạo mật khẩu và data dir cho database
    passwd postgres
    mkdir /mnt/pgsql-15/data/ -p
    chown -R postgres:postgres /mnt/pgsql-15/data/
    
  • Tạo database mới
    echo "5nKJkT2qBjuGU3SsV7t" >>  /mnt/pgsql-15/.password
    su postgres
    /opt/pgsql-15/bin/initdb -D /mnt/pgsql-15/data/ --pwfile /mnt/pgsql-15/.password
    
  • Sửa các config ở /mnt/pgsql-15/data/postgresql.conf/mnt/pgsql-15/data/pg_hba.conf nếu cần thiết.
    /mnt/pgsql-15/data/postgresql.conf
    # Path to the host-based authentication file
    hba_file = '/mnt/pgsql-15/data/pg_hba.conf'
    # Path to the ident configuration file
    ident_file = '/mnt/pgsql-15/data/pg_ident.conf'
    # IP addresses to listen on for incoming connections
    listen_addresses = 'localhost'
    # Port on which the PostgreSQL server listens for connections
    port = 5432
    # Maximum number of concurrent connections allowed
    max_connections = 100
    # Memory dedicated to PostgreSQL for caching data
    shared_buffers = 128MB
    # Limit on simultaneously prepared transactions
    max_prepared_transactions = 0  # zero disables the feature
    # Write-ahead log level (minimal, replica, or logical)
    wal_level = replica
    # Full page writes of non-critical updates
    wal_log_hints = on
    # Archiving settings
    archive_mode = on
    archive_command = 'test ! -f /mnt/pgsql-15/data/archive/%f && cp %p /mnt/pgsql-15/data/%f'
    # Maximum number of WAL sender processes
    max_wal_senders = 10
    # Number of log file segments retained for WAL
    wal_keep_segments = 8
    # Maximum number of replication slots
    max_replication_slots = 10
    # Collect timestamp of transaction commit
    track_commit_timestamp = off
    # Allow/disallow queries during recovery
    hot_standby = on
    # Timezone settings
    log_timezone = 'Asia/Ho_Chi_Minh'
    timezone = 'Asia/Ho_Chi_Minh'
    # Cluster identifier for process titles
    cluster_name = 'My Postgres Cluster'
    # Locale settings
    datestyle = 'iso, dmy'
    lc_messages = 'en_US.UTF-8'
    lc_monetary = 'vi_VN'
    lc_numeric = 'vi_VN'
    lc_time = 'vi_VN'
    # Maximum number of locks per transaction
    max_locks_per_transaction = 64
    
    /mnt/pgsql-15/data/pg_hba.conf
    # TYPE  DATABASE        USER            ADDRESS                 METHOD
    # "local" is for Unix domain socket connections only
    local   all             all                                     trust
    # IPv4 local connections:
    host    all             all             127.0.0.1/32            trust
    # IPv6 local connections:
    host    all             all             ::1/128                 trust
    # Allow replication connections from localhost, by a user with the
    # replication privilege.
    local   replication     all                                     trust
    host    replication     all             127.0.0.1/32            trust
    host    replication     all             ::1/128                 trust
    # Allow replication connections with specific authentication methods
    host replication replicator 127.0.0.1/32 md5
    # Allow connections from any IP address with md5 authentication
    host all all 0.0.0.0/0 md5
    
  • Tạo và phân quyền file log
    sudo -i
    touch /var/log/postgres.log
    chown postgres: /var/log/postgres.log
    
  • Tạo file init để quản lý postgres
    mkdir /opt/init.d
    cat << "EOT" > /opt/init.d/postgres_5432
    #!/bin/sh
    
    BIN_DIR="/opt/pgsql-15/bin"
    DATA_DIR="/mnt/pgsql-15/data/"
    LOG_DIR="/var/log"
    PORTGRESS_PORT="5432"
    
    case "$1" in
        start)
            $BIN_DIR/pg_ctl -D $DATA_DIR -l $LOG_DIR/postgres.log start
            ;;
        stop)
            $BIN_DIR/pg_ctl -D $DATA_DIR stop
            ;;
        restart)
            $BIN_DIR/pg_ctl -D $DATA_DIR reload
            ;;
        status)
            $BIN_DIR/pg_ctl -D $DATA_DIR status
            ;;
        *)
            echo "Please use start, stop, restart, status as first argument"
            ;;
    esac
    
    EOT
    chmod 755 -R /opt/init.d/
    
  • Start server postgreSQL
    su postgres -c '/opt/init.d/postgres_5432 start'