Bootstrap

Ubuntu通过脚本启动多个可执行文件

Ubuntu通过脚本启动多个可执行文件

在 Ubuntu 中,可以通过一个脚本启动多个可执行文件,同时支持顺序执行、并行执行或特定条件下的执行。以下是实现的详细方法:


1. 创建脚本文件

首先,创建一个脚本文件,例如 start_programs.sh

touch start_programs.sh
chmod +x start_programs.sh
  • touch 创建脚本文件。
  • chmod +x 为脚本添加执行权限。

2. 编写脚本内容

顺序启动(一个完成后启动下一个)

在脚本中逐行启动程序:

#!/bin/bash

# 启动第一个程序
/path/to/program1

# 启动第二个程序
/path/to/program2

# 启动第三个程序
/path/to/program3

这种方式确保前一个程序运行结束后才会启动下一个。


并行启动(同时运行多个程序)

使用 & 将程序放入后台运行:

#!/bin/bash

# 启动多个程序并行运行
/path/to/program1 &
/path/to/program2 &
/path/to/program3 &

# 等待所有后台任务完成
wait

wait 命令确保脚本会等待所有程序运行完成后退出。


按条件启动

使用 ifcase 实现条件控制:

#!/bin/bash

if [ condition ]; then
    /path/to/program1
else
    /path/to/program2
fi

或者使用 case

#!/bin/bash

case $1 in
    program1)
        /path/to/program1
        ;;
    program2)
        /path/to/program2
        ;;
    *)
        echo "Usage: $0 {program1|program2}"
        ;;
esac

运行时可以通过参数控制启动的程序:

./start_programs.sh program1

带日志记录

记录输出和错误日志:

#!/bin/bash

/path/to/program1 > program1.log 2>&1 &
/path/to/program2 > program2.log 2>&1 &
wait
  • > program1.log 将标准输出重定向到日志文件。
  • 2>&1 将标准错误也重定向到同一文件。

3. 运行脚本

保存并运行脚本:

./start_programs.sh

如果需要调试或测试,可以使用 bash 明确调用:

bash start_programs.sh

高级选项

指定运行顺序并控制依赖

使用 && 来确保前一个命令成功后才运行下一个:

/path/to/program1 && /path/to/program2

通过 tmuxscreen 管理会话

如果需要启动程序后关闭终端,可以使用 tmuxscreen 管理。

示例使用 tmux

#!/bin/bash

tmux new-session -d -s mysession "/path/to/program1"
tmux new-window -t mysession "/path/to/program2"
tmux attach -t mysession

4. 常见问题

  1. 程序找不到:
    确保程序路径正确或使用相对路径运行。

  2. 权限问题:
    确保脚本和可执行文件有执行权限。

  3. 环境变量问题:
    如果程序依赖特定环境变量(如 LD_LIBRARY_PATH),可在脚本开头设置:

    export LD_LIBRARY_PATH=/path/to/libs:$LD_LIBRARY_PATH
    

按照以上步骤,您可以灵活控制多个程序的启动方式和执行逻辑。

;