Linux设置开机自动启动sh脚本(crontab)

crontab -e 

i

添加 @reboot /usr/local/mysql/start_mysql.sh >> /usr/local/mysql/reboot.log 2>&1

wq!保存即可

解释:@reboot 开机时执行

解释:/usr/local/mysql/start_mysql.sh启动脚本,

1、sh脚本里面执行的程序要注意使用全路径,或则先cd到文件存在的路径也行,不然可能会找不到文件

2、在开机自启执行sh脚本时,还可能会出现环境变量未包含sh中的命令,例如java命令。

        A、处理方案在sh的文件中,先导入环境变量:

                export JAVA_HOME=/usr/local/java/jre1.8.0_202
                export PATH=$JAVA_HOME/bin:$PATH

        B、直接使用全路径命令,例如sh中执行的是 java -jar xxx.jar 就改成/usr/local/java/jre1.8.0_202/bin/java -jar xxx.jar

解释:>> /usr/local/mysql/reboot.log 2>&1

输出执行的日志到指令位置

### 如何使用 `sh` 命令执行 Shell 脚本 要通过 `sh` 命令运行一个 Shell 脚本,可以按照以下方式操作: #### 方法一:直接使用 `sh` 命令 可以通过 `sh` 命令加上脚本路径的方式执行脚本。例如: ```bash sh /path/to/your_script.sh ``` 这种方式适用于任何可读取的 `.sh` 文件[^1]。 #### 方法二:赋予脚本执行权限并直接运行 如果脚本已经具有执行权限,可以直接运行脚本而不必显式调用 `sh`。首先确保脚本有执行权限: ```bash chmod +x /path/to/your_script.sh ``` 然后直接运行脚本: ```bash /path/to/your_script.sh ``` 需要注意的是,默认情况下 `/bin/sh` 可能是一个符号链接到其他 Shell(如 Bash),这会影响脚本的行为。当使用 `sh` 运行脚本时,Bash 会进入 POSIX 模式[^3]。这意味着某些非 POSIX 兼容的功能可能无法正常工作。 #### 示例代码 假设有一个简单的 Shell 脚本 `example.sh`,其内容如下: ```bash #!/bin/bash echo "Hello, this is a test script." ``` 以下是几种不同的执行方式及其效果说明: 1. **使用 `sh` 显式调用** ```bash sh example.sh ``` 如果 `/bin/sh` 是指向 Bash 的软链,则此命令将以 POSIX 模式运行脚本[^3]。 2. **赋予执行权限后直接运行** 首先设置执行权限: ```bash chmod +x example.sh ``` 然后直接运行脚本: ```bash ./example.sh ``` #### Java 中调用 Shell 脚本 在 Java 应用程序中也可以通过 `Runtime.exec()` 或者更现代的 `ProcessBuilder` 来调用 Shell 脚本。下面展示了一个例子,其中包含了如何利用 `sh` 命令来执行外部脚本[^4]: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class ExecuteShellScript { public static void executeOneMore(List<String> commands) { try { Process process = Runtime.getRuntime().exec("/bin/sh"); BufferedReader inputReader = new BufferedReader(new InputStreamReader(process.getInputStream())); PrintWriter outputWriter = new PrintWriter(process.getOutputStream(), true); for (String command : commands) { outputWriter.println(command); } outputWriter.println("exit"); String responseLine; while ((responseLine = inputReader.readLine()) != null) { System.out.println(responseLine); } process.waitFor(); inputReader.close(); outputWriter.close(); process.destroy(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { List<String> commands = new ArrayList<>(); commands.add("pwd"); commands.add("cd ~"); commands.add("sh ./test.sh"); // 使用 sh 命令执行脚本 executeOneMore(commands); } } ``` 以上代码片段展示了如何从 Java 程序内部发起对 Shell 脚本的调用,并且明确指定了 `sh` 命令作为解释器[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值