Ubuntu下通过.sh文件同时启动多个程序系列1

在Ubuntu系统中,可以通过创建一个.sh脚本文件来简化多程序启动流程。具体步骤包括:1)创建名为test.sh的.sh文件;2)在文件中输入切换目录及启动程序的命令,并使用&符号后台执行;3)使用chmod777命令赋予文件执行权限;4)执行./test.sh启动脚本。

说明

项目上经常遇到需要到开多个终端分别启动一个程序,这里简单介绍一个方法,通过.sh文件,同时启动多个程序

方法

1.新建.sh文件

这里新建的.sh文件名为:test.sh

2.输入内容

#!/bin/sh
cd /mytest1
./mytest1 fork &
cd /mytest2
./mytest2

3.赋予.sh文件执行权限

赋予.sh文件可执行权限,可以使用 chmod 777 test.sh

4.运行

./test.sh

<think> 我们正在讨论在Ubuntu系统的.sh脚本中运行可执行文件的方法。根据用户的问题和之前的对话,我们已经知道如何在终端中直接运行可执行文件,现在需要将这一过程放入.sh脚本中。 步骤: 1. 创建.sh脚本文件,并编辑它。 2. 在脚本中编写运行可执行文件的命令。 3. 赋予脚本执行权限。 4. 运行脚本。 注意:在脚本中运行可执行文件时,需要指定可执行文件的路径(绝对路径或相对路径),并且确保该可执行文件本身具有执行权限。 例如: 假设我们有一个可执行文件名为`my_program`,位于`/home/user/projects/`目录下。我们想在脚本中运行它。 创建脚本(例如`run_program.sh`): ```bash #!/bin/bash # 这是一个运行可执行文件的示例脚本 # 切换到可执行文件所在目录(如果必要) cd /home/user/projects/ # 运行可执行文件(使用相对路径或绝对路径) ./my_program # 或者直接使用绝对路径 # /home/user/projects/my_program ``` 赋予脚本执行权限: ```bash chmod +x run_program.sh ``` 运行脚本: ```bash ./run_program.sh ``` 如果可执行文件需要参数,也可以在脚本中添加。例如: ```bash #!/bin/bash /home/user/projects/my_program arg1 arg2 ``` 另外,如果可执行文件需要特定的环境变量,可以在脚本中设置。例如: ```bash #!/bin/bash export LD_LIBRARY_PATH=/path/to/libs:$LD_LIBRARY_PATH ./my_program ``` 关于脚本开头(shebang)的解释: - `#!/bin/bash` 表示使用bash来执行此脚本。 - 也可以使用其他解释器,如`#!/bin/sh`(使用sh,它是bash的简化版)[^2]。 在脚本中运行可执行文件时,可能会遇到和直接在终端中运行相同的问题(如权限问题、依赖库缺失等),解决方法也相同(赋予权限、安装依赖库等)。 另外,用户提到过如果可执行文件是32位的,而系统是64位,则需要安装32位兼容库[^3]: ```bash sudo dpkg --add-architecture i386 sudo apt update sudo apt install libc6:i386 ``` 如果脚本需要以root权限运行(例如需要访问系统文件),可以在脚本中使用sudo,但要注意这样会需要输入密码(如果不想每次输入密码,可以配置sudoers文件,但需谨慎)。另一种方法是以root用户身份运行整个脚本(使用sudo运行脚本)。 在脚本中也可以使用条件判断、循环等结构,根据程序运行结果做相应处理。 参考引用: [^1]:创建.sh文件并赋予执行权限。 [^2]:运行.sh文件的几种方式,以及对shebang的解释。 [^3]:32位程序在64位系统上运行需要安装兼容库。 因此,总结在.sh脚本中运行可执行文件的方法: 1. 编写脚本,包含运行可执行文件的命令(注意路径)。 2. 赋予脚本执行权限。 3. 确保可执行文件本身有执行权限。 4. 处理可能的依赖(如32位库)。 5. 运行脚本。 相关问题: 1. 如何在.sh脚本中捕获可执行程序的输出? 2. 如何让.sh脚本在后台运行可执行程序? 3. 如何在.sh脚本中处理可执行程序的错误退出? </think> ### 在Ubuntu系统的.sh脚本中运行可执行文件的方法 在Ubuntu系统中,通过.sh脚本运行可执行文件是自动化任务的核心操作。以下是完整流程和关键要点: --- #### 1. **创建并编辑.sh脚本文件** - 使用文本编辑器创建脚本文件: ```bash sudo nano /path/to/your_script.sh # 推荐路径示例:~/scripts/run_app.sh ``` - **脚本基本结构**: ```bash #!/bin/bash # Shebang行:指定Bash解释器[^2] cd /path/to/app # 切换到可执行文件目录(可选) ./your_executable # 运行可执行文件(相对路径) # /absolute/path/to/your_executable # 或使用绝对路径 ``` --- #### 2. **确保可执行文件的权限** - 脚本和可执行文件均需赋予执行权限: ```bash chmod +x /path/to/your_executable # 授权可执行文件 chmod +x /path/to/your_script.sh # 授权脚本文件 ``` - 验证权限: ```bash ls -l /path/to/your_executable # 应显示类似 -rwxr-xr-x ``` --- #### 3. **运行脚本的三种方式** | **方式** | **命令示例** | **特点** | |------------------|----------------------------------|----------------------------------| | 直接执行 | `./your_script.sh` | 需在脚本目录且已授权[^1] | | 指定解释器 | `bash your_script.sh` | 无需执行权限[^2] | | 环境变量法 | `source your_script.sh` | 脚本在当前位置执行,共享环境变量 | --- #### 4. **处理常见问题** - **依赖库缺失**: 在脚本中添加环境变量: ```bash #!/bin/bash export LD_LIBRARY_PATH=/custom/libs:$LD_LIBRARY_PATH ./your_executable ``` - **32位程序兼容**: 脚本开头添加架构检查: ```bash #!/bin/bash file ./your_executable | grep -q "32-bit" && sudo apt install -y libc6:i386 ./your_executable ``` - **后台运行**: 使用`&`让程序在后台执行: ```bash #!/bin/bash ./long_running_program & # 后台运行 echo "程序已在后台启动" ``` --- #### 5. **自动化定时运行(cron服务)** - 编辑crontab任务: ```bash crontab -e ``` - 添加定时任务(每30分钟运行): ```text */30 * * * * /path/to/your_script.sh > /tmp/script.log 2>&1 ``` - 重启cron服务: ```bash sudo systemctl restart cron # 生效配置[^4] ``` --- ### 关键注意事项 1. **Shebang行必须为第一行**:如`#!/bin/bash`或`#!/usr/bin/env python` 2. **路径处理**: - 绝对路径最可靠(如`/home/user/app/bin/run`) - 相对路径需确保执行上下文正确 3. **错误处理**: ```bash #!/bin/bash if ./your_executable; then echo "✅ 执行成功" else echo "❌ 执行失败,退出码: $?" >&2 fi ``` --- ### 相关问题 1. 如何捕获.sh脚本中可执行程序的输出结果? 2. 当可执行文件需要sudo权限时,如何在脚本中安全处理密码输入? 3. 如何通过.sh脚本同时运行多个可执行文件并管理执行顺序? [^1]: Ubuntu20.04创建.sh可执行文件并授权的基本步骤 [^2]: .sh文件开头的Shebang行含义及不同解释器选择 [^3]: 在指定目录创建和编辑.sh脚本的实践方法 [^4]: cron服务的配置格式和定时任务管理技巧
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值