他们都有中断命令的效果,但是作用是不一样的。
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,主进程可以通过捕捉该信号,从而检测子进程已经不存在,进而继续下一步 *** 作。如果需要,主进程还可以获得子进程是为何退出的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)