def config_linux(p_comp, p_systemsvc, p_S, p_K, p_svc_user, p_start, p_start_log, p_stop, p_reload, p_status="", is_pg=True, p_env=None): apg_home = os.getenv("APG_HOME") if util.is_systemd(): sys_svc_file = os.path.join(util.get_systemd_dir(), p_systemsvc + ".service") else: sys_svc_file = os.path.join("/etc/init.d", p_systemsvc) print(p_comp + " config autostart " + sys_svc_file) if not util.is_systemd(): svcfile = os.path.join(apg_home, p_comp, p_systemsvc) write_sysv_svcfile(svcfile, p_systemsvc, p_S, p_K, p_svc_user, p_start, p_start_log, p_stop, p_reload, p_status) rc = util.run_sudo("ln -sf " + svcfile + " " + sys_svc_file) link_cmd = "ln -sf ../init.d/" + p_systemsvc + " " util.run_sudo(link_cmd + "/etc/rc0.d/K" + p_K + p_systemsvc) util.run_sudo(link_cmd + "/etc/rc1.d/K" + p_K + p_systemsvc) util.run_sudo(link_cmd + "/etc/rc2.d/S" + p_S + p_systemsvc) util.run_sudo(link_cmd + "/etc/rc3.d/S" + p_S + p_systemsvc) util.run_sudo(link_cmd + "/etc/rc4.d/S" + p_S + p_systemsvc) util.run_sudo(link_cmd + "/etc/rc5.d/S" + p_S + p_systemsvc) rc = util.run_sudo(link_cmd + "/etc/rc6.d/K" + p_K + p_systemsvc) return(rc) ## systemD ################################ unit_file = tempfile.mktemp(".service") fh = open(unit_file, "w") fh.write("[Unit]\n") fh.write("Description=PostgreSQL (" + p_comp + ")\n") if is_pg: fh.write("After=syslog.target\n") fh.write("After=network.target\n") fh.write("\n") fh.write("[Service]\n") if p_env: fh.write("Environment=" + p_env + "\n") if is_pg: fh.write("Type=forking\n") fh.write("User="******"\n") if is_pg: fh.write("\n") fh.write("OOMScoreAdjust=-1000\n") fh.write("ExecStart=" + p_start + "\n") if p_stop!="": fh.write("ExecStop=" + p_stop + "\n") fh.write("ExecReload=" + p_reload + "\n") if is_pg: fh.write("TimeoutSec=300\n") fh.write("\n") fh.write("[Install]\n") fh.write("WantedBy=multi-user.target\n") fh.close() util.run_sudo("mv " + unit_file + " " + sys_svc_file) return(util.run_sudo("systemctl enable " + p_systemsvc))
def remove_linux(p_systemsvc, p_pgver): my_home = os.getenv("MY_HOME") pg_bin_dir = os.path.join(my_home, p_pgver, 'bin') util.remove_symlinks("/usr/bin", pg_bin_dir) util.run_sudo("systemctl disable " + p_systemsvc) util.run_sudo("rm -f " + os.path.join(util.get_systemd_dir(), p_systemsvc + ".service")) return (0)
def config_linux(p_comp, p_systemsvc, p_svc_user, p_start, p_start_log, p_stop, p_reload, p_status="", is_pg=True, p_env=None): my_home = os.getenv("MY_HOME") pg_bin_dir = os.path.join(my_home, p_comp, 'bin') util.create_symlinks("/usr/bin", pg_bin_dir) sys_svc_file = os.path.join(util.get_systemd_dir(), p_systemsvc + ".service") print(p_comp + " config autostart " + sys_svc_file) ## systemD ################################ unit_file = tempfile.mktemp(".service") fh = open(unit_file, "w") fh.write("[Unit]\n") fh.write("Description=PostgreSQL (" + p_comp + ")\n") if is_pg: fh.write("After=syslog.target\n") fh.write("After=network.target\n") fh.write("\n") fh.write("[Service]\n") if p_env: fh.write("Environment=" + p_env + "\n") if is_pg: fh.write("Type=forking\n") fh.write("User="******"\n") if is_pg: fh.write("\n") fh.write("OOMScoreAdjust=-1000\n") fh.write("ExecStart=" + p_start + "\n") if p_stop != "": fh.write("ExecStop=" + p_stop + "\n") fh.write("ExecReload=" + p_reload + "\n") if is_pg: fh.write("TimeoutSec=300\n") fh.write("\n") fh.write("[Install]\n") fh.write("WantedBy=multi-user.target\n") fh.close() util.run_sudo("mv " + unit_file + " " + sys_svc_file) return (util.run_sudo("systemctl enable " + p_systemsvc))
def remove_linux(p_systemsvc, p_S, p_K): if util.is_systemd(): util.run_sudo("systemctl disable " + p_systemsvc) util.run_sudo("rm -f " + os.path.join(util.get_systemd_dir(), p_systemsvc + ".service")) return(0) ## sysV ##################################### cmd = "rm -f " util.run_sudo(cmd + "/etc/rc0.d/K" + p_K + p_systemsvc) util.run_sudo(cmd + "/etc/rc1.d/K" + p_K + p_systemsvc) util.run_sudo(cmd + "/etc/rc2.d/S" + p_S + p_systemsvc) util.run_sudo(cmd + "/etc/rc3.d/S" + p_S + p_systemsvc) util.run_sudo(cmd + "/etc/rc4.d/S" + p_S + p_systemsvc) util.run_sudo(cmd + "/etc/rc5.d/S" + p_S + p_systemsvc) util.run_sudo(cmd + "/etc/rc6.d/K" + p_K + p_systemsvc) rc = util.run_sudo("rm -f /etc/init.d/" + p_systemsvc) return(rc)
def get_pgdg_base(p_ver, p_isJSON): basedir = None ver = p_ver svcname = None datadir = None port = None logdir = None to_devnull = " >/dev/null 2>&1" ####### (1) PGHOME ############################## if util.get_os() in YUM_LIST: basedir = "/usr/pgsql-" + ver else: basedir = "/usr/lib/postgresql/" + ver pgbin = basedir + "/bin/postgres" if not os.path.isfile(pgbin): print(" PGHOME could not be located at " + pgbin) return ("1111111") ###### (2) Service Control File ################# if util.get_os() in APT_LIST: svcname = "postgresql" else: svcname = "postgresql-" + ver if util.is_systemd(): sysdir = util.get_systemd_dir() svcfile = sysdir + "/" + svcname + ".service" else: sysdir = "/etc/init.d" svcfile = sysdir + "/" + svcname if not os.path.isfile(svcfile): print("ERROR: ServiceFile not found (" + svcfile + ")") return ("2222222") ###### (3) DATADIR ############################### if util.get_os() in YUM_LIST: datadir = "/var/lib/pgsql/" + ver + "/data" else: datadir = "/var/lib/postgresql/" + ver + "/main" cmd = "sudo ls " + datadir rc = os.system(cmd + to_devnull) if rc != 0: print("ERROR: DataDir not found (" + datadir + ")") return ("3333333") ##### LOOK FOR PORT #################### pidfile = datadir + "/postmaster.pid" cmd = "sudo ls " + pidfile rc = os.system(cmd + to_devnull) if rc == 0: cmd = "sudo cat " + pidfile + " | sed -n '4p'" port = util.getoutput(cmd) else: port = "1" ##### LOOK FOR LOGDIR ################## if util.get_os() in APT_LIST: logdir = "/var/log/postgresql" else: logdir = datadir + "/pg_log" cmd = "sudo ls " + logdir rc = os.system(cmd + to_devnull) if rc != 0: logdir = "" return ([basedir, ver, svcname, svcfile, datadir, port, logdir])