Unix命令挂起一个工作,而有控制台活动?

我想做一个大的磁盘传输,这会减慢我的系统的响应速度。

我想要的是一个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上:-)