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

【Linux 内核】进程管理 ( 进程状态 | 进程创建 | 进程终止 | 调用 exit 系统调用函数主动退出 | main 函数返回自动退出 | kill 杀死进程 | 执行异常退出 )

文章目录 一、进程状态 二、进程创建 三、进程终止 ( 调用 exit 系统调用函数主动退出 | main 函数返回自动退出 | kill 杀死进程 | 执行异常退出 ) 一、进程状态 ---- Linux...; 三、进程终止 ( 调用 exit 系统调用函数主动退出 | main 函数返回自动退出 | kill 杀死进程 | 执行异常退出 ) ---- 进程终止的方式 : 主动退出 : 主动调用 exit...() 系统调用函数 主动退出 ; 自动退出 : 程序的 main 函数返回 , 自动退出 ; 从 main() 函数返回时 , 链接程序 会 为程序 自动添加 exit() 系统调用函数 ; 杀死进程...: 接收到 kill 命令 发出的 SIGKILL 信号 , 进程被杀死 ; 异常退出 : 进程执行出现异常 , 或 收到 自己不能处理的信号 , 被迫终止 ; 前两种是 进程主动退出 , 后两种是...进程被动退出 ; exit() 系统调用 函数 , 定义在 linux-5.6.18\kernel\exit.c 源码中 , SYSCALL_DEFINE1(exit, int, error_code)

2.9K20

Shell编程中关于函数退出状态码的讨论

0 函数退出状态码的形式函数运行结束,会生成一个状态码,或者不准确的称函数的返回值。函数退出码具体有三种方式:a. 默认退出码b. 使用return关键字c. 使用变量输出1 默认退出码我们通过$?...放在运行函数的后面,即可看到函数退出码,如下:#!...紧跟着函数运行行,这样才能获取到函数运行的状态码第二、函数运行成功的退出码为0,如果未成功则为非0,因为退出码为0-255的256个可能,并且仅能显示0~255这256个数字。...第三、这里存在一个问题,函数退出码仅能说明函数内有错误,但是无法说明具体哪里出问题,如下:#!...,但是由于函数最后一行是被正确执行的,因此函数退出码依然为0。

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

    VI退出 退出VIM 适用新手

    今天看了篇文章,说10万人中就有1个人不知道怎么退出VIM,我第一次用的时候也不知道怎么退出。 一、退出方法如下: :q — 退出(这是:quit的缩写) :q! — 不保存退出(这是:quit!...的缩写) :wq — 写入文件并退出(这是:writequit的缩写) :wq!...— (如果文件只有读权限)写入并退出;(如果文件没有写权限,强制写) :x — 类似于:wq,如果文件无变动,那就不写入 :qa — 退出全部(这是:quitall的缩写) 二、如果只是使用简单的文本编辑...、退出,使用的命令4个就足够了: 1、Linux下打开vi文本编辑器 vi 文件名 2、插入(即编辑文本) i 3、强制保存并退出(首先:按ESC键,跳到命令模式) :wq!...4、不保存并强制退出(首先:按ESC键,跳到命令模式) :q!

    6.4K70

    docker 容器自动退出(退出docker容器命令)

    问题现象 centos 启动一个容器添加了-d 参数,但是docker ps 找不到容器,docker ps -a查看却已经退出了 [root@VM_0_6_centos ~]# docker run...[root@VM_0_6_centos ~]# docker logs centos 没有任何异常日志 退出原因 1、docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,...就会自行退出 2、容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出 3、这个是 docker 的机制问题 解决方案 方案1: 网上有很多介绍,就是起一个死循环进程...,让他不停的循环下去,前台永远有进程执行,那么容器就不会退出了,以centos为例 shell>docker run -d centos /bin/sh -c “while true; do echo...shell>docker ps 容器运行起来了 进入容器的方法: 使用exec,不要使用attach命令 attach命令就是使用现有终端,如果你要退出容器操作,那么bash结束,容器也就退出

    5.4K40

    父进程退出时如何确保子进程退出

    前言 子进程退出的时候,父进程能够收到子进程退出的信号,便于管理,但是有时候又需要在父进程退出的时候,子进程也退出,该怎么办呢? 父进程退出时,子进程会如何?...如何确保父进程退出的同时,子进程也退出? 既然如此,如何确保父进程退出的同时,子进程也退出呢?或许我们可以在子进程和父进程之间建立通信管道,一旦通信异常,则认为父进程退出,子进程自己也回收资源退出。...有没有已有的函数帮我们做这件事呢?prctl函数可以帮助我们。...内容很多,主要意思为:设置一个信号,当父进程退出的时候,子进程将会收到该信号。 那么根据这个,我们完全可以在父进程退出时,也给子进程一个退出的信号。...需要注意的是,该函数并非所有系统都支持。 总结 有些情况下,我们常常需要父子进程共存亡,子进程退出时,父进程可以通过wait捕捉子进程的退出状态,但是父进程退出时,子进程却难以得知。

    12.2K21

    linux vi命令 退出不保存,linux vi保存退出命令(如何退出vi)

    在末行模式下,若在用此命令退出Vi时,返回到shell;若当前编辑的文件没被修改过,输入命令 :wq Vi将先保存文件,输入命令 :w Vi保存当前编辑文件,输入命令 :x 该命令的功能同命令模式下的ZZ...命令功能相同,连按两次大写字母Z,编辑文件没有被保存,然后Vi并不退出, 在命令模式中,则Vi保存该文件后退出。...newfile 否则可选择另外的文件名来保存当前文件,若当前编辑的文件曾被修改过,但并不退出,若用户就是不想保存被修改后的文件而要强行退出Vi时, 在末行模式下,则Vi直接退出, 返回到shell,若newfile...是一个已存在的文件,然后退出Vi返回到shell, 在末行模式下,则Vi在显示窗口的最末行显示如下信息: No write since last change (use !...to overrides) 提示用户该文件被修改后没有保存,可以再给编辑文件起一个新的文件名,输入命令 :q 系统退出Vi返回到shell,继续等待用户命令。

    27.2K20

    VIM退出命令

    注意:这些命令前面都有一个冒号: 当编辑完文档,准备退出Vi返回到shell时,能够使用以下几种方法之一。...在命令模式中,连按两次大写字母Z,若当前编辑的文档曾被修改过,则Vi保存该文档后退出,返回到shell;若当前编辑的文档没被修改过,则Vi直接退出, 返回到shell。...在末行模式下,输入命令 :w Vi保存当前编辑文档,但并不退出,而是继续等待用户输入命令。在使用w命令时,能够再给编辑文档起一个新的文档名。...在末行模式下,输入命令 :q 系统退出Vi返回到shell。...to overrides) 提示用户该文档被修改后没有保存,然后Vi并不退出,继续等待用户命令。若用户就是不想保存被修改后的文档而要强行退出Vi时,可使用命令 :q!

    3K50

    Sidecar优雅退出

    Pod慢导致的,我们可以看到kube-odin task设置的调度耗时时长不合理,没有考虑到容器删除的时间,这块的修复已经通知相关同事,我们更关注的是为什么删除用了这么长时间 回头再看下Pod中配置的优雅退出时间和容器退出前的...问题出在哪里呢,经过对比代码和日志后发现 首先,此Pod包含sidecar,容器按序退出,先退出sidecar,再退出业务容器 先并行执行所有sidecar的preStop,sleep 3s 然后并行停止业务容器...,先执行preStop,sleep 3s,然后在 max(5s-3s, 2s) = 2s 内(强制)删除容器 (默认最小时间为2s,即至少给容器2s的时间用来优雅退出) 最后并行停止sidecar,先执行...其实只需要在所有容器删除之前等待一遍就够了 容器删除的时候,剩余可用时长计算有问题,例如最后的-3,当调用docker stop container的api时会把-3作为timeout传过去,而docker api收到负数时会一直等待容器退出...,而不会强制删除,这就是为什么最后的sidecar退出用了10s之久 sidecar的功能当前还是在pull request中,没有合入主干,主干中的代码虽然有sidecar的能力,但是没有区分生命周期

    48730

    Java进程异常退出

    参考链接: Java中的异常 今天,内网测试服务器A总是运行一段时间就服务器进程自行退出了,给出了“Java Result :137”这样的错误码。上网查了一下这个137,感觉没有啥有价值的东西。...拿起手机,随意搜了一下“JAVA进程无端退出”,看到了一篇博客提出一个运维神指令dmesg(ps:有时候这个真是救命的神指令)可以查到一个进程的异常信息,在故障诊断方面非常有用。...,这下舒了一口气,JVM进程退出的原因算是知道了,被系统杀掉了,难怪看不到log。       ...,从而在运行时,Java堆内存在分配的时候超过了Docker的限制,就触发了cgroup的资源管理机制,在进程组使用的内存达到限额再申请内存,就会触发OOM(out of memory),从而导致进程退出...总结:  1、在无异常log情况,应用退出,可以先考虑系统中断,dmesg查询相关信息  2、docker环境会影响应用,使用需要慎重,尤其是开发者和运维人员分离的情况下,开发者应该尽量了解到运维对系统的设置

    3.9K30
    领券