bash - 如何在前一个命令之前执行命令?

AAa*_*Aaa 0 linux bash scripting

我想编写一个脚本来模拟由于某种原因被中断的进程.

所以我尝试运行一些杀死过程的东西:

ssh -f localhost sleep 7;kill pid
call_function_from_another_script_that_runs_the_process
Run Code Online (Sandbox Code Playgroud)

希望ssh命令因为"-f"而在后台运行,并且由于睡眠,kill命令不会很快执行.问题是睡眠不会在这里生效.杀戮正在被立即执行.

如果我在没有-f的情况下运行ssh,那么第二行不会被调用,我的进程也不会运行.

请假设第二行是它所说的 - 从另一个脚本运行一个函数来运行该过程.我不能"将该函数放在脚本中并运行它"或者更改已经编写的其他内容的东西.

任何的想法?

谢谢.

Cel*_*ada 7

您不需要使用ssh在后台运行某些东西.用这个:

(
    sleep 7
    kill pid
) &
call_function_from_another_script_that_runs_the_process
Run Code Online (Sandbox Code Playgroud)

注意"&"将整个子shell放在后台.在子shell中,首先sleep运行a,然后运行a kill.

顺便提一下,kill示例中的命令立即生效的原因是因为该行的脚本有两个命令:" ssh -f localhost sleep 7"和" kill pid",而不是sleep 7;kill pidSSH会话中的一个命令(" ").