- 主题:请教个linux脚本的写法
需求描述:
希望运行一个脚本,打开某个应用程序,该应用程序会在终端不停输出log;
然后监听这个应用程序的运行log输出;
当有特定log打印出来的时候,关闭该程序。
请问这个功能用一个shell脚本该如何实现啊?
脚本示例:
# 1. 启动某个应用
/xxx/xxx/xxx/xxx/ApplicationName
# 2. 监听特定消息,比如Run Success
# 不知道如何实现
# 3. 关闭该应用
ps -ef | grep ApplicationName | awk '{print $2}' | xargs kill -9
目前运行这个脚本示例,能正常启动应用程序,但会一直运行,不会调用到步骤3。
--
FROM 49.7.47.*
grep xxx | head -n1 试试,遇到一行就退出了
--
FROM 124.64.17.*
cat test.sh
#!/bin/bash
echo 1
sleep 1
echo 2
sleep 1
echo 3
sleep 1
echo 4
sleep 1
./test.sh | sed '/2/q'
参考试试。
【 在 flyacat (放·逐) 的大作中提到: 】
: 需求描述:
: 希望运行一个脚本,打开某个应用程序,该应用程序会在终端不停输出log;
: 然后监听这个应用程序的运行log输出;
: ...................
--
修改:oicu FROM 117.174.31.*
FROM 117.174.31.*
试了好像不可以
【 在 zli07 的大作中提到: 】
: grep xxx | head -n1 试试,遇到一行就退出了
--
FROM 49.7.47.*
运行你这个测试脚本,没问题,能正确退出;
放到我那个脚本里,就运行不成功,不知道什么原因。
我启动这个应用后,因为是前台启动,所以后续的echo命令都不会再输出了
【 在 oicu 的大作中提到: 】
: cat test.sh
: #!/bin/bash
: echo 1
: ...................
--
FROM 49.7.47.*
可能是你程序没有刷新缓冲区。
例如: a.py
import time
import sys
print(1)
sys.stdout.flush()
time.sleep(1)
print(2)
sys.stdout.flush()
time.sleep(1)
print(3)
sys.stdout.flush()
time.sleep(1)
【 在 flyacat (放·逐) 的大作中提到: 】
: 运行你这个测试脚本,没问题,能正确退出;
: 放到我那个脚本里,就运行不成功,不知道什么原因。
: 我启动这个应用后,因为是前台启动,所以后续的echo命令都不会再输出了
: ...................
--
FROM 114.245.108.*
如果脚本不是自己写的,也可以用 stdbuf -o 0 -e 0 foo.sh 包一下
还有另外一个原因。输出到 stderr 去了。用 |& 替换 |。
【 在 world (You are my world) 的大作中提到: 】
: 可能是你程序没有刷新缓冲区。
: 例如: a.py
: import time
: ...................
--
FROM 218.75.124.*
tailf log|awk '{if($0~/xx/){break}}'
--
FROM 219.143.199.*
xxx=`grep -c “run success” youapp.log`
if xxx = 1
【 在 flyacat 的大作中提到: 】
: 需求描述:
: 希望运行一个脚本,打开某个应用程序,该应用程序会在终端不停输出log;
: 然后监听这个应用程序的运行log输出;
: ...................
--来自微水木3.5.11
--
修改:zhangkung FROM 124.64.18.*
FROM 124.64.18.*
fail2ban
【 在 flyacat (放·逐) 的大作中提到: 】
: 需求描述:
: 希望运行一个脚本,打开某个应用程序,该应用程序会在终端不停输出log;
: 然后监听这个应用程序的运行log输出;
: ...................
--
FROM 119.139.198.*