实时监控后台作业

实时监控后台作业

我执行了这样的命令:nohup some_command &。现在这个命令在后台运行。我可以用命令看到它jobs

输出示例:

[1]+  Running                 nohup some_command &

是否有可能以某种方式拥有一个居住来自jobs命令的状态表示,类似于top作品?那么nohup some_command &完成后,它会立即从列表中消失吗?

答案1

如果您想要的只是立即打印作业完成通知,即使您正在键入提示或其他作业位于前台,那么只需运行set -o notify.

如果您希望前台命令显示当前 shell 中后台作业的状态,则可以jobs循环运行。在全屏模式下很容易做到:

tput clear
jobs
while sleep 1; do
  tput clear
  jobs
done

如果要在不清除屏幕的情况下显示提示下方的列表,请保存开头的光标位置并在每次运行时恢复它:

tput sc
jobs
while sleep 1; do
  tput rc
  jobs
done

答案2

您可以创建一个 shell 函数:

myjobwatch() { while true; do jobs; sleep 2; clear; done; }

然后只需执行myjobwatch

相关内容