当前位置: 技术问答>linux和unix
在线等待!一个程序,怎样才能让其后台运行?
来源: 互联网 发布时间:2015-01-01
本文导语: 一个程序,怎样才能让其后台运行? 顺便问一下,怎样才能在一个程序启动另外一个程序? | ./yourprog & vi a.sh #!/bin/sh while true do a=`ps -e|grep yourprog|awk '{print $1}'` if [ "$a"'x' == 'x' ] then ...
一个程序,怎样才能让其后台运行?
顺便问一下,怎样才能在一个程序启动另外一个程序?
顺便问一下,怎样才能在一个程序启动另外一个程序?
|
./yourprog &
vi a.sh
#!/bin/sh
while true
do
a=`ps -e|grep yourprog|awk '{print $1}'`
if [ "$a"'x' == 'x' ] then
./yourprog &
fi
done
vi a.sh
#!/bin/sh
while true
do
a=`ps -e|grep yourprog|awk '{print $1}'`
if [ "$a"'x' == 'x' ] then
./yourprog &
fi
done
|
用一个单独的父进程,监视两个子进程。
启动并重启。更好一些吧。
启动并重启。更好一些吧。
|
我认为可以这样:
建立一个子进程,并且用exec调用要执行的那个程序,然后让父进程结束,这样,子进程就成了一个长住内存的程序,也就是守护进程,完成后台的操作,但是你需要完成进程间的一些控制!
建立一个子进程,并且用exec调用要执行的那个程序,然后让父进程结束,这样,子进程就成了一个长住内存的程序,也就是守护进程,完成后台的操作,但是你需要完成进程间的一些控制!
|
命令后面加一个 &
比如从命令行启动mysql的服务器可以:
$ mysqld&
比如从命令行启动mysql的服务器可以:
$ mysqld&
|
你需要在两个程序中加相关的扫描函数,两者监视对方,如果进程不存在,马上重新启动。
你可以在你的程序中设置一个10毫秒的周期任务,定时扫描进程。(ps -ef|grep 进程名字),如果没有重新启动。
祝你好运!
你可以在你的程序中设置一个10毫秒的周期任务,定时扫描进程。(ps -ef|grep 进程名字),如果没有重新启动。
祝你好运!
|
最简单的方法:在你的程序的后面加上&。
复杂一点的方法,做一个deamon。
复杂一点的方法,做一个deamon。
|
也可以用 bg 作业编号
用jobs 查看作业编号。
用jobs 查看作业编号。
|
还是用一个父进程监视两个子进程比较好吧。
这样实现也方便。
这样实现也方便。