我有一个当前正在运行的任务/进程。我想安排另一个任务在第一个任务完成时开始。
我怎么能在 linux 中做到这一点?
(我不能停止第一个,并创建一个脚本来开始一个接一个的任务)
有点微薄的规格,但沿着线的东西
watch -n 1 'pgrep task1 || task2'
可能会完成这项工作。
你要等。
手册第 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 参数指定的子进程改变状态。