shell脚本中,执行nohup后,执行脚本需要手动退出,怎么解决
时间: 2024-10-27 17:09:37 浏览: 46
在Shell脚本中,如果使用`nohup`命令执行程序使其在后台持续运行并忽略输入挂断信号,通常你需要提供一个退出机制以便于在需要的时候停止脚本。一种常见的做法是在脚本内部设置循环或条件判断,例如使用`while true`或监听特定信号。
例如:
```bash
#!/bin/bash
# 设置脚本无限循环,直到接收到特定信号(如SIGINT)
while :; do
# 你的脚本代码...
sleep 60 # 每隔60秒执行一次任务
done
# 接收 SIGINT 信号(Ctrl+C)并退出脚本
trap "exit" INT
# 或者,你可以监听某个文件是否存在,当文件不存在时退出
# while [ -e /path/to/your/file ]; do ... done
```
在这个例子中,可以使用`trap 'exit' INT`捕获并响应`SIGINT`(通常是键盘中断)。如果你希望基于文件的存在与否来控制脚本,只需检查文件是否还存在,并在文件消失时退出。
如果你想在用户通过某种方式(比如另一个脚本或命令)通知时优雅地停止脚本,也可以考虑创建一个共享的通信管道或者使用消息队列系统(如Unix的Docker信号、socket连接等)。
相关问题
编写一个shell脚本,使用 nohup 运行jar包
你可以创建一个名为run.sh的shell脚本,内容如下:
```
#!/bin/bash
nohup java -jar /path/to/your.jar &
```
然后,执行以下命令以运行该脚本:
```
sh run.sh
```
这将使用nohup在后台运行your.jar,并且即使你关闭终端它也会继续运行。
shell脚本nohup
nohup 是一个 Unix/Linux 命令,可以在你退出终端或者关闭连接后继续运行命令或脚本。通常用于在后台运行长时间运行的进程或脚本。使用 nohup 命令运行脚本时,会将脚本的输出重定向到一个名为 nohup.out 的文件中。这样即使关闭了终端,脚本也会继续运行,直到执行完毕。nohup 的语法如下:
```
nohup command &
```
其中,command 表示需要后台运行的命令或脚本,& 符号表示将命令放入后台执行。
举个例子,如果你想在后台运行一个名为 myscript.sh 的脚本,并将输出保存到 nohup.out 文件中,可以使用如下命令:
```
nohup ./myscript.sh > nohup.out &
```
阅读全文