diff options
| author | luigi1111 <luigi1111w@gmail.com> | 2023-02-15 10:51:05 -0500 |
|---|---|---|
| committer | luigi1111 <luigi1111w@gmail.com> | 2023-02-15 10:51:05 -0500 |
| commit | af368c93ce72731455e9da47e721e49d5b6533b0 (patch) | |
| tree | 2950a14bd614ba173cb1c00535b1d1b53762d955 /src/daemon/DaemonManager.cpp | |
| parent | 5ced4ef54729f3ef6b9b696ef1c595bc896ce0c6 (diff) | |
| parent | 757bc7d7b953ca997aaa2897d79ddd4c37caa45a (diff) | |
| download | monzero-gui-af368c93ce72731455e9da47e721e49d5b6533b0.tar.gz monzero-gui-af368c93ce72731455e9da47e721e49d5b6533b0.tar.xz monzero-gui-af368c93ce72731455e9da47e721e49d5b6533b0.zip | |
Merge pull request #3936
757bc7d p2pool: Restart monerod only when needed and with proper args (devhyper)
Diffstat (limited to 'src/daemon/DaemonManager.cpp')
| -rw-r--r-- | src/daemon/DaemonManager.cpp | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/daemon/DaemonManager.cpp b/src/daemon/DaemonManager.cpp index 6a5a8233..f52ab42a 100644 --- a/src/daemon/DaemonManager.cpp +++ b/src/daemon/DaemonManager.cpp @@ -342,6 +342,85 @@ bool DaemonManager::checkLmdbExists(QString datadir) { return validateDataDir(datadir).value("lmdbExists").value<bool>(); } +bool DaemonManager::checkUnderSystemd() { + #ifdef Q_OS_LINUX + QProcess p; + QStringList args; + args << "monerod"; + p.setProgram("pgrep"); + p.setArguments(args); + p.start(); + p.waitForFinished(); + QString pid = p.readAllStandardOutput().trimmed(); + if (pid.isEmpty()) { + return false; + } + args.clear(); + + args << "-c"; + args << "ps -eo pid,cgroup | grep " + pid + " | grep -q .service$"; + p.setProgram("sh"); + p.setArguments(args); + p.start(); + p.waitForFinished(); + if (p.exitCode() == 0) { + return true; + } + #endif + return false; +} + +QString DaemonManager::getArgs(const QString &dataDir) { + if (!running(NetworkType::MAINNET, dataDir)) { + return args; + } + QProcess p; + QStringList tempArgs; + #ifdef Q_OS_WIN + //powershell + tempArgs << "Get-CimInstance Win32_Process -Filter \"name = 'monerod.exe'\" | select -ExpandProperty CommandLine "; + p.setProgram("powershell"); + p.setArguments(tempArgs); + p.start(); + p.waitForFinished(); + args = p.readAllStandardOutput().simplified().trimmed(); + + #elif defined(Q_OS_UNIX) + //pgrep + tempArgs << "monerod"; + p.setProgram("pgrep"); + p.setArguments(tempArgs); + p.start(); + p.waitForFinished(); + QString pid = p.readAllStandardOutput().trimmed(); + if (pid.isEmpty()) { + return args; + } + + tempArgs.clear(); + + //ps + tempArgs << "-o"; + tempArgs << "args="; + tempArgs << "-fp"; + tempArgs << pid; + p.setProgram("ps"); + p.setArguments(tempArgs); + p.start(); + p.waitForFinished(); + args = p.readAllStandardOutput().trimmed(); + + #endif + if (args.contains("--")) { + int index = args.indexOf("--"); + args.remove(0, index); + } + else { + args = ""; + } + return args; +} + DaemonManager::DaemonManager(QObject *parent) : QObject(parent) , m_scheduler(this) |
