LINUX如何实现进程杀死后重新启动

LINUX如何实现进程杀死后重新启动,第1张

HOHO相当有难度的问题。

首先,我想知道的是如何叫意外杀死,一切没有执行完的都算是意外杀死么?我看用shell解决是比较合适的。大致流程如下:

首先我希望你有1234的源代码,因为我不知道你所谓的意外杀死是什么情况下意外杀死,比如通过kill来发送信号杀死他。请注意,如果你程序执行出现异常也是通过信号来杀死,不过是内核发送的,而不是你自己来发送的。所以我希望你修改1234的源代码,在他正常结束的情况下,你最好有个输出标志标识他正常结束。比如你的程序是C写的,那么希望你在正常结束后调用一个printf("success end")这个应该不难。

紧接着,你写一个shell脚本,这个脚本应该是这样

绝对路径/1234 >绝对路径/my.txt,以后想启动这个进程就用这个脚本来启动。

在希望你写一个脚本,这个脚本执行ps -le首先查看进程里面是否还存在1234这个进程,如果有就什么都不做退出,如果没有了,那你就检查my.txt文件看是否是正常结束了,如果正常结束就从cron守护进程的配置文件移除我这个检测脚本。如果没有找到 success end的话,那么就再次启动。

最后将这个脚本加到cron守护进程的配置文件中,定时启动它检测。

有点麻烦,不过这是我能想到的办法了,也许其它人有更好的办法。

好疯狂,有人杀 init 进程……

印象里 init 进程是不管任何杀死消息的,他是自己维护自己的。

pid = 1 的程序是没有父进程的,他是由 kernel 直接启动的,也不可能有守护进程来守护它……

她就是整个系统……

一般来说,进程不能自己重启,尤其是杀掉而不是退出方式停止运行。

所以必须有守护进程。

记得 init 组件里面的命令就有专门用来启动被守护服务进程的程序。

具体是哪个忘了……好像是 start-stop-daemon ?

不过好像是他们的守护进程是 init 进程本身,而不是单独的进程。

linux重启进程的方法步骤:

1、首先使用ps -ef查找进程的执行语句并保留它;这个的目的是保留进程执行的参数不变;

例如,重启单个mongodb的过程:

查找:

1

ps -ef|grep mongod

获得:

1

root 2928 2903 0 14:51 pts/0 00:00:00 grep /usr/local/mongodb/bin/mongod --config /etc/mongodb.cnf

2、使用kill -9 PID杀掉该进程;

1

kill -9 2928

3、使用保留的进程语句重启进程;

执行:

1

/usr/local/mongodb/bin/mongod --config /etc/mongodb.cnf

即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8972725.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存