linux 远程杀掉进程

第一步:获取进程号

pid=$(ssh root@$remote_host "ps -ef | grep ${tomcat_name} | grep -v grep | awk  '{print $2}'"| awk '{print $2}')

第二步:杀掉进程

ssh root@$remote_host "kill -9 ${pid}"

注意:

杀掉远程进程跟杀掉本地进程不一样,杀掉本地进程只需要一句话就可以搞定了:

ps -ef | grep ${tomcat_name} | grep -v grep | awk  '{print $2}'|xargs kill -9

但是杀掉远程的进程不一样,因为过滤的结果会被整体返回,如果在远程执行这个杀掉进程的命令:

ssh root@$remote_host "ps -ef | grep ${tomcat_name} | grep -v grep | awk  '{print $2}' | xargs  kill -9"

你会得到错误的提示:

kill process java -jar tomcat-8081
kill: can't find process "root"
kill: can't find process "09:42"
kill: can't find process "?"
kill: can't find process "00:00:44"
kill: can't find process "/opt/tools/jdk1.7.0_67/bin/java"
kill: can't find process "-Djava.util.logging.config.file=/opt/tools/tomcat-8081/conf/logging.properties"
kill: can't find process "-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
kill: can't find process "-Ddisconf.env=rd"
kill: can't find process "-Ddisconf.conf_server_host=192.168.100.15:8015"
kill: can't find process "-Ddisconf.app=ync365"
kill: can't find process "-Ddisconf.version=1.0.0"
kill: can't find process "-Ddisconf.user_define_download_dir=./classes"
kill: can't find process "-Ddisconf.enable.remote.conf=true"
kill: can't find process "-Djdk.tls.ephemeralDHKeySize=2048"
kill: can't find process "-Djava.endorsed.dirs=/opt/tools/tomcat-8081/endorsed"
kill: can't find process "-classpath"
kill: can't find process "/opt/tools/tomcat-8081/bin/bootstrap.jar:/opt/tools/tomcat-8081/bin/tomcat-juli.jar"
kill: can't find process "-Dcatalina.base=/opt/tools/tomcat-8081"
kill: can't find process "-Dcatalina.home=/opt/tools/tomcat-8081"
kill: can't find process "-Djava.io.tmpdir=/opt/tools/tomcat-8081/temp"
kill: can't find process "org.apache.catalina.startup.Bootstrap"
kill: can't find process "start"

这是因为你执行的远程命令会返回如下结果:

root      7314     1  7 09:51 pts/0    00:00:17 /opt/tools/jdk1.7.0_67/bin/java -Djava.util.logging.config.file=/opt/tools/apache-tomcat-7.0.70/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=/opt/tools/apache-tomcat-7.0.70/endorsed -classpath /opt/tools/apache-tomcat-7.0.70/bin/bootstrap.jar:/opt/tools/apache-tomcat-7.0.70/bin/tomcat-juli.jar -Dcatalina.base=/opt/tools/apache-tomcat-7.0.70 -Dcatalina.home=/opt/tools/apache-tomcat-7.0.70 -Djava.io.tmpdir=/opt/tools/apache-tomcat-7.0.70/temp org.apache.catalina.startup.Bootstrap start

然后 xargs kill -9 会把上面的所有的空格隔开的进程给删除一遍,实际上他们根本不是进程,只是一个进程下面返回的描述而已,我们真正需要的进程号是第二个 7314 这个进程,因此我们需要把返回的字符串再次过滤一遍,这样就能够得到真正的进程号了。

### 回答1: 在Linux中,可以使用kill命令来杀死进程。具体操作步骤如下: 1. 打开终端窗口,输入命令ps -ef,查看当前系统中正在运行的进程,找到需要杀死进程的PID(进程ID)。 2. 输入命令kill PID,其中PID为需要杀死进程进程ID。 3. 如果需要强制杀死进程,可以使用命令kill -9 PID,其中-9表示强制杀死进程。 4. 如果需要杀死多个进程,可以使用命令kill PID1 PID2 PID3,其中PID1、PID2、PID3为需要杀死进程进程ID。 需要注意的是,杀死进程可能会导致数据丢失或系统不稳定,因此在杀死进程之前,应该先备份重要数据,并确保杀死进程不会对系统造成不良影响。 ### 回答2: 在Linux系统中,有时候会出现一些占用资源过多的进程,这时候就需要杀掉它们来释放资源。那么如何杀掉进程呢? 方式一:使用kill命令 kill命令用于向指定进程发送指定信号,从而达到杀掉进程的目的。 语法:kill [signal] PID 示例:kill -9 123(其中,-9代表强制杀掉进程,123为指定的进程号) 方式二:使用pkill命令 pkill命令用于根据进程杀掉进程。pkill命令会向所有符合条件的进程发送kill命令。 语法:pkill [options] name 示例:pkill firefox(其中,firefox为指定的进程名) 方式三:使用killall命令 killall命令也可以根据进程杀掉进程,与pkill命令不同的是,killall只杀掉与指定进程名完全匹配的进程,而pkill则杀掉所有符合条件的进程。 语法:killall [options] name 示例:killall firefox(其中,firefox为指定的进程名) 需要注意的是,杀掉一个进程可能会对系统稳定性造成影响,因此需要谨慎操作。如果不确定操作是否安全或者不知道具体要杀掉哪些进程,最好先查看进程信息,再进行操作。 ### 回答3: 在Linux系统中,进程是正在运行的程序实例。有时候,我们需要杀死一个进程,例如进程出现了故障或者需要关闭某个应用程序等等,这时就需要用到杀死进程的命令。以下是几种杀死进程的方法: 1. 用kill命令杀死进程 kill命令是在终端中用来终止一个进程的命令,可以按照进程ID(pid)或进程名来指定杀死进程。例如,我们要杀掉进程id为1234的进程,可以在终端中输入以下命令: ``` kill 1234 ``` 如果我们想强制终止进程,可以使用“-9”选项: ``` kill -9 1234 ``` 2. 使用pkill命令杀死进程 pkill命令是一个更加方便的杀死进程的命令,它可以通过进程名来查找并杀死进程。例如,我们要杀死名为firefox进程,可以使用以下命令: ``` pkill firefox ``` 3. 使用top命令杀死进程 top命令可以查看系统运行进程的情况,同时也可以杀死进程。需要先使用top命令查看进程的pid,然后再使用kill命令杀死进程。例如,在终端中输入以下命令: ``` top ``` 然后选中要杀死进程,输入“k”,再输入进程的pid即可杀死进程。 总之,以上是几种常用的杀死进程的方法,可以选择适当的方法来杀死进程。需要注意的是,如果杀死进程不当,可能会导致系统不稳定或数据丢失,因此在杀死进程之前要确保正确性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值