bash脚本 exec
时间: 2023-07-12 10:25:35 浏览: 51
`exec` 是一个 Bash 内置命令,用于执行一个命令或将当前 shell 替换成另一个程序。
`exec` 命令的一般形式为:
```bash
exec command [arguments]
```
其中,`command` 表示要执行的命令或程序的名称,`arguments` 表示传递给命令或程序的参数。
当使用 `exec` 命令时,它会首先关闭 shell 中所有已经打开的文件描述符(除了文件描述符 0、1、2),然后将当前进程的程序替换成 `command`,并且 `command` 的输入和输出会继承当前 shell 的输入和输出。这意味着一旦 `exec` 命令执行成功,当前 shell 就会被替换成另一个程序,而不是在一个子 shell 中执行。因此,`exec` 命令通常用于在脚本中启动其他程序。
例如,以下命令将当前 shell 替换为 `ls` 程序,并将 `ls` 的输出输出到屏幕上:
```bash
exec ls
```
另外,如果 `exec` 命令后面没有跟任何命令或程序名称,那么它会关闭当前 shell。例如:
```bash
exec
```
这条命令会关闭当前 shell,直接退出当前脚本。
相关问题
shell脚本 exec
在 Shell 脚本中,`exec` 命令是用于替换当前进程(Shell 进程)的命令,使得当前进程被新命令所取代。这个新命令可以是另一个 Shell 脚本或者一个二进制可执行文件,取代当前进程后会继续执行新命令,不会再返回原来的 Shell 脚本。
`exec` 命令的语法如下:
```bash
exec [-cl] [-a name] [command [arguments]]
```
其中,`-c` 表示使用新的命令替换当前进程;`-l` 表示清除环境变量;`-a` 表示设置新命令的 `argv[0]` 参数,即新命令的名称;`command` 和 `arguments` 表示新命令及其参数。
下面是一个使用 `exec` 命令的例子,它将当前进程(Shell 进程)替换成 `/bin/ls` 命令:
```bash
#!/bin/bash
exec /bin/ls
echo "这行代码不会被执行"
```
在这个例子中,当执行脚本时,`exec` 命令会将当前进程(Shell 进程)替换成 `/bin/ls` 命令,然后执行 `/bin/ls` 命令,因此后面的 `echo` 命令不会被执行。
bash脚本链接到jmx
要在 Bash 脚本中链接到 JMX,您可以使用以下步骤:
1. 使用 Java 命令启动您的 Java 应用程序,并启用 JMX。这可以通过设置系统属性来完成,例如:
```
java -Dcom.sun.management.jmxremote.port=9999 \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
YourApp
```
在上面的示例中,我们启用了 JMX,并将 JMX 端口设置为 9999,禁用了 SSL 和身份验证。
2. 使用 JMX 客户端库连接到应用程序。您可以使用 JMX 客户端库,例如 jmxterm 或 jmxsh,或使用编程语言中的 JMX API 连接到您的应用程序。例如,在 Bash 脚本中,您可以使用 JMXShell:
```
#!/bin/bash
# connect to JMX
jmxsh -l service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi
```
在上面的示例中,我们使用 jmxsh 连接到 JMX 端口 9999。
3. 执行 JMX 操作。一旦您连接到应用程序,您就可以执行 JMX 操作,例如查看 MBean 属性或调用 MBean 操作。例如,在 Bash 脚本中,您可以使用 JMXShell 执行以下操作:
```
#!/bin/bash
# connect to JMX
jmxsh -l service:jmx:rmi:///jndi/rmi://localhost:9999/jmxrmi
# get the value of a MBean attribute
get java.lang:type=Memory HeapMemoryUsage
# invoke a MBean operation
exec java.lang:type=Memory gc
```
在上面的示例中,我们获取了名为 HeapMemoryUsage 的 MBean 属性的值,并调用了名为 gc 的 MBean 操作。
请注意,您需要确保您的应用程序启用了 JMX,并且您的脚本具有足够的权限来连接到 JMX 端口和执行操作。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![sh](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)