0

我有一个当前正在运行的任务/进程。我想安排另一个任务在第一个任务完成时开始。

我怎么能在 linux 中做到这一点?

(我不能停止第一个,并创建一个脚本来开始一个接一个的任务)

4

2 回答 2

2

有点微薄的规格,但沿着线的东西

watch -n 1 'pgrep task1 || task2'

可能会完成这项工作。

于 2013-01-16T21:49:49.443 回答
0

你要

手册第 2 节中的系统调用,它的变体之一,waitpid或者专门为此目的设计的内置 shell。


内置的 shell 更自然一点,因为这两个进程都是 sell 的子进程,所以你编写如下脚本:

#!/bin/sh
command1 arguments &
wait 
command2 args

要使用系统调用,您必须编写一个程序,在wait执行第二个程序之前,在子进程中启动第一个命令然后 s。

手册页wait (2)说:

wait() 和 waitpid()
wait() 系统调用暂停当前进程的执行,直到其子进程之一终止。调用 wait(&status) 等价于:

      waitpid(-1, &status, 0);

waitpid() 系统调用暂停当前进程的执行,直到 pid 参数指定的子进程改变状态。

于 2013-01-17T00:15:24.377 回答