首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Linux】万字解读<进程控制>:创建&中止&等待&替换

本章主要内容面向接触过Linux的老铁 主要内容含: 一.进程创建 1.fork函数 【1】fork函数与其返回值 它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。...例如:父进程等待客户端请求,生成子进程来处理请求。 一个进程要执行一个不同的程序。...)对子进程进行 资源回收 的等待过程 2.进程等待的必要性 子进程退出,父进程如果不管不顾,就可能造成 ‘僵尸进程’的问题,进而造成内存泄漏——进程一旦变成僵尸状态,那就刀枪不入,“杀人不眨眼”的 kill...父进程通过 进程等待 的方式,回收子进程资源,获取子进程退出信息 有时候进程也会 等待硬件资源 ,利用wait进程等待把自己挂起 3.如何进行等待(wait&waitpid) 【1】wait函数参数与返回值介绍...1.进程替换概念 【1】进程替换概念 我们所创建的所有的子进程,执行的代码,都是父进程代码的一部分 如果我们想让子进程 执行新的程序呢???

10810

Tomcat进程意外退出,元凶居然是他...

作者 | 宏江 出品 | 并发编程网(ifeve.com) 节前某个部门的测试环境反馈tomcat会意外退出,我们到实际环境排查后发现不是jvm crash,日志里有进程销毁的记录,从pause到destory...那就只剩下Signal的情况了;经过一番排查后,发现每次tomcat意外退出的时间与ssh会话结束的时间正好吻合。...还是比较好理解的,举例来说,我们先某个前台进程运行时间太长,可以ctrl-z中止一下,然后通过bg %n把这个进程放入后台,同样也可以把一个cmd &方式启动的后台进程,通过fg %n放回前台,然后在ctrl-c...因为默认如果采用父进程的进程组ID,父进程会把收到的键盘事件比如ctrl-c之类的SIGINT传播给进程组中的每个成员,假设后台进程也是父进程组的成员,因为作业控制的需要不能忽略SIGINT,你在终端随意...因为java后台进程从父进程catalina.sh(又是从其父进程test.sh)继承的pgid,所以java进程仍属于test.sh进程组里的成员,收到SIGHUP后退出。

4.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Tomcat 进程意外突崩,元凶居然是它...

    点击上方“码农沉思录”,选择“设为星标” 优质文章,及时送达 节前某个部门的测试环境反馈tomcat会意外退出,我们到实际环境排查后发现不是jvm crash,日志里有进程销毁的记录,从pause到destory...那就只剩下Signal的情况了;经过一番排查后,发现每次tomcat意外退出的时间与ssh会话结束的时间正好吻合。...还是比较好理解的,举例来说,我们先某个前台进程运行时间太长,可以ctrl-z中止一下,然后通过bg %n把这个进程放入后台,同样也可以把一个cmd &方式启动的后台进程,通过fg %n放回前台,然后在ctrl-c...因为默认如果采用父进程的进程组ID,父进程会把收到的键盘事件比如ctrl-c之类的SIGINT传播给进程组中的每个成员,假设后台进程也是父进程组的成员,因为作业控制的需要不能忽略SIGINT,你在终端随意...因为java后台进程从父进程catalina.sh(又是从其父进程test.sh)继承的pgid,所以java进程仍属于test.sh进程组里的成员,收到SIGHUP后退出。

    1.1K10

    服务器意外断电MySQL无法启动

    再三询问之下,客户说出一个情况:服务器因信息中心人为原因,最近总是意外断电。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』 what?服务器这么儿戏吗?这么不安全吗?...2.检查服务运行状态,发现 MySQL 容器一直处于尝试重启状态。3.检查 docker 日志,筛选 MySQL 容器报错部分。4.提示:数据库由于非正常情况关闭,正在尝试恢复,重新启动。...更多精彩文章请关注『全栈技术精选』6.在 MySQL 的配置文件中有一项配置项 【innodb_force_recovery】代表强制恢复,它的值从1-6效果不断加强。...更多精彩文章请关注公众号『Pythonnote』 3.解决 1.在配置文件/etc/mysql/my.cnf中添加如下语句 [mysqld] innodb_force_recovery = 4 innodb_force_recovery...1.重新启动 mysql 之后表都是只读状态,此时可以备份数据库2.将备份文件导入到新的数据库中更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』 4.后记 生产环境所有操作必须三思而后行

    7.2K20

    数据恢复:如何恢复Linux中意外删除的Oracle和MySQL数据库

    昨晚有朋友在微信群中求助讨论,误删除了一个MySQL的数据库,整个恢复过程和以下文章中提到的步骤完全相同,只要MySQL主进程还没有退出,从文件句柄中可以恢复文件最终挽回损失。...让我们完整的再复习一下这篇文章的步骤,一定要记住这种方法: 今天有客户的数据库意外被删除了整个目录中的数据文件,操作系统级别的删除,然而幸运的是这个数据库没有崩溃,仍然处于 open 状态的时候,客户就发现了问题...检查 dbwr 的进程 PID 4. dbwr 会打开所有数据文件的句柄。在 proc 目录中可以查到,目录名是进程 PID,fd 表示文件描述符。...恢复的原理是,在 Linux 操作系统中,如果文件从操作系统级别被rm掉,之前打开该文件的进程仍然持有相应的文件句柄,所指向的文件仍然可以读写,并且该文件的文件描述符可以从 /proc 目录中获得。

    4.1K60

    Centos运行Mysql因为内存不足进程被杀

    Kill   process (Mysqld)  我英语未过四级,但是这个简单英文还是能看懂的,大致意思时内存不够了,然后把mysql的进程给杀掉了,阿西吧!!! 尴尬了,怎么办? ...小伙伴们不能让我太尴尬啊,所以给我提了建议,说可以通过修改mysql的配置文件my.ini实现降低mysql的运行所占用内容。...半个多月 MySQL 使用是很具伸缩性的算法,因此你通常能用很少的内存运行或给MySQL更多的被存以得到更好的性能。 ...安装好mysql 后,配制文件应该在/usr/local/mysql/share/mysql 目录中,配 制文件有几个,有my-huge.cnf、my-medium.cnf、my-large.cnf、my-small.cnf...   port = 3306   socket = /tmp/mysql.sock   #socket = /var/lib/mysql/mysql.sock   # Here follows

    3.3K50

    Linux lsof 命令详解

    要成功地卸载/GTES11,应该在通知用户以确保情况正常之后,中止这些进程。 这个示例说明了应用程序的当前工作目录非常重要,因为它仍保持着文件资源,并且可以防止文件系统被卸载。...管理错误也可能导致意外删除重要的文件,比如在清理旧日志时,意外地删除了数据库的活动事务日志。这些情况有时可以通过lsof来恢复这些文件。...当系统中的某个文件被意外地删除了,只要这个时候系统中还有进程正在访问该文件,那么我们就可以通过lsof从/proc目录下恢复该文件的内容。...check_age 25298 mysql 2w REG 8,5 22049 33 /tmp/check_agent.log check_age 25298 mysql 1w REG 8,5 22049...check_age 25298 mysql 2w REG 8,5 24583 33 /tmp/check_agent.log check_age 25298 mysql 1w REG 8,5 24583

    7.6K62

    MySQL的mysqld_safe和mysqld进程有何用?

    MySQL启动会出现两个进程,mysqld_safe和mysqld,这俩进程有什么联系和区别?它们各自有什么作用?...老杨写的这篇技术文章《技术分享 | kill掉mysqld_safe进程会影响mysqld进程?》做了一些讲解。...mysqld_safe脚本方式启动mysql server进程,通常做如下事情, 1. 检查系统和选项。 2. 检查MyISAM表。 3. 保持MySQL服务器窗口。 4....--pid-file=path进程ID文件的路径。 --port=port_num用来帧听TCP/IP连接的端口号。端口号必须为1024或更大值,除非MySQL以root系统用户运行。...可以mysqld把mysql server拉起来,但生产环境不建议这么干; 2. mysqld_safe的启动和运行参数与mysqld通用,对mysqld_safe进程施加参数等同于在mysqld进程上施加参数

    85310

    mysql服务器重启, 却有2个mysqld进程 ?

    忘记这是案例几了...问题现象昨晚变更完后, 关闭mysql数据库, 然后重启OS(kylin可能有swap问题, 遇到2次了.得手动到后台强制重启OS)后, 检查发现mysqld进程有2个.说明: 本文所有截图均为测试环境截图...所以可以确定确实有2个mysqld在启动.因为是在/etc/rc.local中配置的开机自启, 所以999进程的mysqld_safe和3199进程的mysqld才是我们设计内的自启进程....那么PID:1085的进程是水启动的呢?...由于进程是mysql启动的, 所以我们只需要看root和mysql的定时任务就行,遗憾的是并没有相关的定时任务, 也没有配置服务管理, /etc/crontab也是空的....我们查看该脚本, 确实发现了启动mysql的命令(我这测试环境的比较简单, 能一眼看出来, 实际环境可能存在多层调用的情况, 最离谱的是父进程都变成1了...)问题基本上就是找到了.

    16420
    领券