**Use case**

It prints:
```
ClickHouse has been successfully installed.

Start clickhouse-server with:
 sudo clickhouse start
```

But if clickhouse-server is already running, let's print:
```
ClickHouse has been successfully installed.

Restart clickhouse-server with:
 sudo clickhouse restart
```
("pid-path", po::value<std::string>()->default_value("var/run/clickhouse-server"), "directory for pid file")
            ("user", po::value<std::string>()->default_value(DEFAULT_CLICKHOUSE_SERVER_USER), "clickhouse user")
            ("force", po::value<bool>()->default_value(false), "Stop with KILL signal instead of TERM")
        ;
        po::variables_map options;
        po::store(po::parse_command_line(argc, argv, desc), options);
        if (options.count("help"))
        {
            std::cout << "Usage: "
                << (getuid() == 0 ? "" : "sudo ")
                << argv[0]
                << " restart\n";
            return 1;
        }
        std::string user = options["user"].as<std::string>();
        fs::path prefix = options["prefix"].as<std::string>();
        fs::path executable = prefix / options["binary-path"].as<std::string>() / "clickhouse-server";
        fs::path config = prefix / options["config-path"].as<std::string>() / "config.xml";
        fs::path pid_file = prefix / options["pid-path"].as<std::string>() / "clickhouse-server.pid";
        if (int res = stop(pid_file, options["force"].as<bool>()))
            return res;
        return start(user, executable, config, pid_file);
    }
    catch (...)
    {
        std::cerr << getCurrentExceptionMessage(false) << '\n';
        return getCurrentExceptionCode();
    }
}