我正在尝试以编程方式执行并杀死一个进程。
command... | at 8:00
TASK_PID=$!
kill $TASK_PID | at 5:00
我应该可以在早上8点开始命令,下午5点停止命令,对吧?
如果这段代码是正确的,我想添加3个条件,检查文件的最后几行,并在条件被验证的情况下杀死进程。我知道我应该使用命令tail
,然后检查返回的字符串是否包含我要查找的字符串。
大致应该是这样的:
STR = tail -f $FILE
if [[ $STR == *"Condition1"* ]]; then
kill $TASK_PID
fi
if [[ $STR == *"Condition2"* ]]; then
kill $TASK_PID
fi
if [[ $STR == *"Condition3"* ]]; then
kill $TASK_PID
fi
有人能帮帮我吗
1条答案
按热度按时间hmae6n7t1#
而不是
kill $TASK_PID | at 5:00
,你应该把kill命令保留在上面的cleanup.sh
脚本中,它们嵌套在你的条件中。当然,您需要存储
command
的PID以便稍后杀死它。一些带有可选参数...
的command
在上午8点运行的示例语法是command ... & echo $! > pidfile | at 8:00
。这会将PID通过管道传输到名为pidfile
的文件中。然后运行
./cleanup.sh pathToFile pathToPIDFile | at 17:00
(24小时格式或指定AM/PM)。因此,假设它们都位于同一目录中,则启动
cleanup.sh
以在下午5点检查某个testfile
文件的命令将是./cleanup.sh testfile pidfile | at 17:00
下面是
cleanup.sh
的代码:对于其他人,请注意双
[[
括号条件不符合POSIX,这些条件可能必须重写才能与不同的(非bash)shell一起工作。