我有10来个任务需要运行,每个任务的命令都是如 myprog 相应argument 的模式,但是系统最多同时运行4个任务,希望用一个bash shell脚本,控制最多同时有四个任务运行,一但有一个结束,马上有新的补上。 这个有什么实现方法么?谢谢了。
假设我执行了一个脚本:nohup sh test.sh & test.sh内容是java command,比如/usr/bin/java .....,这样会有两个进程,一个是test.sh,另一个是java的进程.我如何才能在shell里同时杀掉这两个进程呢,现在的操作比较麻烦,ps -ef|grep test.sh查出父进程号,然后再根据父进程号查出子进程好,最后用kill -9 杀掉这两个进程.有没有办法用shell实现,不要手工执行呢?
脚本如下: echo $1 par1=$1 pid=`ps -ef |awk '$9=="$par1"'|cut -d' ' -f6,7` echo $pid kill $pid 上面的脚本有两个问题: 1:我用命令行参数带进来好象不行,如果把$par1替换成具体的进程中的内容就可以成功。 2:cut的时候如果直接用 -f2 系统区分行中的域不是以tab来分割的,所以只好强制用空格如-d' ',这样本来是-f2的变成了-f6,7 因为进程号有的是4位有的是5位,但是前面的$9却总是对的。 请高手指教!
服务进程是自己写的一个服务器端程序,如果停止运行,就把日志文件重命名。并启动服务进程。当手动直接执行脚本,可以正常启动进程,并移动日志文件。 但放到crontab里执行的话,只能移动日志文件,进程无法启动[code] PNAME='serveraa' LOGFILE=`date +%y%m%d%H%M%S` RES=`ps -ef | grep "$PNAME" | grep -v "grep" | wc -l` if [ $RES -lt 1 ] then /root/serveraa/serveraa -d mv /root/serveraa/debug.txt /root/serveraa/...
在一个shell脚本中有一个语句的执行时间不能确定,而我去希望在规定的时间内完成,如果不能完成就杀死这个进程,就是杀死那个语句的进程,不知道这种情况如何处理?
test.sh 内容: #!/bin/ksh while : do sleep 5 echo abc done 运行./test.sh 通过ps -ef|grep test.sh能查到 。。。。。/bin/ksh test.sh。。。。 通过ps -ef|grep sleep 能查到 。。。sleep 5。。。。 然后手工把第一个进程(/bin/ksh test.sh)kill -9掉,但是为什么(sleep 5)进程不会被自动结束呢?(是因为sleep是内置命令的缘故么?)