mirror of
https://github.com/monero-project/monero-gui.git
synced 2026-04-02 17:47:25 -04:00
p2pool: Restart monerod only when needed and with proper args
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -58,6 +58,8 @@ public:
|
||||
Q_INVOKABLE void exit();
|
||||
Q_INVOKABLE QVariantMap validateDataDir(const QString &dataDir) const;
|
||||
Q_INVOKABLE bool checkLmdbExists(QString datadir);
|
||||
Q_INVOKABLE QString getArgs(const QString &dataDir);
|
||||
Q_INVOKABLE bool checkUnderSystemd();
|
||||
|
||||
private:
|
||||
|
||||
@@ -82,6 +84,7 @@ private:
|
||||
QString m_monerod;
|
||||
bool m_app_exit = false;
|
||||
bool m_noSync = false;
|
||||
QString args = "";
|
||||
|
||||
mutable FutureScheduler m_scheduler;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user