linux进程操作

创建一个常驻测试脚本

touch backtest.sh

vi backtest.sh

内如如下:

#! /bin/bash
for((;;))
do
  echo "hello."
  sleep 3
done

添加可执行权限

chmod +x backtest.sh

执行脚本

./backtest.sh

会心跳式输出log

查询进程

ps -A | grep backtest.sh

输出如下

11433 ??         0:00.01 /bin/bash /Users/w/bash/backtest.sh

11437 ttys000    0:00.00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox backtest.sh

看到第一条信息是backtest.sh在运行,第二条是刚刚执行的ps命令。

过滤grep进程

ps -A | grep backtest.sh| grep -v grep

linux  杀死进程xxx

方式1: ps -ef|grep backtest.sh|grep -v grep|xargs kill -9
方式2:ps x|grep backtest.sh|grep -v grep |awk '{print $1}'|xargs kill -9
方式3: kill -9 $(ps -A|grep backtest.sh|grep -v grep)
下面将这条命令作一下简单说明:
管道符"|"用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。
"ps -A" 是linux里查看所有进程的命令。
"grep -v grep" 是在列出的进程中去除含有关键字"grep"的进程。
"xargs kill -9" 中的 xargs 命令是用来把前面命令的输出结果(PID)作为"kill -9"命令的参数,并执行该命令。"kill -9"会强行杀掉指定进程。
另外:
"cut -c 9-15" 是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。

java exec

java在exec执行带有管道符的命令时,管道符无效。

解决方法是使用-c参数,以字符串方式读取命令如下:
linux下:
String[] command = { "/bin/sh", "-c", "ps -A|grep backtest.sh|grep -v grep"};
Process p = rt.exec(command);

windows下:
String[] command = { "cmd", "/c", cmds};
Process p = rt.exec(command);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值