shell脚本在循环中执行到gnome-terminal -- bash -c "pkill bash"后为什么会跳出循环
时间: 2024-02-19 08:02:52 浏览: 26
可能是因为执行 `gnome-terminal` 命令时会新开一个终端窗口,旧的终端窗口会被关闭,导致循环中断。可以尝试在命令后面加上 `&` 符号,使命令在后台执行,不会阻塞当前终端窗口。例如:
```
gnome-terminal -- bash -c "pkill bash" &
```
这样循环就能够继续执行了。不过需要注意的是,由于命令在后台执行,可能会导致一些意外的结果,需要谨慎使用。
相关问题
shell脚本在循环中执行到gnome-terminal -- bash -c "pkill -o bash"后为什么会跳出循环
在shell脚本中,如果在循环中执行了`gnome-terminal -- bash -c "pkill -o bash"`命令,它会打开一个新的终端并执行`pkill -o bash`命令来杀死当前会话中最旧的bash进程。该命令执行后,当前会话中的bash进程将被杀死,导致当前的shell脚本也会被杀死,从而跳出循环。
要避免这种情况,可以使用以下两种方法:
1. 在`gnome-terminal`命令中添加`--disable-factory`选项,禁用gnome-terminal的进程共享功能。这将使`gnome-terminal`命令在当前会话中创建一个新的终端,而不是在新的进程中创建一个新的终端。这样,当`pkill -o bash`命令执行后,当前会话中的bash进程将被杀死,但当前的shell脚本将继续在该会话中运行,而不会被杀死。
例如,使用`--disable-factory`选项运行`gnome-terminal`命令:
```
gnome-terminal --disable-factory -- bash -c "pkill -o bash"
```
2. 在`gnome-terminal`命令中添加`--wait`选项,使`gnome-terminal`等待终端关闭后再退出。这将确保在执行`pkill -o bash`命令后,当前会话中的bash进程将被杀死,但当前的shell脚本将继续在该会话中运行,而不会被杀死。
例如,使用`--wait`选项运行`gnome-terminal`命令:
```
gnome-terminal --wait -- bash -c "pkill -o bash"
```
通过以上两种方法,可以确保在执行`pkill -o bash`命令后,当前会话中的bash进程将被杀死,但当前的shell脚本将继续在该会话中运行,而不会被杀死。
gnome-terminal -x bash -c
gnome-terminal -x bash -c是一个在Linux系统中使用的命令,它用于在终端中执行一段bash脚本。通过这个命令,可以在gnome-terminal中打开一个新的窗口,并在其中执行指定的bash脚本。引用给出了一个示例,通过执行bash脚本,并在执行完毕后不关闭终端窗口。引用提供了另一个示例,通过执行多条命令(多条指令顺序执行)。引用则展示了如何使用gnome-terminal命令进行ssh连接。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [bash-创建新的终端窗口](https://blog.csdn.net/weixin_34910922/article/details/120773537)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]