【发布时间】:2016-08-07 15:30:10
【问题描述】:
我正在尝试为我的项目构建一个启动脚本和一个停止脚本。我需要运行一个 sass 自动编译器和一个服务器,并将两者的输出重定向到一个文件。我为此使用lite-server 和sass --watch。
为了使这些进程同时运行,我使用& 将这些进程置于后台。这带来了停止脚本的挑战,我无法像往常一样使用Ctrl+C 停止脚本。我想我可以通过将进程 ID 存储在文本文件中来克服这个问题。
我想出了以下“启动”脚本:
# Start a sass watcher and a server running simultaneously. Store the PIDs in a
# text file so that the processes can be easily stopped.
(
lite-server &
echo $! > .pids.txt &
sass --watch sass:css --style=compressed &
echo $! >> .pids.txt &
) &> log.txt
cat .pids.txt
然后,为了停止进程,我正在使用
kill $(cat .pids.txt)
将进程 ID 写入文本文件似乎有点骇人听闻。有没有更好的方法来完成我想做的事情?
【问题讨论】:
-
在不将 PID 写入文本文件的情况下,如果这些进程在您的机器上只能运行一次(一个实例),您可以使用
killall命令。killall -s KILL lite-server sass(单独或组合) -
好的,很酷。我认为这不是最佳做法,但这是有道理的。
标签: linux bash concurrency process kill-process