在 Linux 中终止后台进程
Kill background processes in Linux
我正在尝试为我的项目构建启动脚本和停止脚本。我需要 运行 一个 sass 自动编译器和一个服务器,并将两者的输出重定向到一个文件。为此,我使用 lite-server
和 sass --watch
。
为了使这些进程 运行 并发,我使用 &
作为进程的后台。这对停止脚本提出了挑战,我无法像往常一样使用 Ctrl+C
停止脚本。我想我可以通过将进程 ID 存储在文本文件中来克服这个问题。
我想出了以下 "start" 脚本:
# 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 写入文本文件似乎有点老套。有没有更好的方法来完成我想做的事情?
您可以将它们存储在一个数组中,如果那是您不会称之为骇人听闻的话。
编辑:
另一种方法是只执行:
kill $(jobs -p)
这会杀死所有后台进程(jobs -p 将所有后台进程的 PID 打印到标准输出,然后将其交给杀死)。
你应该添加你想要的类型 "kill"..
如:kill -9 $(cat .pids.txt)
我可能更喜欢对进程进行 grep 并终止进程,而不是将 PID 保存在文件中。
ps -ef | grep lite-server | awk '{print }' | kill -9
我假设 ps -ef
输出中的第二列是您服务器中进程 lite-server
的 PID。
我正在尝试为我的项目构建启动脚本和停止脚本。我需要 运行 一个 sass 自动编译器和一个服务器,并将两者的输出重定向到一个文件。为此,我使用 lite-server
和 sass --watch
。
为了使这些进程 运行 并发,我使用 &
作为进程的后台。这对停止脚本提出了挑战,我无法像往常一样使用 Ctrl+C
停止脚本。我想我可以通过将进程 ID 存储在文本文件中来克服这个问题。
我想出了以下 "start" 脚本:
# 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 写入文本文件似乎有点老套。有没有更好的方法来完成我想做的事情?
您可以将它们存储在一个数组中,如果那是您不会称之为骇人听闻的话。
编辑: 另一种方法是只执行:
kill $(jobs -p)
这会杀死所有后台进程(jobs -p 将所有后台进程的 PID 打印到标准输出,然后将其交给杀死)。
你应该添加你想要的类型 "kill"..
如:kill -9 $(cat .pids.txt)
我可能更喜欢对进程进行 grep 并终止进程,而不是将 PID 保存在文件中。
ps -ef | grep lite-server | awk '{print }' | kill -9
我假设 ps -ef
输出中的第二列是您服务器中进程 lite-server
的 PID。