You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过bash -i -c启动后台进程?语法错误问题求助

解决bash -i -c启动后台进程的语法错误问题

嘿,这个问题我之前也碰到过!你出错的原因很简单:&本身就是bash里的命令分隔符,你在它后面再加个;就属于画蛇添足了,bash自然会报语法错误。

直接修正后的正确命令

把多余的;删掉就行,完美运行的写法是:

bash -i -c "./daemon.sh & ./another_daemon.sh &"

补充说明下原理

当你用bash -c执行多条命令时,只要用&把每个后台命令分开,bash就会依次将它们放到后台运行。&的作用就是告诉bash:“这个命令放后台跑,我继续执行下一个”,所以完全不需要额外的;来分隔。

进阶小技巧:让后台进程更稳定

如果希望这些后台进程在bash会话关闭后还能继续运行(避免挂掉),可以搭配nohup和输出重定向,比如:

bash -i -c "nohup ./daemon.sh > /dev/null 2>&1 & nohup ./another_daemon.sh > /dev/null 2>&1 &"

这里的> /dev/null 2>&1是把标准输出和错误输出都丢到空设备,防止生成一堆nohup.out文件占空间。

要是你觉得命令太长可读性差,也可以用大括号把命令组起来(复杂场景下更清晰):

bash -i -c "{ ./daemon.sh & ./another_daemon.sh & }"

内容的提问来源于stack exchange,提问作者Yury Bondarau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:38:28