我们正在尝试运行一个脚本来停止 elasticsearch。
当我执行时ps aux |grep elastic
我得到:
root@baldelas01:/tmp# ps aux |grep elastic
root 3016819 0.0 0.1 8248 4164 pts/2 S 14:43 0:00 su elasticsearch
elastic+ 3016820 0.0 0.1 7460 4260 pts/2 S+ 14:43 0:00 bash
elastic+ 3016870 0.8 33.9 5562772 1369948 pts/2 Sl 14:43 0:37 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.io.tmpdir=/tmp/elasticsearch-3054796781310172182 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:logs/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m -Des.path.home=/opt/elasticsearch-6.6.1 -Des.path.conf=/opt/elasticsearch-6.6.1/config -Des.distribution.flavor=default -Des.distribution.type=tar -cp /opt/elasticsearch-6.6.1/lib/* org.elasticsearch.bootstrap.Elasticsearch -d
elastic+ 3016887 0.0 0.1 121920 6900 pts/2 Sl 14:43 0:00 /opt/elasticsearch-6.6.1/modules/x-pack-ml/platform/linux-x86_64/bin/controller
root 3019325 0.0 0.0 6432 736 pts/1 R+ 15:54 0:00 grep --color=auto elastic
root@baldelas01:/tmp#
如何在脚本中获取PID:3016870并执行kill -9?
我尝试过pidof
但没有任何结果。
答案1
没有pidof
给出任何结果,因为 elastcisearch 是通过java
二进制运行的。
获取 id 的不太简单的解决方案是:
ps -aux | grep 'elastic' | grep 'java' | awk -F " " '{ print $2 }'
即:
- 打印所有进程(
ps -aux
) - 通过“elastic”关键字过滤结果(
grep 'elastic'
) - 通过“java”关键字过滤结果(
grep 'java'
) - 仅打印第二列(
awk -F " " '{ print $2 }'
)
然后,如果确实需要,您可以使用来终止特定 ID kill -9
。但是,请注意,最好使用以下建议的命令安全地关闭服务林兹温德在其中一条评论中。