我们有一个要求,即从不同的文件夹运行同一个spark应用程序(基本上是一个.jar文件)的副本。我正在寻找一个shell命令,使用它我可以杀死一个文件夹中运行的spark应用程序,而不杀死其他spark作业。
前任:
/home/user/Folder1 - CapStoneSpark.jar
/home/user/Folder2 - CapStoneSpark.jar
/home/user/Folder3 - CapStoneSpark.jar
jar文件中的主类是“capstonesparkmain”。假设,我只想杀死运行在folder2中的capstonespark.jar,而不去碰或杀死运行在folder1和folder3中的capstonespark.jar,那么我该怎么办呢?
我已经试过了:
kill $(ps aux | grep 'CapStoneSparkMain' | awk '{print $2}')
但是,它扼杀了所有具有“顶点Spark”类的过程。
我只想终止源于单个目录的进程,不想触及从其他目录运行的进程的副本。
3条答案
按热度按时间gwo2fgha1#
不清楚这些作业是如何启动的,但是假设每个作业都是以不同的工作目录启动的,就有可能终止特定的作业。假设可以通过/proc/$$/cwd(指向作业文件夹的符号链接)找到每个进程的工作目录。基于上述建议的命令/循环:
代码将检查symlink/proc/$/cwd是否与指定的文件夹(kill\u folder)匹配,并且只向该文件夹中的进程发出kill。
ki1q1bka2#
您可以找到使用这些文件夹的所有进程id:
并执行:
ttisahbt3#
你好
检查中用户的for循环。。。
以及
if
它符合你的愿望then
放kill
命令开启${i}
循环中。