ssh $i "ps -ef | grep file-flume-kafka | grep -v grep | awk '{print \$2}' | xargs kill"
ps参数:
-e:显示所有进程
-f:全格式显示
ps -ef 第二个参数就是进程ID
grep file-flume-kafka | grep -v grep,file-flume-kafka为脚本名,并去除包含grep的行,避免影响最终结果正确性
grep aaa | grep -v bbb:可以过滤掉查询aaa结果中包含了bbb的行。
grep -v 可以理解为 grep not
举例:cat test.log | grep "login"|grep -v "deviceType"表示找出test.log中包含login关键字,且没有deviceType这个字段的行
awk ‘{print $2}’:逐行的读入,以空格为默认分隔符将每行切片,取第二行。
awk参数 -F : 指定输入文件折分隔符。
比如awk -F : ‘/^root/{print $7}’ passwd 表示搜索passwd文件以root关键字开头的所有行,并输出该行的第7列。
xargs kill:将前面的运行结果作为kill命令的参数运行。
xargs表示取出前面命令运行的结果,作为后面命令的输入参数。
xargs可选项:-n1,将每一个参数传给后面命令依次执行。
特别注意:
ssh $i 是登录到你执行脚本的那台虚拟机上,i代表虚拟机名字,非本机登录需要设置免密。当在本机上进行此操作时,无需执行这个命令。另外后面$2前的转义\也必须省略,无需转义。命令如下:
ps -ef | grep file-flume-kafka | grep -v grep | awk '{print $2}' | xargs kill
具体例子如下:
假设这个是我正在运行的脚本,我想kill它,但是我不知道他的进程号,只知道脚本的名称。

我的脚本名称为dws-dwt.sh,根据过滤条件我查找出脚本有两个进程号,为什么会这样呢?
因为你查找进程时用到了grep命令,而这个命令执行的时候带有你查找的进程参数,同时这也是一个进程。
例如 这条命令 ps -ef | grep dws-dwt.sh 其实是分两步执行的 先执行ps -ef 再执行 grep dws-dwt.sh 这个命令本身执行的时候也是一个进程,并把也带有dws-dwt.sh。
所以你要查找dws-dwt.sh进程,需要把 grep dws-dwt.sh这个进程过滤掉,才是最后的结果,怎么过滤呢,肯定不能用dws-dwt.sh做关键字,只能用grep做关键字
执行结果有两个进程号:
ps -ef | grep dws-dwt.sh
最终结果,得到进程号:
ps -ef | grep dws-dwt.sh | grep -v grep | awk '{print $2}' | xargs kill
Linux系统Shell中提交了一个脚本,但是需要停止这个进程,如何处理?方式1killall file-flume-kafka说明:killall是一个命令,不是kill all,file-flume-kafka是脚本名,此方法简单粗暴。方式二ssh $i "ps -ef | grep file-flume-kafka | grep -v grep | awk '{print \$2}' | xargs kill"ps参数:-e:显示所有进程-f:全格式显示ps -ef 第二个参数
Ctrl+s :挂起当前shell(保护作用很明显哦)
4、解冻shell
Ctrl+q :解冻挂起的shell再不行就重新连接打开一个终端,reboot linux 或 kill 相关进程。
在shell中, C
port=9200
#一、根据端口号查询对应的pid,两种都行
pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');
#pid=$(ps -ef | grep 你的进程或端口 | grep -v grep | awk '{...
思路:首先根据参数判断对服务进行的操作,判断服务是否已经被启动,如果服务已经启动再执行启动操作时就不需要再次拉起服务,执行停止和重启操作时也需要检查服务是否启动,如果没有启动不需要进行停止。
具体的shell语法这里就不说了,将用到的都在注释进行了说明,这只是为了我拉起服务方便写的可能不是特别完整规范,仅供参考。大家有好的也可以评论或者私信我,我会整理到这里。
#!/bin/bash
#获取输入的第一个参数
cmd=$1
#没有输入参数时提醒内容 $#参数的个数
if [ $# -eq 0 ]; then
希望通过shell脚本去灵活地启动,关闭,重启jar包程序,且可以查看当前程序运行状态。这样可以提高运维效率,便于管理。
如执行如下命令,启动java程序:
sh /home/zzworld/software_rel/softexe/javaweb_bin/start_java_test-web-all.sh start
shell脚本代码
#!/bin/bash
#description: 启动重启server服务
#获取时间: yyyy-mm-dd
day_id=$(date '+%Y-%
### 回答1:
adb shell脚本是一种在Android设备上执行命令的脚本语言。它可以通过adb命令将脚本文件上传到设备上,并在设备上执行脚本中的命令。使用adb shell脚本可以自动化执行一系列操作,例如安装应用程序、启动应用程序、截屏、录制屏幕等。同时,adb shell脚本也可以用于调试和测试Android应用程序。
### 回答2:
adb shell脚本是一种可以在安卓设备上运行的脚本语言,它基于adb(Android Debug Bridge,Android调试桥)工具,通过adb命令在安卓设备上运行自动化脚本。
adb shell脚本的优势在于可以通过在电脑上编写脚本,可以快速准确地完成手动操作,例如自动化测试、数据分析、批处理等。此外,通过adb shell脚本还可以轻松地访问安卓设备的各种功能,例如文件操作、进程管理、网络配置等。
通过adb shell脚本,可以使用adb命令来实现自动化操作,例如:
1. 安装和卸载应用程序;
2. 启动和停止服务;
3. 清空应用程序数据;
4. 模拟按键和手势操作等。
在编写adb shell脚本时,需要使用shell语言的基础知识,例如变量、循环、条件语句等。另外,还需要了解adb命令的常用语法及其参数。
总的来说,adb shell脚本是一种强大的工具,可以在安卓设备上实现各种自动化操作。当需要快速执行一系列命令或实现一些复杂的任务时,adb shell脚本是一种效率高、准确度高的选择。
### 回答3:
adb shell是Android Debug Bridge(Android调试桥)的一部分。它是一个命令行工具,可让您通过adb连接到Android设备或模拟器的shell中。您可以使用adb shell脚本来与设备进行交互,执行命令或操作,以便进行测试、调试和开发。
使用adb shell脚本,您可以运行Android操作系统提供的大量命令。例如,您可以使用命令adb shell pm list packages列出设备上安装的所有包和应用名称。通过此命令,您可以快速找到您需要测试的应用程序或包名称,并进行测试。同样,您还可以使用adb shell input命令模拟用户输入,测试您应用程序是否正确响应。
另一个常见的应用场景涉及到开发人员需要在Android设备上执行自动化测试脚本。adb shell可以帮助您实现此目的。例如,如果您想要执行多个测试用例,可以编写adb shell脚本以执行测试用例,并将结果保存在txt文件中。这样,您就可以快速检查测试运行是否成功,是否有任何错误等。
最后,adb shell脚本还可以用于在设备上安装、卸载应用程序或启动Activity。这对于测试和调试应用程序非常有用,在这些过程中,您需要经常进行此类操作。只需编写一个简单的脚本,一次性完成所有安装、卸载或启动操作,就可以简化您的工作流程,并快速进行启动和测试。
总之,adb shell脚本是Android开发人员、测试人员和其他技术人员的重要工具。通过使用adb shell,您可以快速查找Android设备的状态和信息,并执行各种操作,以便进行测试、调试和开发。