当控制台活动时,Unix 命令是否暂停作业?

当控制台活动时,Unix 命令是否暂停作业?

我想进行大规模磁盘传输,但这会降低系统的响应速度。

我想要的是一个 Unix 命令,它只在我闲置几分钟后才会运行命令。如果我中途回来,它会暂停工作。直到我离开电脑。

有没有这样的命令,或者软件包?

[编辑:这个问题的关键部分是如何确定是否存在控制台活动, 到自动地暂停。]

答案1

您可以通过首先获取进程 PID 来实现此目的:

ps aux | grep <process_name>

记下 PID(第二列),然后使用以下命令将其暂停:

kill -STOP <pid>

并继续:

kill -CONT <pid>

答案2

如何正常运行该命令,然后使用“nice”来降低其优先级?

答案3

我曾经写过一个“pause_io”脚本,它会接受一个数字,然后 pgrep 所有可能影响我的 IO 的东西,例如 rsync、updatedb 和 cp。然后它会 kill -STOP 这些 pid 并休眠指定的分钟数,然后 kill -CONT 每个 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

答案4

也许将建议的 -STOP 和 -CONT 作为某些屏幕保护程序的一部分运行?

(如果您在终端上:还有一个终端屏幕保护程序,但我不知道它的名字,也不知道在哪里设置它的选项。我只知道,它在 Ubuntu 上默认是开启的 :-)

相关内容