linux - 在后台运行 linux 可执行文件的 Bash 脚本
问题描述
我是 linux 环境的新手,试图编写一些服务,并希望通过单个 shell 脚本启动它们中的每一个,但无法这样做。
我在应用程序的子文件夹下几乎没有 linux 可执行文件。它像是:
MainApp
AppAFolder
App-A
AppBFolder
App-B
startServices.sh
我想永远运行后台子文件夹中的每个应用程序(即使在主终端关闭后)。
当我在 Linux 终端中单独尝试以下命令时,它会启动服务。
cd AppAFolder && chmod +x App-A && ./App-A &>/dev/null & disown
或者
cd AppBFolder && chmod +x App-B && ./App-B &>/dev/null & disown
但是,当我在 shell 脚本中放置相同的命令并尝试执行时,它似乎正在更改目录并且第二个服务没有运行。
#!/bin/bash
echo "Starting ServiceA. Currect dir is : $PWD"
ACmd="cd AppAFolder && chmod +x App-A && ./App-A &>/dev/null & disown"
$ACmd
echo "Starting ServiceB. Currect dir is : $PWD"
BCmd="cd AppBFolder && chmod +x App-B && ./App-B &>/dev/null & disown"
$BCmd
我收到错误“./startServices.sh: line 12: cd: AppBFolder: No such file or directory”。
我想在后台在新终端中生成每个服务并与主进程分离,以便它可以永远运行直到停止。
请让我知道我在这里缺少什么。
谢谢,普加
解决方案
手册页disown
说您可以将nohup
其用于相同目的。我建议这样做,因为它更具体地说明了哪个命令受到影响。您可以cd
通过将命令分组在“子shell”下使命令仅影响某些命令。将所有这些放在一起产生:
#!/bin/bash
echo "Starting ServiceA. Currect dir is : $PWD"
(cd AppAFolder && chmod +x App-A && nohup ./App-A &>/dev/null &)
echo "Starting ServiceB. Currect dir is : $PWD"
(cd AppBFolder && chmod +x App-B && nohup ./App-B &>/dev/null &)
推荐阅读
- java - tomcat 错误 404 - 源服务器没有找到目标资源的当前表示或不愿意透露存在的表示
- css - 移动 Safari,Css 动画在导航时冻结
- java - POJO + 属性文件声明的变量约束(使用 Lombok 和 Spring)
- python - python - 如何调整数据框的大小?熊猫
- angular - 将 typename 转换为输入打字稿
- .net - 隐式加载依赖 DLL
- sql - 在 UPDATE 期间从 OLD TABLE 和 FINAL TABLE 中选择值
- python - 如何在 nuke pyside 中取消字体阴影
- macos - 使用 LTO 时加载/存储的 ld 验证失败,但提供的信息不多
- java - Symphonyoss - 检索与我聊天的用户列表