Если вы просто хотите получить представление об использовании процессов с момента работы, то с помощью top
вы можете настроить сортировку по TIME + с помощью SHIFT + T . Вы также можете выделить этот столбец с помощью x .
Пример:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+
COMMAND
4046 fred 20 0 1873812 825068 119016 S 0.7 20.4 31:52.12 firefox
2661 root 20 0 401200 97064 52196 S 5.0 2.4 15:07.41 Xorg
4058 fred 20 0 438056 25568 19388 S 1.0 0.6 1:30.85 panel-29-weathe
4057 fred 20 0 307456 17904 15628 S 0.7 0.4 0:43.47 panel-21-system
3957 fred 20 0 176732 23596 17536 S 0.3 0.6 0:38.32 xfwm4
4096 fred 9 -11 436876 14204 8936 S 0.0 0.4 0:37.12 pulseaudio
5052 root 20 0 0 0 0 S 0.3 0.0 0:28.04 kworker/2:2
Если у вас есть PID программы, вы можете использовать «Kill PID», чтобы завершить приложение. Я попытался сохранить полный экземпляр приложения перед закрытием, но этот процесс очень утомителен. Вы можете просто использовать терминал для запуска приложения. Например, если вы хотите запустить Firefox, просто введите терминал, чтобы открыть ваше приложение. Но если вы хотите перезапустить свой скрипт C++. Это можно сделать, просто передав команду в оболочку.
Я сделал функцию для выполнения команды в оболочке:
string ExecCmd(string command) {
char buffer[128];
string cmd_out = "";
// open pipe to file and execute command in linux terminal
FILE* pipe = popen(command.c_str(), "r");
if (!pipe)
return "popen failed!";
// read till end of process:
while (!feof(pipe)) {
// read output of the sent command and add to result
if (fgets(buffer, 128, pipe) != NULL)
cmd_out += buffer;
}
pclose(pipe);
// returns the output of terminal in string format
return cmd_out;
}
Затем для завершения процесса и его перезапуска я использовал:
void RestartApplication(string proc_id) {
// kill the running process
ExecCmd("kill " + proc_id);
// restart the application by giving the name of your program
ExecCmd("nohup program_name >program_name.log &");
}
Я использовал команду nohup, потому что она освобождает терминал после выполнения команды. Теперь, чтобы запустить этот скрипт, вы можете написать в своем основном потоке программы:
void main(){
RestartApplication(PID); // pass PID of your application to be restarted
}