linux系统中挂起 *** 作和强制结束 *** 作(后台运行程序方法)

linux系统中挂起 *** 作和强制结束 *** 作(后台运行程序方法),第1张

在linux系统中有这两个命令 ctrl+z 和ctrl+c ,这两个命令输入之后看起来结果差不多,实质是不同的。

他们都有中断命令的效果,但是作用是不一样的。

ctrl+c是强制终止程序的执行并结束进程。而ctrl+z则只是中断任务的执行,但该任务并没有被结束。

它只是在进程中维持挂起的状态,用户可以使用fg/bg命令来继续前台/后台执行该任务。fg命令会重启

前台被中断的任务,bg命令会把中断的任务放到后台执行。

你也可以使用bg这样的方法让一个前台执行的任务切换到后台去执行。

也可以使用fg这样的方法让一个后台执行的任务切换到前台去执行。

还有一个最常用的方法是&

在一行命令的最后输入&,可以让这行命令放到后台去运行。

使用jobs命令查看当前有多少后台程序在运行。

服务器是放10来个游戏服的,最近发现总有一个游戏服会无缘无故挂掉,程序日志和命令记录也没有找到挂掉的原因,后来在系统日志(/var/log/messages)找到报错信息:

从报错可以看到时间点是对得上的,初步判断就是abrt服务的报错导致游戏服进程挂掉。

方法1、这是因为无法创建ccpp文件导致的,因为需要修改/etc/abrt/abrt-action-save-package-data.conf中ProcessUnpackaged参数,修改如下:

方法2、关闭abrt服务器

   在linux调试程序,最痛苦的就是程序异常宕掉,但是找不到core文件,很难定位问题。但是有了core文件就容易定位多了,而abrt服务就是用作记录这个core文件的,有了core文件也需要及时删除,通过abrt-cli list查看文件的包,然后用abrt-cli rm 【文件包】就可以了。当然觉得没必要是完全可以把这个服务关掉的

abrt abrt (automatic bug report tool)服务将系统bug和SELinux收集汇报给Bugzilla以方便开发者修复。

所以,有时候对进程进行实时监控,当发现进程挂掉时,立刻重新启动进程,也是一种可以救急的方式(当然这个只是一种临时救急,并不是根本解决方法)。实现方式:使用fork()创建子进程,子进程用于执行具体功能,主进程只是用于监控子进程,当主进程检测到子进程挂掉后,可以实现立即重新启动子进程。

子进程结束,系统会向主进程发送信号:SIGCHLD,主进程可以通过捕捉该信号,从而检测子进程已经不存在,进而继续下一步 *** 作。如果需要,主进程还可以获得子进程是为何退出的。


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

原文地址: https://outofmemory.cn/yw/11109175.html

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

发表评论

登录后才能评论

评论列表(0条)

保存