我想做一个大的磁盘传输,这会减慢我的系统的响应速度。
我想要的是一个Unix命令,只有在控制台闲置了几分钟后才能运行命令。 如果我中途回来,它会暂停工作。 直到我离开我的电脑。
有这样一个命令,还是软件包?
[编辑:这个问题的关键部分是如何确定是否有控制台活动 , 自动挂起。]
您可以通过以下方式获得过程PID:
ps aux | grep <process_name>
记下PID(它是第二列),然后用下面的命令挂起它:
kill -STOP <pid>
并继续:
kill -CONT <pid>
如何正常运行命令,然后使用“好”来降低它的优先级?
我曾经写过一个“pause_io”脚本,它接受一个数字,然后pgrep所有types的东西,可能是我的IO,例如rsync,updatedb和cp。 然后,它会杀死 – 停止这些pid,并睡眠提供的分钟数,然后杀死他们每个人。 当我需要响应访问框,我会执行
pause_io 10 &
而我将有10分钟没有沉重的I / O
它是这样的:
#!/bin/bash TIMEOUT=$(($1*60)) TASKS="mlocate|updatedb|rsync|cp" pkill $TASKS -signal STOP sleep $TIMEOUT pkill $TASKS -signal CONT
rsync有一个--bwlimit选项。
运行build议的-STOP和-CONT作为屏幕保护程序的一部分,也许?
(如果你在一个terminal上:还有一个terminal的屏幕保护程序,但我不知道它的名字,或者在哪里设置它的选项。我所知道的是,它默认在Ubuntu上:-)