在 CentOS(以及一般的 Linux shell,如 bash) 中,反引号(`)本身不能让命令后台运行。
反引号用于 命令替换,例如:
today=`date`
echo $today
等价于:
today=$(date)
它只是 先执行命令,再把输出结果替换进去,并不会影响命令是否在前台或后台运行。
要让命令在后台运行,应使用:
&nohupsetsidscreen / tmux例如:
long_task.sh &
或:
nohup long_task.sh > log.txt 2>&1 &
下面这种写法:
result=`sleep 10 &`
❌ 不会达到“后台运行并把结果赋值”的预期效果
& 是在子 shell 中后台运行如果你只是想 后台运行命令,并稍后获取结果:
sleep 10 > result.txt &
pid=$!
wait $pid
result=$(cat result.txt)
✅ 反引号:命令替换,不是后台运行
✅ 后台运行:必须显式使用 & 或 nohup 等
❌ 反引号 ≠ 后台执行
如果你有具体使用场景(比如脚本、定时任务、服务启动),我可以帮你写更合适的写法。