1. let { exec } = require('child_process');
    2. let fs = require('fs');
    3. let path = require('path');
    4. setInterval(() => {
    5. gainSystemMessage();
    6. }, 1000);
    7. /**
    8. * 获取系统cpu消耗前十的进程
    9. */
    10. function gainSystemMessage() {
    11. //top 资源管理器 -b 全部进程 -n 执行次数 1 ,| head -n 17 管道处理获取前17行
    12. let shellStr = 'top -b -n 1 | head -n 17';
    13. exec(shellStr, (error, stdout, srderr) => {
    14. if (error) {
    15. console.log('>>>>>', error);
    16. } else {
    17. if (stdout) {
    18. // 按行划分
    19. let strs = stdout.split('\n');
    20. // 第三行是cpu
    21. let cpuStr = strs[2].split(',');
    22. // 第四个是cpu空闲率
    23. let id = cpuStr[3].split(' ')[1];
    24. console.log('111', id);
    25. // cpu空闲率小于50时写到日志文件中
    26. if (id < 50) {
    27. writeLog(stdout);
    28. }
    29. //执行成功返回
    30. // console.log(stdout);
    31. }
    32. }
    33. });
    34. }
    35. /**
    36. * 将数据写到日志里
    37. * @param {*} str 要写的数据
    38. */
    39. function writeLog(str) {
    40. str += '\n\n\n';
    41. let pathStr = path.join(__dirname + '/logs');
    42. if (!fs.existsSync(pathStr)) {
    43. fs.mkdirSync(pathStr);
    44. }
    45. let date = new Date();
    46. let day =
    47. date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();
    48. let filePath = pathStr + '/' + day + '.log';
    49. // 往日志文件追加内容
    50. fs.appendFileSync(filePath, str);
    51. }