mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-30 19:42:00 +00:00
Simplify init script (part 2)
This commit is contained in:
parent
747453b008
commit
36151b9e54
52
debian/clickhouse-server.init
vendored
52
debian/clickhouse-server.init
vendored
@ -67,26 +67,6 @@ if uname -mpi | grep -q 'x86_64'; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
is_running()
|
|
||||||
{
|
|
||||||
pgrep --pidfile "$CLICKHOUSE_PIDFILE" $(echo "${PROGRAM}" | cut -c1-15) 1> /dev/null 2> /dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
wait_for_done()
|
|
||||||
{
|
|
||||||
timeout=$1
|
|
||||||
attempts=0
|
|
||||||
while is_running; do
|
|
||||||
attempts=$(($attempts + 1))
|
|
||||||
if [ -n "$timeout" ] && [ $attempts -gt $timeout ]; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
die()
|
die()
|
||||||
{
|
{
|
||||||
echo $1 >&2
|
echo $1 >&2
|
||||||
@ -171,17 +151,7 @@ restart()
|
|||||||
|
|
||||||
forcestop()
|
forcestop()
|
||||||
{
|
{
|
||||||
local EXIT_STATUS
|
${CLICKHOUSE_GENERIC_PROGRAM} stop --force --pid-path "${CLICKHOUSE_PIDDIR}"
|
||||||
EXIT_STATUS=0
|
|
||||||
|
|
||||||
echo -n "Stop forcefully $PROGRAM service: "
|
|
||||||
|
|
||||||
kill -KILL $(cat "$CLICKHOUSE_PIDFILE")
|
|
||||||
|
|
||||||
wait_for_done
|
|
||||||
|
|
||||||
echo "DONE"
|
|
||||||
return $EXIT_STATUS
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -261,16 +231,16 @@ main()
|
|||||||
service_or_func restart
|
service_or_func restart
|
||||||
;;
|
;;
|
||||||
condstart)
|
condstart)
|
||||||
is_running || service_or_func start
|
service_or_func start
|
||||||
;;
|
;;
|
||||||
condstop)
|
condstop)
|
||||||
is_running && service_or_func stop
|
service_or_func stop
|
||||||
;;
|
;;
|
||||||
condrestart)
|
condrestart)
|
||||||
is_running && service_or_func restart
|
service_or_func restart
|
||||||
;;
|
;;
|
||||||
condreload)
|
condreload)
|
||||||
is_running && service_or_func restart
|
service_or_func restart
|
||||||
;;
|
;;
|
||||||
initdb)
|
initdb)
|
||||||
initdb
|
initdb
|
||||||
@ -293,17 +263,7 @@ main()
|
|||||||
|
|
||||||
status()
|
status()
|
||||||
{
|
{
|
||||||
if is_running; then
|
${CLICKHOUSE_GENERIC_PROGRAM} status --pid-path "${CLICKHOUSE_PIDDIR}"
|
||||||
echo "$PROGRAM service is running"
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
if is_cron_disabled; then
|
|
||||||
echo "$PROGRAM service is stopped";
|
|
||||||
else
|
|
||||||
echo "$PROGRAM: process unexpectedly terminated"
|
|
||||||
fi
|
|
||||||
exit 3
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -783,17 +783,20 @@ namespace
|
|||||||
return pid;
|
return pid;
|
||||||
}
|
}
|
||||||
|
|
||||||
int stop(const fs::path & pid_file)
|
int stop(const fs::path & pid_file, bool force)
|
||||||
{
|
{
|
||||||
UInt64 pid = isRunning(pid_file);
|
UInt64 pid = isRunning(pid_file);
|
||||||
|
|
||||||
if (!pid)
|
if (!pid)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (0 == kill(pid, 15)) /// Terminate
|
int signal = force ? SIGKILL : SIGTERM;
|
||||||
fmt::print("Sent termination signal.\n", pid);
|
const char * signal_name = force ? "kill" : "terminate";
|
||||||
|
|
||||||
|
if (0 == kill(pid, signal))
|
||||||
|
fmt::print("Sent {} signal to process with pid {}.\n", signal_name, pid);
|
||||||
else
|
else
|
||||||
throwFromErrno("Cannot send termination signal", ErrorCodes::SYSTEM_ERROR);
|
throwFromErrno(fmt::format("Cannot send {} signal", signal_name), ErrorCodes::SYSTEM_ERROR);
|
||||||
|
|
||||||
size_t try_num = 0;
|
size_t try_num = 0;
|
||||||
constexpr size_t num_tries = 60;
|
constexpr size_t num_tries = 60;
|
||||||
@ -869,6 +872,7 @@ int mainEntryClickHouseStop(int argc, char ** argv)
|
|||||||
desc.add_options()
|
desc.add_options()
|
||||||
("help,h", "produce help message")
|
("help,h", "produce help message")
|
||||||
("pid-path", po::value<std::string>()->default_value("/var/run/clickhouse-server"), "directory for pid file")
|
("pid-path", po::value<std::string>()->default_value("/var/run/clickhouse-server"), "directory for pid file")
|
||||||
|
("force", po::value<bool>()->default_value(false), "Stop with KILL signal instead of TERM")
|
||||||
;
|
;
|
||||||
|
|
||||||
po::variables_map options;
|
po::variables_map options;
|
||||||
@ -887,7 +891,7 @@ int mainEntryClickHouseStop(int argc, char ** argv)
|
|||||||
{
|
{
|
||||||
fs::path pid_file = fs::path(options["pid-path"].as<std::string>()) / "clickhouse-server.pid";
|
fs::path pid_file = fs::path(options["pid-path"].as<std::string>()) / "clickhouse-server.pid";
|
||||||
|
|
||||||
return stop(pid_file);
|
return stop(pid_file, options["force"].as<bool>());
|
||||||
}
|
}
|
||||||
catch (...)
|
catch (...)
|
||||||
{
|
{
|
||||||
@ -940,6 +944,7 @@ int mainEntryClickHouseRestart(int argc, char ** argv)
|
|||||||
("config-path", po::value<std::string>()->default_value("/etc/clickhouse-server"), "directory with configs")
|
("config-path", po::value<std::string>()->default_value("/etc/clickhouse-server"), "directory with configs")
|
||||||
("pid-path", po::value<std::string>()->default_value("/var/run/clickhouse-server"), "directory for pid file")
|
("pid-path", po::value<std::string>()->default_value("/var/run/clickhouse-server"), "directory for pid file")
|
||||||
("user", po::value<std::string>()->default_value("clickhouse"), "clickhouse user")
|
("user", po::value<std::string>()->default_value("clickhouse"), "clickhouse user")
|
||||||
|
("force", po::value<bool>()->default_value(false), "Stop with KILL signal instead of TERM")
|
||||||
;
|
;
|
||||||
|
|
||||||
po::variables_map options;
|
po::variables_map options;
|
||||||
@ -962,7 +967,7 @@ int mainEntryClickHouseRestart(int argc, char ** argv)
|
|||||||
fs::path config = fs::path(options["config-path"].as<std::string>()) / "config.xml";
|
fs::path config = fs::path(options["config-path"].as<std::string>()) / "config.xml";
|
||||||
fs::path pid_file = fs::path(options["pid-path"].as<std::string>()) / "clickhouse-server.pid";
|
fs::path pid_file = fs::path(options["pid-path"].as<std::string>()) / "clickhouse-server.pid";
|
||||||
|
|
||||||
if (int res = stop(pid_file))
|
if (int res = stop(pid_file, options["force"].as<bool>()))
|
||||||
return res;
|
return res;
|
||||||
return start(user, executable, config, pid_file);
|
return start(user, executable, config, pid_file);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user