我是一名 webdev,我正在使用 JSX 编译器和 SASS 预处理器来编译我的.jsx
和.scss
文件。当我开始工作时,我会启动这两个单独的命令:
jsx -x jsx jsx js --watch --no-cache-dir
sass stylesheets/scss/app.scss:stylesheets/css/app.css --watch
如您所见,两者都有一个--watch
标志,这意味着它们将继续跟踪各自的文件,直到它们被终止。我希望能够使用一个 shell 脚本,该脚本可以同时启动这两个脚本。到目前为止,我已经:
#!/bin/sh
echo "Starting JSX Compiler..."
jsx -x jsx jsx js --watch --no-cache-dir
echo "Starting SASS Preprocessor"
sass stylesheets/scss/app.scss:stylesheets/css/app.css --watch
但这只会执行第一个程序jsx
,而不是sass
因为 jsx 正在运行。我如何通过 shellscript 启动这两个“监视”类型的程序?
答案1
这里有两种可能性可以实现您的目标。
首先,您只需在命令行末尾添加一个与号“&”即可在后台启动第一个命令:
#!/bin/sh
echo "Starting JSX Compiler..."
jsx -x jsx jsx js --watch --no-cache-dir &
echo "Starting SASS Preprocessor"
sass stylesheets/scss/app.scss:stylesheets/css/app.css --watch &
通过这样做,您可以使用同一个终端进行工作,也许 sdtout 和 stderr 的输出将显示在终端中,这有时会有点令人困惑。但进程将在后台运行,直到您关闭终端。
如果这还不够,并且您希望即使终端关闭也能运行进程,那么您还需要nohup
此处的命令:
#!/bin/sh
echo "Starting JSX Compiler..."
nohup jsx -x jsx jsx js --watch --no-cache-dir &
echo "Starting SASS Preprocessor"
nohup sass stylesheets/scss/app.scss:stylesheets/css/app.css --watch &
这也将启动后台进程,您仍然在命令末尾使用“&”符号,但它还会告诉您的进程忽略 HUP 信号。这样,进程将一直运行,直到程序终止、进程被终止或系统关闭。