Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在CentOS中终止从目录运行的进程?_Java_Linux_Shell_Apache Spark_Centos - Fatal编程技术网

Java 如何在CentOS中终止从目录运行的进程?

Java 如何在CentOS中终止从目录运行的进程?,java,linux,shell,apache-spark,centos,Java,Linux,Shell,Apache Spark,Centos,我们需要从不同的文件夹中运行相同Spark应用程序(基本上是一个.jar文件)的副本。我正在寻找一个shell命令,使用它我可以杀死运行在一个文件夹中的Spark应用程序,而不杀死其他Spark作业 例: jar文件中的主要类是“CapStoneSparkMain”。假设,我只想杀死Folder2中运行的CapStoneSpark.jar,而不接触或杀死Folder1和Folder3中运行的CapStoneSpark.jar,那么我该怎么办 我已经试过: kill $(ps aux | grep

我们需要从不同的文件夹中运行相同Spark应用程序(基本上是一个.jar文件)的副本。我正在寻找一个shell命令,使用它我可以杀死运行在一个文件夹中的Spark应用程序,而不杀死其他Spark作业

例:

jar文件中的主要类是“CapStoneSparkMain”。假设,我只想杀死Folder2中运行的CapStoneSpark.jar,而不接触或杀死Folder1和Folder3中运行的CapStoneSpark.jar,那么我该怎么办

我已经试过:

kill $(ps aux | grep 'CapStoneSparkMain' | awk '{print $2}')
但是,它扼杀了所有具有“CapStoneSparkMain”类的过程

我只想终止来自单个目录的进程,不想接触从其他目录运行的进程的副本。

Hello 用于检查中的用户的for循环

for i in $(pidof application); do grep -o ${user} /proc/${i}/cmdline; done

如果
符合您的要求
kill
命令放在
${i}
循环中。

您可以找到使用这些文件夹的所有进程ID:

lsof | grep /home/user/Folder | awk '{print "kill " $2}'
并执行它:

lsof | grep /home/user/Folder | awk '{print "kill " $2}'|sh

目前尚不清楚作业是如何开始的,但假设每个作业都是以不同的工作目录开始的,则可能会终止特定的作业。假设可以通过/proc/$$/cwd(指向作业文件夹的符号链接)找到每个进程的工作目录。基于上述建议的命令/循环:

kill_folder=/home/user/Folder2
for pp in $(ps aux | grep 'CapStoneSparkMain' | awk '{print $2}') ; do
    if [[ /proc/$$/cwd -ef "$kill_folder" ]]  && kill $$
done

代码将检查symlink/proc/$$/cwd是否与命名文件夹(kill_文件夹)匹配,并且只向该文件夹中的进程发出kill命令。

lsof命令可能会帮助您识别kill的正确pid。我是shell脚本编写新手。你能告诉我怎么做吗?我想OP只是想杀死顶点进程。
kill_folder=/home/user/Folder2
for pp in $(ps aux | grep 'CapStoneSparkMain' | awk '{print $2}') ; do
    if [[ /proc/$$/cwd -ef "$kill_folder" ]]  && kill $$
done