Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何同时运行多个bash脚本?_Bash_Unix - Fatal编程技术网

如何同时运行多个bash脚本?

如何同时运行多个bash脚本?,bash,unix,Bash,Unix,我正在为一个Unix类学习Bash,我试图弄清楚如何运行一个脚本,然后在第一个脚本运行时运行第二个脚本,并让两个脚本交互。为了澄清,脚本如下所示: $ ./script1 & #/bin/bash num=1 陷阱出口0 SIGINT SIGTERM 陷阱“{echo#num++;}”SIGUSR1 而: 做 睡眠2 完成 第二个: #/bin/bash 如果ps | grep“$1”>/dev/null 然后 kill-SIGUSR1$1 其他的 echo“进程不存在” f

我正在为一个Unix类学习Bash,我试图弄清楚如何运行一个脚本,然后在第一个脚本运行时运行第二个脚本,并让两个脚本交互。为了澄清,脚本如下所示:

$ ./script1 &
#/bin/bash
num=1
陷阱出口0 SIGINT SIGTERM
陷阱“{echo#num++;}”SIGUSR1
而:
做
睡眠2
完成
第二个:

#/bin/bash
如果ps | grep“$1”>/dev/null
然后
kill-SIGUSR1$1
其他的
echo“进程不存在”
fi
出口0

如果代码不正确,一般的想法是让第一个脚本循环,直到收到SIGINT或SIGTERM,并在收到SIGUSR1时回显并递增一个数字。第二个脚本将pid作为参数,检查它是否存在,并向给定进程发送SIGUSR1。问题是,当我运行第一个脚本时,除非我使用ctrl-z将其移动到后台,否则我无法执行任何操作,但当它在那里时,除了kill信号外,它似乎不会响应任何信号。关于如何实现这一点有什么想法吗?

您可以使用
mycommand&
在后台运行脚本
Ctrl-Z
停止脚本,但您可以使用
bg
让脚本在后台运行。在这两种情况下,您都可以使用
fg
将其再次置于前台

还请注意,在赋值中,
=
周围不能有空格,可以使用
let num++
来增加num。还应在
trap
中单引号引用命令,以防止“$num”展开

总而言之:

#/bin/bash
num=1
陷阱出口0 SIGINT SIGTERM
陷阱“{echo$num;let num++;}”SIGUSR1
而:
做
睡眠2
完成

最后,只需使用
kill-0PID
,或者只需尝试对其进行sigusr1并检查结果,就可以更轻松地检查pid是否存在,以避免grep“123”匹配pid“1234”的子字符串等

您可以使用
mycommand&
在后台运行脚本
Ctrl-Z
停止脚本,但您可以使用
bg
让脚本在后台运行。在这两种情况下,您都可以使用
fg
将其再次置于前台

还请注意,在赋值中,
=
周围不能有空格,可以使用
let num++
来增加num。还应在
trap
中单引号引用命令,以防止“$num”展开

总而言之:

#/bin/bash
num=1
陷阱出口0 SIGINT SIGTERM
陷阱“{echo$num;let num++;}”SIGUSR1
而:
做
睡眠2
完成

最后,只需使用
kill-0PID
,或者只需尝试对其进行sigusr1并检查结果,就可以更轻松地检查pid是否存在,以避免grep“123”匹配pid“1234”的子字符串等

您需要使第一个脚本在后台运行。按Ctrl+Z组合键时,它将被挂起。然后,您可以键入“bg”使其在后台运行(如果它尝试从标准输入读取,它将再次停止,以允许您使用“fg”命令切换回它)

另一种方法是在后台启动script1,如下所示:

$ ./script1 &
符号在后台启动作业,并立即返回提示


请查看bash手册页中“作业控制”(副本)下的内容,以了解有关其工作原理的更多信息。处理交互式shell中的作业的关键命令是“jobs”、“fg”和“bg”。

您需要在后台运行第一个脚本。按Ctrl+Z组合键时,它将被挂起。然后,您可以键入“bg”使其在后台运行(如果它尝试从标准输入读取,它将再次停止,以允许您使用“fg”命令切换回它)

另一种方法是在后台启动script1,如下所示:

$ ./script1 &
符号在后台启动作业,并立即返回提示


请查看bash手册页中“作业控制”(副本)下的内容,以了解有关其工作原理的更多信息。处理交互式shell中的作业的关键命令是“jobs”、“fg”和“bg”。

好的,谢谢!num=1中的空格实际上是复制过来的拼写错误,作业上的说明是使用ps和grep指定的,大概只是为了学习如何使用它们。好的,谢谢!num=1中的空格实际上是复制过来的拼写错误,作业上的说明是使用ps和grep指定的,大概只是为了学习如何使用它们。