gpt4 book ai didi

java - 使用脚本启动 nohup java 命令并获取进程 ID RHEL

转载 作者:太空宇宙 更新时间:2023-11-04 13:00:03 25 4
gpt4 key购买 nike

我正在尝试使用脚本来启动 nohup 命令。我用 Java 编写了一个测试程序,通过脚本 TestScript.java 启动。我的脚本包含以下内容:

#!/bin/bash
cd /home/user/ejava
nohup java TestScript > TestScript.out &
echo $! > /home/user/ejava/TestScript.pid

我用 echo $!获取最后一个进程 ID 并将其存储到临时文件中。当我查看 TestScript.pid 时,该值为 37458。

当我运行'ps -elf | grep TestScript',我得到:

0 S user    37458     1  0  80   0 -  1065 rt_sig 11:51 pts/0    00:00:00 /bin/ksh /folder/tools/Linux_x86_64/bin/java TestScript
0 S user 37463 37458 0 80 0 - 8813549 futex_ 11:51 pts/0 00:00:00 /folder/tools/Linux_x86_64/bin/../java/jre_Linux_x86_64/bin/java TestScript
0 S user 37516 36224 0 80 0 - 1595 - 11:52 pts/0 00:00:00 grep TestScript

如果我终止作业 37458,则 37463 仍在运行并且我的 nohup 输出仍在更新。工作没有被杀死。

如何获取返回的进程 ID 37463(或与其中包含 futex 的命令相关的任何内容),以便我可以将其存储在文件中,然后使用它通过另一个脚本终止进程?我宁愿不必搜索进程 ID,而是让某个进程返回它。

最佳答案

如果您在后台使用命令末尾的“&”字符启动您的进程,那么 shell 变量 !填充了您要查找的 pid:

john@ubuntu:~$ nohup java -cp . Tst > tst.out 2>&1 &
[1] 6901
john@ubuntu:~$ echo $!
6901
john@ubuntu:~$ ps -ef | grep java
john 6901 4844 0 09:27 pts/12 00:00:00 java -cp . Tst
john 6913 4844 0 09:27 pts/12 00:00:00 grep --color=auto java
john@ubuntu:~$

我找到了 here .

关于java - 使用脚本启动 nohup java 命令并获取进程 ID RHEL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34295319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com