Linux 在另一个任务完成时安排任务

问题描述 投票:0回答:3

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

如何在 Linux 中做到这一点?

(我无法停止第一个任务,并创建一个脚本来依次启动一个任务)

linux process cron task schedule
3个回答
2
投票

规格有些微薄,但与

类似
watch -n 1 'pgrep task1 || task2'

可能可以完成这项工作。


0
投票

你想要等待

手册第 2 节中的系统调用,它的变体之一,如

waitpid
或专门为此目的设计的 shell 内置函数。


shell 内置函数更自然一些,因为这两个进程都是 sell 的子进程,因此您编写如下脚本:

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

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

wait

wait (2)
的手册页说:

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

      waitpid(-1, &status, 0);

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


0
投票

如果你想执行第二个任务每次第一个任务没有运行,tink建议的答案有效:

watch -n 1 'pgrep <name of task1> || <task2>'

但是,我想在

task2
完成后立即运行 task1
一次
。所以我用了:

watch -n 1 -g 'pgrep <name of task1>'; <task2>
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.