在 Linux 中,防止进程进入睡眠状态

在 Linux 中,防止进程进入睡眠状态

在 linux (bullseye 11, kde) 中,防止进程进入睡眠状态。

问题:当我离开几个小时后再回到电脑前时,我需要 10-20 分钟才能将鼠标调整到可以使用的状态。尤其是那些必不可少的过程。例如,在 lxterminal 中,当鼠标有下载(连续)视频的任务时,它会在 10-20 分钟后做出响应!!!Firefox、dolphin 等也是如此。

我不想为了使用 Firefox、lxterminal、鼠标等而等待 10-20 分钟。我想阻止这些进程永远进入睡眠状态!我不知道该怎么做。

我所做的(它们不会阻止进程休眠):

sudo systemctl mask sleep.target
sudo systemctl mask suspend.target
sudo systemctl mask hibernate.target
sudo systemctl mask hybrid-sleep.target
sudo gsettings set org.gnome. sudo gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-battery-type 'nothing' settings-daemon.plugins.power sleep-inactive-battery-timeout 0
sudo setterm -blank 0 -powersave off -powerdown 0

另外,我还从所有 USB 磁盘和 USB 集线器中删除了自动挂起功能powertop(从良好状态到不良状态)。

我不知道如何防止进程休眠并使我的台式计算机再次可用!这非常烦人。如果有任何程序可以连续向进程发送 CONT 信号,或者任何其他方法可以防止进程休眠,请告诉我。

请注意,内存约为 6/16GB,交换空间也很低(3GB/16GB),但 CPU 进程几乎达到 100%。当我尝试移动鼠标时,我发现 CPU 进程从 100% 降至 70% 或更低。这意味着尝试降低“某些东西”以释放“处理能力”。这需要很多时间。因为我在很多硬盘上下载了很多东西,所以 I/O 进程也很高。我认为当我不积极使用计算机时,它会将“软件”中的“CPU 能力”转移到“I/O 磁盘”进程上。请注意,当我使用计算机时,不存在这样的问题。

但是,这是用错误的方式做的。我不知道如果我操纵进程优先级会产生什么影响。Linux 必须赋予用户阻止进程进入睡眠状态(部分或全部)的权力。

  ,g$$$$$$$$$$$$$$$P.       ------------ 
  ,g$$P"     """Y$$.".        OS: Debian GNU/Linux 11 (bullseye) x86_64 
 ,$$P'              `$$$.     Host: B85M-HD3 R4 
',$$P       ,ggs.     `$$b:   Kernel: 5.11.0-18-generic 
`d$$'     ,$P"'   .    $$$    Uptime: 26 days, 23 hours, 51 mins 
 $$P      d$'     ,    $$P    Packages: 6834 (dpkg), 9 (flatpak) 
 $$:      $$.   -    ,d$$'    Shell: bash 5.1.4 
 $$;      Y$b._   _,d$P'      Resolution: 1920x1080 
 Y$$.    `.`"Y$$$$P"'         DE: Plasma 5.21.4 
 `$$b      "-.__              WM: KWin 
  `Y$$                        Theme: Breeze Light [Plasma], Breeze [GTK2], Adwa 
   `Y$$.                      Icons: breeze [Plasma], breeze [GTK2/3] 
     `$$b.                    Terminal: lxterminal 
       `Y$$b.                 Terminal Font: Monospace 10 
          `"Y$b._             CPU: Intel i5-4570S (4) @ 3.600GHz 
              `"""            GPU: NVIDIA GeForce GT 1030 
                              Memory: 6059MiB / 15961MiB 

答案1

我采用了那个脚本,但它没有多大帮助,但有一点:请用相关进程的实际数量替换 PID 数量。

您可以关闭您可能忘记打开的程序以减少内存和进程能力。如果您不想使用 PID 而是使用进程名称,您可以用 pkill 替换 kill。

while true  
do  

# Sending continuation signals to process in order to prevent them from sleep. 
# somewhat succesfull

    #plasmashell
    sudo    kill -SIGCONT 1113
    #lxterminal
    sudo    kill -SIGCONT 1112
    #kwin_x11
    sudo    kill -SIGCONT 1111
    #kded5
    sudo    kill -SIGCONT 1114
    
    # usb hubs
    sudo     kill -SIGCONT  66682
    sudo     kill -SIGCONT  69861
    
    sleep 20  #or find Timecount function to replace sleep. 

#Kill processes by name that you may forgot open before eg. sleep

    sudo     pkill  -SIGKILL  thunderbird
    sudo     pkill  -SIGKILL  shutter
    
done

更新(无论如何上述脚本都没有运行)

  • 案例1:打开2个终端(wget下载)+qbittorent+系统监视器
  • 案例2:打开2个终端(wget下载)+qbittorent+系统监视器
  • 在第 1 种情况中,我在睡觉前在系统监视器的搜索栏中输入了“usb”,并显示了 usb 存储进程。只要我这样做了,醒来后使用电脑时就不会出现“停止”或严重的“延迟”。我这样做是为了观察这些进程何时进入睡眠状态。
  • 在案例 2 中,在我睡觉之前,搜索栏中没有写入“usb”,并且当我离开床走到我的电脑前时,我遇到了鼠标移动“滞后”的情况并且无法执行一些操作,例如移动窗口、打开某些东西等。

我可以建议系统监视器向搜索栏中找到的进程发送一些特殊信号,以防止它们以某种方式产生滞后吗?不知道……

相关内容