当前位置: 技术问答>linux和unix
求个脚本:ubuntu下脚本定时检测某个进程是否存在,不存在就启动
来源: 互联网 发布时间:2016-11-18
本文导语: 如题,我写了一个,不能运行,对脚本不了解 我就想实现定时的(比如每隔2分钟)去检查下我的程序还在不在 不在了就启动 目的是为了防止程序运行过程中退出了 | 一句话就搞定 pgrep programme || /etc/i...
如题,我写了一个,不能运行,对脚本不了解
我就想实现定时的(比如每隔2分钟)去检查下我的程序还在不在
不在了就启动
目的是为了防止程序运行过程中退出了
我就想实现定时的(比如每隔2分钟)去检查下我的程序还在不在
不在了就启动
目的是为了防止程序运行过程中退出了
|
一句话就搞定
pgrep programme || /etc/init.d/xxxx start
pgrep programme || /etc/init.d/xxxx start
|
2>&1 表示将标准错误重定向到标准输出,也就是两者成一块了
|
参考主席的
ps -ef|grep -v grep|grep "/root/bin/test" || /root/bin/test
ps -ef|grep -v grep|grep "/root/bin/test" || /root/bin/test
|
脚本time.sh:
#!/bin/bash
exec=/usr/bin/helloworld #this is your exe file
pid=`ps -ef | grep $exec | grep -v "grep" | awk -F {'print $2'}`
if [[ $pid == "" ]]
then
$exec
fi
运行crontab -e后在最后加入:
0/2 * * * * /...路径.../time.sh
然后保存退出
#!/bin/bash
exec=/usr/bin/helloworld #this is your exe file
pid=`ps -ef | grep $exec | grep -v "grep" | awk -F {'print $2'}`
if [[ $pid == "" ]]
then
$exec
fi
运行crontab -e后在最后加入:
0/2 * * * * /...路径.../time.sh
然后保存退出
|
脚本time.sh:
#!/bin/bash
exec=/usr/bin/helloworld #this is your exe file
pid=`ps -ef | grep $exec | grep -v "grep" | awk -F {'print $2'}`
if [[ $pid == "" ]]
then
$exec
fi
运行crontab -e后在最后加入:
0/2 * * * * /...路径.../time.sh
然后保存退出
#!/bin/bash
exec=/usr/bin/helloworld #this is your exe file
pid=`ps -ef | grep $exec | grep -v "grep" | awk -F {'print $2'}`
if [[ $pid == "" ]]
then
$exec
fi
运行crontab -e后在最后加入:
0/2 * * * * /...路径.../time.sh
然后保存退出
|
不要把脚本名写成和你程序一样的名字
比如你的程序名字叫xxxxxx
比如你的程序这样启动/etc/init.d/yyyyyyy start
比如你的脚本是/path/zzzzzz.sh
脚本内容如下2句
#!/bin/sh
pgrep xxxxxx || /etc/init.d/yyyyyyy start
添加每2分钟执行 修改/etc/crontab 追加
*/2 * * * * root /path/yyyyyyy.sh >/dev/null 2>&1
甚至你可以直接把上面脚本那句命令写到crontab里
比如你的程序名字叫xxxxxx
比如你的程序这样启动/etc/init.d/yyyyyyy start
比如你的脚本是/path/zzzzzz.sh
脚本内容如下2句
#!/bin/sh
pgrep xxxxxx || /etc/init.d/yyyyyyy start
添加每2分钟执行 修改/etc/crontab 追加
*/2 * * * * root /path/yyyyyyy.sh >/dev/null 2>&1
甚至你可以直接把上面脚本那句命令写到crontab里
|
上面写错了
不要把脚本名写成和你程序一样的名字
比如你的程序名字叫xxxxxx
比如你的程序这样启动/etc/init.d/yyyyyyy start
比如你的脚本是/path/zzzzzz.sh
脚本内容如下2句
#!/bin/sh
pgrep xxxxxx || /etc/init.d/yyyyyyy start
添加每2分钟执行 修改/etc/crontab 追加
*/2 * * * * root /path/zzzzzz.sh >/dev/null 2>&1
甚至你可以直接把上面脚本那句命令写到crontab里
不要把脚本名写成和你程序一样的名字
比如你的程序名字叫xxxxxx
比如你的程序这样启动/etc/init.d/yyyyyyy start
比如你的脚本是/path/zzzzzz.sh
脚本内容如下2句
#!/bin/sh
pgrep xxxxxx || /etc/init.d/yyyyyyy start
添加每2分钟执行 修改/etc/crontab 追加
*/2 * * * * root /path/zzzzzz.sh >/dev/null 2>&1
甚至你可以直接把上面脚本那句命令写到crontab里
|
这个就可以了
脚本里和cron计划任务记得写绝对路径,不然会不执行的
|
经常遇到ps -ef | grep processname时,会把grep自身的进程也grep出来。
以前一直继续grep一下:
ps -ef | grep processname | grep -v "grep"
后来看到一个简单的方法:
比如要grep helloworld这个进程,可以这样做:
ps -ef | grep [h]elloworld
对于变量:
procname=myprocess
ps -ef | grep [${procname:0:1}]${procname:1}
和大家分享~
以前一直继续grep一下:
ps -ef | grep processname | grep -v "grep"
后来看到一个简单的方法:
比如要grep helloworld这个进程,可以这样做:
ps -ef | grep [h]elloworld
对于变量:
procname=myprocess
ps -ef | grep [${procname:0:1}]${procname:1}
和大家分享~