我有一个简单的python脚本,我需要启动和停止,我需要使用start.sh和stop.sh脚本来执行此操作。
我有start.sh:
#!/bin/sh
script='/path/to/my/script.py'
echo 'starting $script with nohup'
nohup /usr/bin/python $script &
和stop.sh
#!/bin/sh
PID=$(ps aux | grep "/path/to/my/script.py" | awk '{print $2}')
echo "killing $PID"
kill -15 $PID
我主要关注stop.sh脚本。我 认为
这是找到pid的适当方法,但我对此并不敢多说。start.sh成功启动它。当我运行stop.sh时,我无法再通过"ps aux | grep 'myscript.py'"
控制台找到该进程,但输出如下:
killing 25052
25058
./stop.sh: 5: kill: No such process
因此似乎可以正常工作,并显示“没有这样的过程”的错误提示。
这实际上是错误吗?我是否以一种理智的方式来处理这个问题?还有其他我应该注意的事情吗?
编辑 -我实际上最终得到了这样的东西:start.sh
#!/bin/bash
ENVT=$1
COMPONENTS=$2
TARGETS=("/home/user/project/modules/script1.py" "/home/user/project/modules/script2.py")
for target in "${TARGETS[@]}"
do
PID=$(ps aux | grep -v grep | grep $target | awk '{print $2}')
echo $PID
if [[ -z "$PID" ]]
then
echo "starting $target with nohup for env't: $ENVT"
nohup python $target $ENVT $COMPONENTS &
fi
done
停止
#!/bin/bash
ENVT=$1
TARGETS=("/home/user/project/modules/script1.py" "/home/user/project/modules/script2.py")
for target in "${TARGETS[@]}"
do
pkill -f $target
echo "killing process $target"
done
这是因为ps aux |grep SOMETHING
还找到了grep SOMETHING
进程,因为SOMETHING匹配。执行完grep后,因此找不到它。
添加一行: ps aux | grep -v grep | grep YOURSCRIPT
其中-v表示排除。更多内容man grep
。
背景资料 我有一个名为的Python 3脚本,它使用内置的模块。该脚本可归结为以下内容: 根据用于请求的URI,通过动态导入模块来处理GET和POST请求。 上面的工作正常,但是,在创建脚本之后,需要能够远程更新脚本的整个“包”(即服务器脚本,加上所有“动态加载”的“模块脚本””并位于子文件夹中)。 为此,我在Python 3中编写了另一个服务器脚本(称为),当被指示时,它将检索一个zip文件,然
本文向大家介绍CentOS下redis自启动shell脚本,包括了CentOS下redis自启动shell脚本的使用技巧和注意事项,需要的朋友参考一下 用这个脚本管理之前,需要先配置下面的内核参数,否则Redis脚本在重启或停止redis时,将会报错,并且不能自动在停止服务前同步数据到磁盘上: 然后应用生效: 然后增加服务并开机自启动: 脚本源码: 注意:请将脚本中redis的启动文件、配置文件和
本文向大家介绍Shell实现的Oracle启动脚本分享,包括了Shell实现的Oracle启动脚本分享的使用技巧和注意事项,需要的朋友参考一下 Usage: sh oracled [start|stop|restart] SIDs 其中SIDs是数据库名,多个名称之间用逗号分隔。缺省的操作是 restart ,也可以指定需要进行的操作( start | stop | restart )
我正在编写一些小型shell脚本实用程序,它自动部署过程。我准备了许多与在linux中关闭jboss服务器的命令相关的链接,这样我就可以从我的实用程序中关闭服务器。 阅读一些链接,这些链接将告诉如何在JBoss7或更高版本中实现这一功能,但在旧的JBoss5.x版本中则没有。其中之一是 问候
我的jmx testplan所在的当前目录是否有属性? ubuntu 12.04上的apache jmeter 2.8
问题内容: 我正在写一个如下的shell脚本: 现在,我想要实现的是列出$ ACTIONS_DIR中的每个文件以执行该文件。$ ACTIONS_DIR下的每个文件都是另一个Shell脚本。 现在,这里的问题在于,使用exec之后,脚本将停止并且不会转到下一个文件。任何想法为什么会这样? 问题答案: 替换shell进程。如果只想将该命令作为子进程调用,则将其删除。