我有一个如下所示的脚本:
#!/bin/bash
tsx watch services/$1/src/index.ts
这将启动tsc
给定的服务:
script/start_service some-service
如果我添加&
结尾,它将作为一项作业执行:
script/start_service some-service &
但我仍然得到一些输出。然后,如果我将其(所有)输出重定向到/dev/null
:
script/start_service some-service > /dev/null 2>&1 &
它在后台正确启动了服务,但我的脚本返回后我无法查找它。
我想弄清楚的是如何向我开始的作业添加一个名称(或其他唯一标识符),以便我以后可以从另一个脚本中查找它(并且可能在必要时终止它)。
注意这问题是相关的,但我不知道如何将答案应用到我的用例中。答案:
bash -c "exec -a MyUniqueProcessName <command> &"
对我来说不起作用。无论我做什么,我都无法获得具有我传递的名称的进程。
注意我不直接将其分配pid
给变量的原因是我的脚本终止,并且每当用户再次调用我的脚本时,它都需要检查当前正在运行哪些服务,并且它无权访问上次执行脚本时创建的短暂局部变量。